{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_2xhvzh2p89ra","handle":"drafter-mcp","url":"https://wellknown.network/agents/drafter-mcp","links":{"self":"https://wellknown.network/agents/drafter-mcp/record.json","html":"https://wellknown.network/agents/drafter-mcp","markdown":"https://wellknown.network/agents/drafter-mcp/record.md","api":"https://wellknown.network/api/v1/agents/drafter-mcp","status":"https://wellknown.network/api/v1/agents/drafter-mcp/status","claim":"https://wellknown.network/agents/drafter-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/drafter-mcp/claim.json","badge":"https://wellknown.network/agents/drafter-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air::server:drafter-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"drafter-mcp","summary":"MCP server that turns planning conversations into ordered feature plans","description":"# Planner API\n\nHTTP wrapper over the personal-stack planner. Two modes: **subscription** (the host's\n`claude` CLI thinks on a Claude subscription via `CLAUDE_CODE_OAUTH_TOKEN`, no API key)\nor **BYOK** (the caller sends `X-Anthropic-Key`). A public deployment locks every\nnon-health endpoint behind a shared secret (`X-Planner-Token`).\n\n## Endpoints\n- `GET  /health` — liveness. Always open (Railway healthcheck).\n- `POST /plan` — `{conversation, person}` → ordered, LLM-labeled, personalized plan\n  with `analytics.planId`.\n  Auth: `X-Planner-Token` if `PLANNER_ACCESS_TOKEN` is set; LLM via the subscription\n  (subscription mode) or `X-Anthropic-Key` (BYOK).\n- `POST /feedback` — `{person, plan_id, liked, comment?}` → records acceptance or\n  dislike without changing weights.\n- `POST /correct` — `{person, plan_id?, corrected_plan? | corrected_order?,\n  proposed_order?}` → tunes the layer preference immediately and banks\n  decomposition ground truth. No key (offline).\n- `POST /analytics/event` — `{person, kind, payload}` → internal redirect events\n  for `plan.delivered` and `invoker.redirect.disabled`.\n- `GET  /analytics/{person}?limit=&kind=` — reads recent unified analytics events.\n  Drop-off is `plan.delivered` with no later `feedback.*` for the same `planId`.\n- `GET  /profile/{person}` — the person's current preference graph. No key.\n\n## Run locally\n```\npip install -r service/requirements-service.txt\nuvicorn service.app:app --reload\ncurl localhost:8000/health\ncurl -X POST localhost:8000/plan -H 'X-Anthropic-Key: sk-ant-...' \\\n  -H 'content-type: application/json' \\\n  -d '{\"conversation\":\"...\",\"person\":\"edbert\"}'\n```\n\n## Deploy (Railway, subscription mode, key-free)\nThe API runs on **Railway** at `api.invoker-control.dev` from `service/Dockerfile`,\nwhich bakes in the `claude` CLI. The static landing page is a separate repo on\n**Vercel** at `invoker-control.dev` (serverless is a poor fit for `/plan` — it makes\nmany sequential LLM calls and exceeds function time limits).\n\nR…","publisher":null,"homepage":null,"repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":["mcp"],"pricing":null,"endpoints":[{"url":"pypi:drafter-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","summary":"pypi","version":"pypi","description":"pypi"}},"derived":{"capabilities":[{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":1,"provenance":"derived"},{"slug":"knowledge.reasoning","name":"Reasoning & Planning","confidence":0.791,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.745,"provenance":"derived"}],"categories":["dev","knowledge","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"drafter-mcp","registry":"pypi","observedAt":"2026-09-09T14:33:33.965Z","publishedAt":"2026-07-07T04:14:20.927153Z","latestVersion":"0.1.0"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"drafter-mcp","url":"https://pypi.org/project/drafter-mcp/","firstSeenAt":"2026-09-09T14:32:19.265Z","fetchedAt":"2026-09-09T14:32:19.265Z","normalizedAt":"2026-09-09T14:32:19.265Z"}]},"firstSeenAt":"2026-09-09T14:32:19.265Z","updatedAt":"2026-09-09T14:33:33.965Z"}