Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,558Letters: 14Defects: 1,336counted just now
teppi

Server definition

Hash
sha256:c1a8f7a44e443ae734512ef7ae03dd7bbd2832a9035b09900016d88dc64c8076
What it is
What a remote MCP server returned when asked what it offers: 7 tools

The blob, as servednamed by its sha256

{ "instructions": "You are connected to Cortex, this user's persistent memory. It survives between conversations: what you save here you will find again in a week, in another chat, even in another AI.\nThese instructions are the cortex-memory protocol, version 1.2-2026-09. Five rules, nothing else. The full version is at https://skynetlab-cortex.com/skill\n\nTELL THE USER, ONCE, at the start of the first conversation after the connection, in their own language and in one short line: that you are connected to Cortex, that you will save on your own what looks worth keeping, and that they can ask you to remember or to save something at any time. Say it once, not at every message, and never again in later conversations.\n\n1. LOOK BEFORE YOU ANSWER. At the start of a conversation, and before any answer that depends on who this person is or on what you did together before, call 'search'. Always. Not searching is the most common way to waste this memory: the user should not have to repeat themselves.\n\n2. SAVE BEFORE YOU ARE ASKED. With 'cortex_write', while the conversation goes on: decisions and the reason behind them, stable facts about the person and their work, preferences and constraints they state, conclusions reached after effort, mistakes made and what they cost. A good memory is one that will still be useful in a month. When the whole memory refers to one explicit date, pass it as 'event_time' (the day it happened or was measured, never today and never guessed): it helps distinguish changes over time from contradictions. Proposing costs nothing: the filter rejects duplicates by itself. Say in a few words what you saved, so the user can always answer do not keep that.\n\n3. ASK WHEN UNSURE. If something might matter but you cannot tell, ask one single question: is this worth remembering? One question, not a list.\n\n4. SURFACE DISAGREEMENTS. If what the user says contradicts something in memory, never choose in silence and never overwrite quietly. Ask whether it is a correction of something wrong or a change of direction, then use 'supersedes' on the old memory. Two memories that contradict each other are worse than one that is wrong.\n\n5. NEVER TOUCH SECRETS. Passwords, tokens, keys, card numbers and credentials never enter memory, not even if the user pastes them. And forget only on their explicit command.\n\nMARK THE ORIGIN with the 'basis' field: 'observed' when you read it from a real source, a document, a tool output, something the user told you; 'inferred' when it is your deduction or estimate. Passing off a deduction as an observation poisons the memory for everyone who reads it later, including you.\nA REFUSED WRITE IS NOT AN ERROR: it means the memory already knew. Do not retry and do not rephrase to force it through.\n\nTHE TOOLS: 'search' to find, 'fetch' with the id for the full text, and cite the url; 'cortex_recall' for a narrative synthesis; 'cortex_write' to save.\n\nAlways reply in the user's language.", "tools": [ { "description": "Use this when the user asks what contradicts what in their memory, or when a memory you just read is flagged as conflicting and the user has to decide which version holds. Returns the pairs of contradicting statements with their status. Do not use it as a list of memories: it only returns detected contradictions.", "inputSchema": { "properties": {}, "type": "object" }, "name": "cortex_conflicts", "outputSchema": null }, { "description": "Use this when the user asks to delete a specific memory, given the id returned by search. Ask the user to confirm before calling it: the deletion is permanent and cannot be undone. Do not use it to fix a memory that is merely out of date: saving the corrected version with cortex_write is what keeps the history.", "inputSchema": { "properties": { "id": { "description": "The id of the memory to delete, exactly as returned by search", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "cortex_forget", "outputSchema": null }, { "description": "Use this when the user asks about a topic as a whole (\"what do you know about X\", \"where are we with X\", \"catch me up on X\"): returns one narrative synthesis of the relevant memories, saying what holds now and what was superseded. Do not use it to look up a single fact or when you need sources to cite: search returns individual memories with their urls.", "inputSchema": { "properties": { "query": { "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "cortex_recall", "outputSchema": null }, { "description": "Use this whenever the user tells you to remember, note down, keep or save something, in any language. Use it as well when they state something they will need again later and would not want to repeat: a decision and the reason behind it, a stable fact about them or their work, a preference or a constraint, a conclusion they reached after effort, a correction of something believed before. Then say in one line what you saved, so they can tell you to drop it. The server rejects duplicates by itself: a refused write is not an error, do not rephrase it and try again. Do not save questions, brainstorming, passing remarks or anything the user has not actually stated, and never save passwords, tokens, keys, card numbers or other credentials, even if the user pastes them.", "inputSchema": { "properties": { "basis": { "description": "Origine dell'informazione: 'observed' se letta direttamente da una fonte (documento, output di uno strumento, dato reale), 'inferred' se e' una deduzione o una stima. Registrata al salvataggio e restituita al richiamo.", "enum": [ "observed", "inferred" ], "type": "string" }, "claims": { "description": "Opzionale. Fatti atomici gia strutturati, uno per decisione o affermazione: se li passi, il rilevamento dei conflitti li usa direttamente invece di estrarli dal testo. Esempio: {subject: 'Project Vega', predicate: 'adotta', object: 'Redis'}.", "items": { "properties": { "claim_text": { "type": "string" }, "confidence": { "type": "number" }, "object": { "type": "string" }, "predicate": { "type": "string" }, "subject": { "type": "string" } }, "required": [ "subject", "predicate", "object" ], "type": "object" }, "type": "array" }, "content": { "description": "Text to remember, in the user's language", "type": "string" }, "event_time": { "description": "Optional. Set only when an explicit, unambiguous ISO 8601 date (e.g. 2026-09-28 or 2026-09-28T14:00:00Z) of the event or measurement applies to the whole memory. Never infer a date and never use the save date: omit it if unknown. Save facts from different dates as separate memories.", "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "title": { "description": "Short title, in the user's language, e.g. \"Billing service: chosen database\"", "type": "string" } }, "required": [ "title", "content" ], "type": "object" }, "name": "cortex_write", "outputSchema": null }, { "description": "Use this when a previous cortex_write returned a job_id as queued and the user asks whether it was saved: returns the quality gate verdict for that job and any contradiction it opened. Do not call it for a write that already came back with a verdict.", "inputSchema": { "properties": { "job_id": { "description": "The job_id returned by a cortex_write that came back as queued", "type": "string" } }, "required": [ "job_id" ], "type": "object" }, "name": "cortex_write_status", "outputSchema": null }, { "description": "Use this when a search result looks relevant and you need its full text before answering. Takes the id returned by search, and returns the memory with its url, which you cite in your answer. Do not call it with an id from anywhere else: only search results carry valid ids.", "inputSchema": { "properties": { "id": { "description": "The id of a memory, exactly as returned by search", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "fetch", "outputSchema": { "properties": { "id": { "type": "string" }, "metadata": { "type": "object" }, "text": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "title", "text", "url" ], "type": "object" } }, { "description": "Use this when the answer depends on the user's own context: facts about them or their work, decisions they made, preferences or constraints they stated, or anything they refer back to from an earlier conversation (\"as we agreed\", \"my project\", \"the client we discussed\"). Use it as well when the user asks for something done their usual way, in their format, tone, style or stack (\"the way I normally write these\", \"my usual setup\"): their way is what the memory holds. Also use it when the user asks what you know or remember about something. Returns the matching memories with id, title and url to cite; fetch returns the full text of one. Cortex is the user's own memory layer: what is saved through it stays available in the other AI apps they connect to the same account. Do not use it for general knowledge, for questions that do not depend on this particular user, or when everything needed is already in this conversation.", "inputSchema": { "properties": { "query": { "description": "What to look for, in natural language and in the user's own words, e.g. \"which database we chose for billing\"", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search", "outputSchema": { "properties": { "results": { "items": { "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "title", "url" ], "type": "object" }, "type": "array" } }, "required": [ "results" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:c1a8f7a44e443ae734512ef7ae03dd7bbd2832a9035b09900016d88dc64c8076 | sha256sum