Browse documentation
Frameworks
Ten agent frameworks, and the two ways each of them can reach the index.
Two ways in, whichever framework you use
Through MCP. Most frameworks now have an MCP adapter, and it hands the agent all
eleven tools with their descriptions and schemas intact — including corroborate and
dossier, which have no equivalent in a generic search tool. Nothing to define.
As one tool you write. Eleven tools is a lot of schema in every request, and a tool you
define is a tool whose defaults you control. Pinning min_independent_sources and
collapse=story in your own code rather than leaving them to the model is the single
cheapest thing you can do for the quality of what reaches the context window.
Neither is more correct. Use MCP when the agent should be able to reach for the graph; write the tool when it only ever searches.
The guides
| Framework | Language | MCP adapter |
|---|---|---|
| LangChain and LangGraph | Python | Yes |
| Claude Agent SDK | Python, TypeScript | Yes |
| LlamaIndex | Python | Yes |
| Vercel AI SDK | TypeScript | Experimental |
| OpenAI Agents SDK | Python | Yes |
| Pydantic AI | Python | Yes |
| CrewAI | Python | Via tools |
| Mastra | TypeScript | Yes |
| Google ADK | Python | Via functions |
| n8n | No code | REST is simpler here |
Using Claude directly, without a framework? Tool use, directly and the remote MCP connector. Using a desktop or editor client rather than building an agent? Connect a client.
What every one of these guides gets right
The examples differ per framework, but three things recur because they are what agents get wrong:
- Surface
partial. A search response withpartial: trueis a200that means part of the corpus was unreachable. A model handed a short list with no explanation reports it as “nothing found”. Every example passes that flag through rather than the raw JSON. - Branch on
retry-after, not on429. With the header it is a rate limit and clears in a second; without it the monthly quota is hard-capped and a retry loop cannot succeed. - Set the corroboration floor in code.
min_independent_sourcesleft to the model is a suggestion it can lower. Set as a default it is a floor — while still overridable when a single-source document is exactly what you want.
Nothing to install
There is no unlob package in any language. The API is HTTP and JSON, so the client in each of these guides is a function, not a dependency. If you want the no-framework version, the SDK quickstarts have it in five languages.
Next
- MCP tools — what the eleven do
- Filters and sorting — what to pin as a default
- Graph recipes