Third-party framework names (Vercel AI SDK, LangGraph, Microsoft AutoGen, Semantic Kernel,
Google ADK, and others) are trademarks of their respective owners, used here for
identification and integration guidance only. No endorsement, partnership, or affiliation is
implied.
Guides
| Guide | Stack | Integration style | When to use |
|---|---|---|---|
| Vercel AI SDK | TypeScript / Node | In-process agentTools() or scoped MCP | AI SDK generateText / streamText apps |
| OpenAI Agents SDK | TypeScript | In-process agentTools() or scoped MCP | OpenAI’s agent loop, handoffs, interruptions |
| LangGraph | TypeScript | In-process agentTools() or scoped MCP | LangChain v1 createAgent / graph workflows |
| Mastra | TypeScript | Scoped MCP (MCPClient) | Mastra agents, workflows, and tool approval |
| Cloudflare Agents | TypeScript / Workers | Scoped MCP on Durable Objects | Edge-deployed, stateful per-user agents |
| AutoGen | Python | Scoped MCP (McpWorkbench) | Multi-agent teams with MCP tool discovery |
| Google ADK | Python | Scoped MCP (McpToolset) | Gemini agents with ADK’s Runner |
| Semantic Kernel | Python / .NET / Java | Scoped MCP (MCPSsePlugin) + REST control plane | Kernel plugins and ChatCompletionAgent |
| Pydantic AI | Python | Scoped MCP (MCPServerSSE) + REST control plane | Typed agents with validated outputs |
| LlamaIndex | Python | Scoped MCP (BasicMCPClient) + REST control plane | FunctionAgent / AgentWorkflow loops |
| Claude Agent SDK | TypeScript / Python | Scoped MCP + in-process tools | Anthropic’s agent loop with subagents and hooks |
| Agno | Python | Scoped MCP (SSEClientParams) + REST control plane | High-performance Python agent teams |
| DSPy | Python | Scoped MCP (sse_client) + REST control plane | ReAct/signatures with compiled programs |
| smolagents | Python | Scoped MCP (from_mcp) + REST control plane | Code-writing and tool-calling agents |
| Letta | Python | Scoped MCP (mcp_servers) + REST control plane | Stateful, memory-native long-running agents |
| CrewAI | Python | Scoped MCP (MCPServerSSE) + REST control plane | Role-based multi-agent crews |
Two integration paths
TypeScript (in-process) — import@usenaive-sdk/server, provision users with
naive.forUser(id), adapt client.agentTools() into the framework’s native tool format, and
run the loop. Best when the agent runs in your trusted backend.
MCP session (any language) — mint a per-user session over the REST API
(or with the Node SDK), point the framework’s MCP client at the scoped SSE endpoint, and let
it discover Naive’s tools. Best for Python stacks, edge runtimes, and hosts you do not fully
trust. There is no language-specific Naive SDK for Python or .NET today — use REST for the
control plane and MCP for the data plane.
Approvals: action vs action_type
When a gated tool call returns HTTP 202, the immediate payload (and
isPendingApproval(res) in TypeScript) uses action. Approval records fetched from
approvals.list() or approvals.get() use action_type. See
Approvals for the full lifecycle.
Before you start
- Pick the guide that matches your orchestrator — the pairing pattern is the same (identity + Account Kit + tools), but the adapter code differs.
- Provision an Account Kit and a tenant user once; runtime code only mints sessions or binds
forUser(id). - TypeScript guides install
@usenaive-sdk/server; Python guides userequests/httpxagainsthttps://api.usenaive.ai/v1unless you prefer the Node SDK for provisioning scripts.