The missing primitive: how AI agents talk to humans for context.
Your agents query a structured, provenance-aware graph of what humans in your org know. When the graph has a gap, Delvry harvests it from the right humans and writes the answer back. Works with Claude Code, Cursor, Cline, or any MCP-speaking agent.
Or programmatically — see below.
$ curl -X POST https://delvry.ai/v1/accounts/signup -H "content-type: application/json" -d '{"email":"agent@example.com","account_name":"My project"}' { "account_id": "...", "first_api_key": "delvry_sk_...", "password_generated": true }
#Overview
Delvry is the I/O and memory layer between AI agents and human knowledge. Agents query a structured graph of claims — typed assertions about entities (policies, people, products) with confidence, provenance, and decay. When the graph has the answer, the agent gets it back in milliseconds. When it doesn't, Delvry harvests the gap from the right humans, writes the answer back, and the next agent finds it waiting.
Three surfaces: the MCP server (the only thing your agents talk to), /app (operator dashboard — view the graph, approve harvests, audit provenance), and the harvest form humans see when an agent asks them something. Surveys were the wedge. The graph is the product.
Delivery is your call: Delvry emails each person their link by default, or pass notify:false and the API hands you the per-recipient links to route however you like — Slack, Teams, SMS, a doc. The graph and provenance work the same either way.
Built for the forward-deployed engineer, the solutions architect, the AI operator dropped into a business they don't know yet — whose real job is to get the tribal knowledge out of a dozen people's heads (clinical ops, RCM, sales, support) and into something an agent can use. Point Delvry at the domain, it asks the right people the right questions, reconciles where they disagree, and converges the whole team on one canonical source of truth — autonomously. Stop running interview marathons and pasting notes into a doc.
#What it does
delvry_querySemantic + structured search over claims. Returns confidence, decay class, provenance, and any conflicts the graph has surfaced across recipients.
delvry_ask_humansChecks the graph first. If there's a confidence gap, fires an async harvest to the right stakeholders. Returns when humans respond — agent subscribes and keeps working.
Cross-thread memory with audit trail. The marginal cost of context goes to zero as the graph saturates. Every claim knows who said it, when, and how fast it goes stale.
#Under the hood
The graph doesn't just store what people said — it reasons about how much to trust it, asks the right human next, and refuses to guess when it doesn't know. 46 MCP tools; here's the part that makes the answers worth acting on.
delvry_whyConfidence is learned, not asserted. Empirical-Bayes source reliability, corroboration, and a decay half-life fit per claim type blend into one number — and delvry_why shows the receipts.
delvry_list_proposalsIngest writes proposals, not facts. A human approves or rejects before anything lands in the graph. Agents never silently overwrite what your team believes.
delvry_queryVector search and full-text search, fused by reciprocal rank fusion. Semantic recall with keyword precision — and a relevance floor that returns "not known" instead of a confident wrong answer.
delvry_glossaryOne source-of-truth value per term, the rival definitions it beat, and a live alignment metric: how much of your domain is settled vs. still contested across the team.
delvry_next_questionsValue-of-information scheduling picks the highest-leverage gap and routes it to the cheapest reliable respondent. The graph closes its biggest uncertainties first.
delvry_queryWhen two people disagree, the graph flags it instead of picking a winner — opposing stances collapse onto a shared claim, ready for a human to resolve in the dashboard.
delvry_convergePoint it at a list of terms and the people who own them. It harvests every definition and re-asks — the moment each round is answered — until the group agrees. It settles agreement and reliability-weighted majorities itself, and pings your agent (never a dashboard operator) only for genuine ties. A canonical source of truth, built by the loop.
delvry_ingest · SSEDrop in a transcript, a doc, a Slack export — extraction runs off the request path on Cloudflare Queues, and a live event stream (Durable Objects) pushes harvest progress so agents never poll.
delvry_converge_bootstrapDropped into a business you don't know yet? Point it at a domain — or paste an ops doc — and it proposes which terms to align and who on the team to ask. You confirm; the loop harvests the tribal knowledge out of their heads into a canonical source of truth.
#Using Delvry from Claude Code
Drop a .mcp.json in your project root. Claude Code picks it up on the next session.
{ "mcpServers": { "delvry": { "url": "https://delvry.ai/mcp", "headers": { "Authorization": "Bearer $DELVRY_API_KEY" } } } }
Claude Code is building a Shopify refund integration. It needs to know what counts as fraudulent. Instead of guessing or interrupting you, it calls delvry_query("fraud criteria for refunds"). If the graph already knows, Claude Code gets back a structured claim with confidence and sources. If not, delvry_ask_humans pings the right stakeholders; the agent subscribes for an update and continues working on independent parts. Hours later, the answer comes back with provenance — and stays in the graph for next time.
#Install
One paste, any Claude. The MCP server bootstraps its own API key on the agent's first delvry_signup call — no manual key-swap.
One line. Claude Code runs the published MCP server via npx — no clone, no build.
$ claude mcp add delvry -e DELVRY_API_KEY=$DELVRY_API_KEY -- npx -y @delvry/mcp
No key yet? Drop the -e flag and the agent calls delvry_signup on first use; the key is saved to ~/.delvry/config.json.
Agents: machine-readable install at /llms.txt. Protocol: /protocol/openapi.yaml (draft OpenAPI spec). Skill bundle: /skill.md.
#Survey schema
Nine question types: short_text, long_text, single_choice, multi_choice, number, yes_no, scale, ranking, date. Plus boolean toggles, Likert scales, click-to-rank, and date inputs. Branching via show_if. Pages auto-skip when every question is hidden. Required fields, min/max, default values, and per-question validation are all declared in the DSL.
{ "version": "1", "title": "Q1 retro", "pages": [ { "questions": [ { "id": "role", "type": "single_choice", "prompt": "What's your role?", "required": true, "options": ["Eng", "Design", "PM"] } ] } ] }
#Pricing
Live machine-readable catalog: GET /v1/plans.
- 500 graph queries / month
- 25 human asks / month
- 100 graph writes / month
- 30-day retention
- 100 emails / day
- live thread receipts (in-memory)
- no persistent corpus
- all webhook events
- 1,000 emails / day
- 1,000 persisted Receipt Snapshots
- 5,000 reads / month
- 365-day retention
- list / get / export / delete
- 10k–unlimited emails / day
- 10k–100k Receipt Snapshots
- 50k–500k reads / month
- unlimited retention (scale)
- priority support
#Changelog
# shipped milestones · newest first
delvry_suggest_terms + delvry_converge_bootstrap propose a convergence campaign (terms + the right people) from a domain or an ops doc · deterministic typed-slot extraction (clean answers always land) · the glossary + VoI queue are now incrementally materialized (flat read cost at scale).
graph.convergence_needs_decision event to subscribe instead of poll.
delvry_converge_resolve) — no dashboard operator in the critical path.
delvry_converge harvests a definition per term, then re-asks the group round after round until the domain is aligned · delvry_converge_status.
delvry_glossary with one source-of-truth value per term, rival definitions, and a live alignment metric · semantic-equivalence corroboration.
delvry_why), value-of-information scheduling (delvry_next_questions), and confirm-don't-author proposals (delvry_list_proposals).
delvry_query + delvry_ask_humans · claims with decay, conflicts, and provenance.
delvry_plan_get MCP tool.
#FAQ
How is this different from MCP servers I already have?
MCP servers connect agents to systems (Stripe, Slack, your DB). Delvry connects agents to humans — the people who hold context that isn't written down anywhere. It's a different primitive: not retrieval, but harvest.
Does it work with Cursor / Cline / [other agent]?
Yes. Delvry is a Streamable HTTP MCP server. Any MCP-speaking client works. Claude Code is the canonical example because we test against it; Cursor / Cline / custom agents work identically.
What is a "claim"?
A structured assertion about an entity (refund policy, founder intent, the support team) with a confidence score (0–1), a decay class (principle / policy / process / tactical / transient), and provenance — who said it, when, with what supporting quote.
Why a graph? Why not just embeddings?
Embeddings give you similarity. Claims give you assertions with confidence and provenance. We use embeddings for retrieval inside the graph — the graph itself is the queryable layer of structured knowledge.
What's the stack?
Cloudflare Workers (edge), D1 (SQLite for entities, claims, sources), Vectorize (semantic search), Workers AI bge-base for embeddings, and Anthropic Claude Haiku for claim extraction. Hono on the routing layer.
Why not just have the agent ask in chat?
Chat is great for one person, one question, one time. Once you need an answer that persists, gets cited, decays, and is reused by the next agent — you need a graph. Delvry is that graph.
What's the recipient experience like?
Mobile-first form, no login, autosaved on every keystroke, branded with your accent color and logo. Preview an example →
How is data stored?
Cloudflare D1 (SQLite-on-the-edge) and KV in iad-1 (us-east) by default. Encrypted at rest by Cloudflare's storage layer; TLS terminated at the edge. Recipient PII is purged 90 days after survey close; claim retention is tier-dependent (see /v1/plans). Full details: /security.
#Delvry vs. alternatives
# why not just use a form builder, Slack, or roll your own?
| feature | delvry | typeform | slack DM | DIY (email + form) |
|---|---|---|---|---|
| authored by an agent (no human form-builder) | yes | no | n/a | no |
| multi-round iterative threads | yes | no | manual | no |
| structured Knowledge Receipt with provenance | yes | no | no | no |
| conflict surfacing across recipients | yes | no | no | no |
| mobile-first recipient UX | yes | yes | yes | depends |
| MCP-native tooling | yes | no | no | no |
| no login wall for recipients | yes | yes | slack login | depends |
| daily-cap email throttling per tier | yes | no | n/a | DIY |
#Get started
Built by David, solo founder. Delvry (rhymes with "deliver-y") is bootstrapped and founder-handled — email hello@delvry.ai and you'll reach the person who wrote the code.
© 2026 Delvry · privacy · terms · security · brand · protocol · llms.txt · github · made for agents, by humans