Your agent's manual, served a section at a time.
jitprompt is an MCP server for agent instructions. Upload your docs as they are; your agent keeps a small map in view and loads only the sections that matter for the turn it's on.
## Support Handbook [doc 3f9a1c20]
How to answer refund, shipping and hours questions.
- [e812d01e] Refund Policy — 30-day window
- [7b40c9aa] Shipping Policy — rates, customs
- [c0d51f3e] Support Hours — weekdays, holidays
## Product Catalog [doc 91be07d4]
SKU reference and compatibility tables.
— 34 sections; get_toc(document_id="91be07d4")
lists them
Giant system prompts don't fail on cost. They fail on attention.
Prompt caching made long system prompts cheap, not effective. A model asked to follow rule 47 of 80 follows it poorly, and the 79 rules that don't apply still pull on its behavior. jitprompt keeps a compact table of contents always visible and loads the sections that matter for the current turn, nothing else.
Three MCP tools. That's the whole surface your agent sees.
The map
One line per document: its title and a summary of what it covers. Small documents list their sections inline; large ones show a count and expand on request. The cost grows with documents, not sections.
Go straight there
When the agent knows where to look, it opens a section by its short id and reads the whole thing before acting.
Search by intent
The agent describes what it's about to do, not the user's words. jitprompt ranks sections and returns them whole, so rules arrive with their exceptions.
Guidance that follows the conversation, not the first message.
The conversation starts
The agent reads the map once. It costs a line per document, so it can keep it in view the whole time.
→ get_toc()
## Support Handbook [doc 3f9a1c20]
- [e812d01e] Refund Policy — 30-day window
- [7b40c9aa] Shipping Policy — rates, customs
A customer asks for a refund
The agent describes what it's about to do and gets the whole Refund Policy, digital-product exception included.
→ search_instructions(plan="replying to a
refund request for a 6-week-old order")
# Refund Policy [id: e812d01e]
Full refund within 30 days… store credit…
Then asks about shipping to Canada
New topic, new search. Every result ends with a reminder to search again before switching topics, so the agent doesn't keep acting on stale guidance.
→ search_instructions(plan="quoting shipping
time for an international order")
# Shipping Policy [id: 7b40c9aa]
International: 10–21 business days…
Upload as-is. jitprompt does the structuring.
Upload
Markdown or plain text, from the web app or the JSON API. Duplicate uploads are caught by content hash.
Structure
jitprompt splits the document into titled sections with short summaries, and writes the one-line summary your agent sees in the map.
Embed
Every section is indexed for meaning and for exact terms, so agents find rules by intent or by a specific code or name.
Serve
Status goes pending → structuring → embedding → ready, and the document appears in the map. No LLM in the retrieval path.
One URL, one key, one namespace.
jitprompt speaks MCP over streamable HTTP. Each API key is bound to exactly one namespace, so every agent gets least-privilege access to its own instructions. It works with Claude Code, the Anthropic API's MCP connector, agent frameworks and CI.
$ claude mcp add --transport http \
jitprompt https://app.jitprompt.com/mcp \
--header "Authorization: Bearer imcp_…"
✓ get_toc ✓ get_section ✓ search_instructions
Everything around the retrieval, too.
Search that understands intent
Meaning and exact terms combined in one ranking, so a plan finds the right rule even when it uses different words.
Always-current map
The table of contents is built live on every call. Add, rename or remove a document and the next call sees it.
Edit, compare, roll back
Fix a rule in the browser and save; it's re-ingested and you see every section exactly as agents will. On paid plans each document keeps its history: see what changed, download an old version, or restore it.
Diagnostics
Calls and latency per tool, zero-hit rate, sections that are never retrieved, near-duplicates across documents, and the last searches with their plans.
Organizations and roles
Invite teammates as owner, admin or member. Namespaces isolate each agent's instructions.
Keys you control
Mint and revoke API keys per namespace. Keys are shown once, stored hashed and rate limited.
Start free. Upgrade when your agents outgrow it.
- 1 namespace
- 3 documents per namespace
- 5 ingestions per day, per organization
- Documents up to 50,000 characters
- Current version only · no search sandbox
- 3 namespaces
- 10 documents per namespace
- 10 ingestions per day, per organization
- Document version history
- Search sandbox
- 10 namespaces
- Unlimited documents
- 100 ingestions per day, per organization
- Document version history
- Search sandbox
Questions teams ask first.
How is this different from RAG over my docs?
Three ways. Search is driven by what the agent is about to do, not by the user's message. Results are whole sections, never fragments. And the agent always sees a map of what exists, so it can go straight to a section instead of hoping a search finds it.
Do I have to restructure my docs?
No. Upload Markdown, plain text, PDF or Word files as they are. jitprompt splits them into sections, titles and summarizes each one, and you can review every section in the web app exactly as your agent will see it.
Is there an LLM call on every search?
No. A model is used once, at ingest, to structure and summarize your documents. Retrieval is a search over the index, so it stays fast and predictable.
Which agents can connect?
Any MCP client that supports streamable HTTP with a bearer key: Claude Code, the Anthropic API's MCP connector, agent frameworks and CI jobs. Connector UIs that require signing in, like Claude.ai, are on the roadmap.
What happens when I change a document?
Edit it in the browser or replace it through the API, and it's re-ingested. The table of contents is built live on every call, so agents see the new version as soon as it's ready. On paid plans the previous versions are kept, so a bad edit is one restore away.
How is my data isolated?
Every API key is bound to one namespace and can read nothing else. Keys are stored hashed and rate limited, and another organization's pages simply don't exist for you.