Server definition
- Hash
- sha256:3382497dde410e367659840afd0242da12fae3a6547dc83c3ff34e3d21d30ecc
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "projectstate keeps per-project memory for coding agents: decisions, attempts (what was tried and\nwhether it worked), open tasks and notes, scoped to a project slug. Typical session:\n1. project_open(project) at the start -> a short brief of status, open tasks, latest decisions and failures.\n2. plan_check(project, intent) before starting anything non-trivial -> the failed attempts, binding decisions\n and overlapping tasks that would change your plan. One call instead of guessing.\n3. recall(project, query) to look something up -> the few most relevant entries, never the whole history.\n4. remember(project, kind, title, body) whenever you decide something, try something, or finish/plan a task.\n5. update(project, id, status=...) to close tasks, mark attempts, or supersede decisions.\n6. project_status(project, set_status=...) to leave a one-line handoff note for the next session.\nEvery call is metered (prices are listed per tool in tools/list _meta.priceUsd). Writes are idempotent.",
"tools": [
{
"description": "Before you start something non-trivial, say what you are about to do and get back only what would\n change your mind: attempts that already failed at this, decisions that are still in force and constrain\n it, and open tasks that overlap. `intent` is one line in plain words, e.g. 'switch the cache to Redis'\n or 'rewrite the auth middleware to use refresh tokens'. Pass `files` if you know which paths you will\n touch; entries about those files are included even when the wording differs. Cheaper than repeating\n work that already failed once.",
"inputSchema": {
"properties": {
"files": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Files"
},
"intent": {
"title": "Intent",
"type": "string"
},
"limit": {
"default": 3,
"title": "Limit",
"type": "integer"
},
"max_chars": {
"default": 1200,
"title": "Max Chars",
"type": "integer"
},
"project": {
"title": "Project",
"type": "string"
}
},
"required": [
"project",
"intent"
],
"title": "plan_checkArguments",
"type": "object"
},
"name": "plan_check",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "plan_checkOutput",
"type": "object"
}
},
{
"description": "Open (or create) a project and get a compact brief: status line, open tasks, latest active decisions and\n failed attempts. Call this first in a session. Omit `project` to list your projects.\n `project` is a slug like 'my-app' (lowercase, digits, '-', '_' or '.').",
"inputSchema": {
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"project": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Project"
}
},
"title": "project_openArguments",
"type": "object"
},
"name": "project_open",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "project_openOutput",
"type": "object"
}
},
{
"description": "Get the project's one-line status, open tasks and last change. Pass `set_status` to overwrite the status\n line (e.g. 'v0.3 shipped; next: migrate auth to OAuth'). Cheap; use it for handoff notes between sessions.",
"inputSchema": {
"properties": {
"project": {
"title": "Project",
"type": "string"
},
"set_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Set Status"
}
},
"required": [
"project"
],
"title": "project_statusArguments",
"type": "object"
},
"name": "project_status",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "project_statusOutput",
"type": "object"
}
},
{
"description": "Search the project's memory with keywords and get the few most relevant entries (ranked, active entries\n first, superseded ones last), trimmed to `max_chars`. Use 2-5 specific keywords (e.g. 'auth token expiry').\n Filters: kind (decision|attempt|task|note), status, tags, files. Omit `query` for the most recent entries.\n Follow up with update(project, id, ...) or remember(...).",
"inputSchema": {
"properties": {
"files": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Files"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Kind"
},
"limit": {
"default": 5,
"title": "Limit",
"type": "integer"
},
"max_chars": {
"default": 1500,
"title": "Max Chars",
"type": "integer"
},
"project": {
"title": "Project",
"type": "string"
},
"query": {
"default": "",
"title": "Query",
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
}
},
"required": [
"project"
],
"title": "recallArguments",
"type": "object"
},
"name": "recall",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "recallOutput",
"type": "object"
}
},
{
"description": "Store one fact about the project. `kind` is one of: decision (what was chosen and why), attempt (something\n tried; status 'worked'|'failed'|'partial'), task (status 'open'|'done'|'dropped'), note (anything else).\n `title` is one line; put details, reasons and error messages in `body`. `files` lists related paths.\n `supersedes` marks an older decision/task as replaced by this one. Identical content is stored once, so\n retries are safe; `idempotency_key` additionally guarantees a retry is not billed twice.",
"inputSchema": {
"properties": {
"body": {
"default": "",
"title": "Body",
"type": "string"
},
"files": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Files"
},
"idempotency_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Idempotency Key"
},
"kind": {
"title": "Kind",
"type": "string"
},
"project": {
"title": "Project",
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"supersedes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Supersedes"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
},
"title": {
"title": "Title",
"type": "string"
}
},
"required": [
"project",
"kind",
"title"
],
"title": "rememberArguments",
"type": "object"
},
"name": "remember",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "rememberOutput",
"type": "object"
}
},
{
"description": "Change an existing entry by id: set `status` (task open|done|dropped, attempt worked|failed|partial,\n decision active|superseded|reverted, note active|archived), replace `title`/`body`, `append` a line to the\n body (e.g. an outcome), replace `tags`/`files`, or `delete` it.",
"inputSchema": {
"properties": {
"append": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Append"
},
"body": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Body"
},
"delete": {
"default": false,
"title": "Delete",
"type": "boolean"
},
"files": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Files"
},
"id": {
"title": "Id",
"type": "integer"
},
"project": {
"title": "Project",
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
}
},
"required": [
"project",
"id"
],
"title": "updateArguments",
"type": "object"
},
"name": "update",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "updateOutput",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:3382497dde410e367659840afd0242da12fae3a6547dc83c3ff34e3d21d30ecc | sha256sum