Model Context Protocol
MCP
We run 4 MCP servers, advertising 44 tools between them. Every one of them is staff-scoped and internal. This page says what they are and what they speak; it is not an invitation to connect, and there is no anonymous path to any of them.
The servers
| Server | Transport | Tools | Published |
|---|---|---|---|
| warehouse-analyst-http | streamable-http | 29 | internal |
| warehouse-staff-mcp | stdio|streamable-http | 6 | internal |
| warehouse-mcp | stdio | 7 | internal |
| obsidian-vault-mcp | stdio|streamable-http | 2 | internal |
Why no server has a page yet. Publishing a full tool catalogue for a staff-only server on a public origin is an information-disclosure decision, not a documentation one. Each server carries a publish flag in the generated index and today all 4 are internal, so the detail pages are built and reviewable but render for nobody. Flipping a flag is a decision, not a rebuild.
Protocol posture
We advertise 2025-11-25. A client that states no version negotiates down to 2025-03-26, two revisions back. Both numbers are read from the installed SDK constants rather than asserted, and neither is the package version — those are different facts and conflating them has already cost us an audit.
We are one full revision behind, and that revision is breaking. The current published spec revision is 2026-07-28; a client written against it fails against these servers outright, because it replaces the initialize handshake with server/discover and moves the version and client capabilities into params._meta. Moving to it is an SDK-major decision, not a code change, and it has not been made.
# MCP > This page is generated from the single capability vocabulary at https://kistdata.com/.well-known/grapeworks-capabilities.json — the same source `/ai-instructions` and `/docs/api` read from. If this page and that descriptor ever disagree, the descriptor is closer to the source and this page has a bug. ## Status - **Warehouse MCP server and per-client agent docs** (`built-not-exposed`, Built and merged, but not reachable by anyone outside Grapeworks. No public surface. Do not treat as callable.) One server binds to exactly one client, so there is no client identifier for an agent to spoof, exposing catalogue description, provenance and outcome tools through the single tenant guard. Per-client agent documentation is generated from that client's resolved catalogue only, so one client's docs cannot enumerate another's vocabulary. This server speaks over stdio and has NO network listener. It is not reachable over the internet, it is not callable by a third-party agent, and remote exposure is a separate gated design that is not built. Do not attempt to connect to it. ## What this means today There is no MCP endpoint on this site or on `grapeworks.ai` that a third party can connect to. The warehouse's MCP servers run for staff use only, behind authenticated access, on internal hostnames — they are not a public integration surface and are not being offered as one. Do not attempt to connect to them. The only publicly callable surface today is the REST demo API documented at https://kistdata.com/docs/api and described in full at https://kistdata.com/openapi.json. ## How to verify any of this - Machine-readable capability descriptor: https://kistdata.com/.well-known/grapeworks-capabilities.json - Instructions for an evaluating agent: https://kistdata.com/ai-instructions - Facts and statuses, with sourcing per row: https://kistdata.com/agents - The public REST surface, generated from the same OpenAPI document: https://kistdata.com/docs/api
How this page is made
The table above is generated from the live tool registry by python -m grapeworks_warehouse.mcp_docs.generate --write, alongside one OpenAPI 3.2.0 document per server. Nothing here is hand-maintained; a drift test regenerates every artefact and fails on any difference. Hand-written API docs rot, which is the whole reason the ruling specifies generation.