MCP · read-only · provenance-backed
Reviewed engineering guidance for coding agents.
chatctx is a hosted knowledge base served over the Model Context Protocol. Agents ask an implementation question and get concise guidance that a human owner reviewed, with applicability, caveats, verification checks, and source links. Nothing is published unreviewed, and no generative model touches the retrieval path.
Endpoint:
https://chatctx-mcp.brackket.workers.dev/mcp · Streamable HTTP · stateless
Built for agents, not for clicks
This site ships the same documentation in machine-readable form. No JavaScript, no cookie banner, no layout that hides the payload. Fetch what your context window needs.
/llms.txt
The compact index: what chatctx is, where the endpoint lives, and links to everything else.
/llms-full.txt
Complete documentation in one plain-text file, sized for a single tool-call context.
/docs.md
Markdown reference for the tools, arguments, response shapes, and failure modes.
/api.json
JSON Schemas for every tool input, plus limits, error codes, and privacy guarantees.
/agent-instructions.md
Drop-in instructions describing when an agent should call chatctx and when it should not.
/mcp.json
Client configuration snippet for MCP-capable editors and agent runtimes.
Quickstart
-
Get a key. Keys look like
kb_live_…and are issued by the owner. Anonymous guest access is also enabled on the production endpoint with a daily per-IP quota, so you can try the tools with no credentials. -
Initialize the session. The endpoint is stateless; every request carries
the bearer token and its own JSON-RPC envelope.
curl -sS https://chatctx-mcp.brackket.workers.dev/mcp \ -H "Authorization: Bearer $CHATCTX_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize", "params":{"protocolVersion":"2025-06-18","capabilities":{}, "clientInfo":{"name":"my-agent","version":"1.0.0"}}}' -
Ask a real question. Send
notifications/initialized, then calltools/call.-d '{"jsonrpc":"2.0","id":2,"method":"tools/call", "params":{"name":"search_knowledge", "arguments":{"query":"React list rows keep the wrong state after reordering", "technologies":["React"],"max_results":3}}}' -
Read the guidance. Results include a recommendation, applicability,
pitfalls, verification checks, and sources. Call
get_guidancewith the returned slug when you need the full record.
Responses are SSE-framed (event: message plus a data: line) even
for single JSON-RPC replies, so parse the data line rather than the whole body.
Tools
| Tool | Purpose | Bound |
|---|---|---|
search_knowledge |
Hybrid text + vector retrieval over approved guidance. | 1–10 results, 200–5,000 token budget |
get_guidance |
Full record for one or more slugs or ids from a search. | 1–10 records per call |
submit_feedback |
Anonymous signal that guidance was helpful, wrong, stale, or missing. | 1,000-character comment |
There are no write tools for content, no repository access, and no code upload. Retrieval is read-only; feedback is the only public write.
Why the answers are trustworthy
- Owner-reviewed only. Records are approved through a review workflow with quality gates, duplicate checks, and audit history. Unreviewed candidates never reach the public endpoint.
- Provenance attached. Every result links its sources, the evidence relation, and when the record was approved and last updated.
- No generated answers. Embeddings are used only to find candidate records. The text an agent receives is authored and reviewed by a human, never synthesized at query time.
-
Honest failure. Weak matches return an explicit
no_matchwith suggestions instead of a plausible-sounding record, and degraded retrieval is flagged in the response. - Privacy by default. Queries are not logged verbatim; retrieval analytics keep a salted hash and bounded metadata. Feedback stores no key, IP, or client identifier.
Limits and behaviour
- Query
- 2–2,000 characters. Up to 10 technology filters, each 80 characters.
- Results
- 1–10 per call, default 5. Token budget 200–5,000, default 2,500.
- Retrieval mode
-
hybrid,keyword_fallback, orno_match. Degraded responses carrydegraded: trueand a reason. - Auth failures
-
401invalid or revoked key,429daily quota exhausted withRetry-After,403host or origin rejected,406missing SSEAcceptvalue. - Guest access
- Enabled on production with 250 tool calls per IP per UTC day. Anonymous requests never fall through when a bearer token is present but invalid.
Connect a client
Any MCP client that supports Streamable HTTP works. A minimal configuration:
{
"servers": {
"chatctx": {
"type": "http",
"url": "https://chatctx-mcp.brackket.workers.dev/mcp",
"headers": { "Authorization": "Bearer ${input:chatctx-key}" }
}
}
}
See docs for the full argument reference and response schema, or fetch /llms-full.txt to hand the whole contract to a model in one request.