projectstate
Per-project memory for AI agents: decisions, attempts, tasks, ranked recall. Paid per call via x402.
| Endpoint | https://projectstate.online/mcp (streamable-http) |
|---|---|
| Registry version | 0.3.0 |
| Now | 6 tools · grade A (98) · pin ts_f3a311af435a4651c57b9648d684c969 · protocol 2025-06-18 |
| First / last listed | 2026-11-01 01:25 UTC / 2026-11-01 01:25 UTC |
| Grade over time | 2026-11-01: A (98), 6 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: project_open project_status remember recall plan_check update
project_open | Open (or create) a project and get a compact brief: status line, open tasks, latest active decisions and
failed attempts. Call this first in a session. Omit `project` to list your projects.
`project` is a slug like 'my-app' (lowercase, digits, '-', '_' or '.'). params: project, name, description |
project_status | Get the project's one-line status, open tasks and last change. Pass `set_status` to overwrite the status
line (e.g. 'v0.3 shipped; next: migrate auth to OAuth'). Cheap; use it for handoff notes between sessions. params: project*, set_status |
remember | Store one fact about the project. `kind` is one of: decision (what was chosen and why), attempt (something
tried; status 'worked'|'failed'|'partial'), task (status 'open'|'done'|'dropped'), note (anything else).
`title` is one line; put details, reasons and error messages in `body`. `files` lists related paths.
`supersedes` marks an older decision/task as replaced by this o params: project*, kind*, title*, body, tags, files, status, supersedes, idempotency_key |
recall | Search the project's memory with keywords and get the few most relevant entries (ranked, active entries
first, superseded ones last), trimmed to `max_chars`. Use 2-5 specific keywords (e.g. 'auth token expiry').
Filters: kind (decision|attempt|task|note), status, tags, files. Omit `query` for the most recent entries.
Follow up with update(project, id, ...) or remember(...). params: project*, query, kind, status, tags, files, limit, max_chars |
plan_check | Before you start something non-trivial, say what you are about to do and get back only what would
change your mind: attempts that already failed at this, decisions that are still in force and constrain
it, and open tasks that overlap. `intent` is one line in plain words, e.g. 'switch the cache to Redis'
or 'rewrite the auth middleware to use refresh tokens'. Pass `files` if params: project*, intent*, files, limit, max_chars |
update | Change an existing entry by id: set `status` (task open|done|dropped, attempt worked|failed|partial,
decision active|superseded|reverted, note active|archived), replace `title`/`body`, `append` a line to the
body (e.g. an outcome), replace `tags`/`files`, or `delete` it. params: project*, id*, status, title, body, append, tags, files, delete |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.