Framework Integrations
Curate-Me’s gateway is wire-compatible with the OpenAI and Anthropic APIs, so every major agent framework works by swapping a single base URL. We treat each of the supported frameworks as a first-class product path: each one has a maintained example, a smoke test that runs in CI against the gateway contract, and a documented set of known limitations.
Every example here is exercised by
scripts/docs/docs-example-smoke.sh
on every pull request against a mock gateway, and nightly against
staging. If a framework’s example breaks (base URL drift, header
rename, response shape change) the CI build fails.
Supported frameworks
| Framework | Language | Pattern | Example | Tests |
|---|---|---|---|---|
| LangChain | Python | base_url on ChatOpenAI | examples/integrations/langchain | 3 cases |
| LangGraph | Python | base_url on ChatOpenAI | examples/integrations/langgraph | 4 cases |
| OpenAI Agents SDK | Python | base_url on AsyncOpenAI | examples/integrations/openai-agents | 4 cases |
| Claude Agent SDK | Python | base_url on Anthropic | examples/integrations/claude-agent-sdk | 3 cases |
| Vercel AI SDK | TypeScript | baseURL on createOpenAI | examples/integrations/vercel-ai-sdk | 4 cases |
| CrewAI | Python | OPENAI_BASE_URL env var | examples/integrations/crewai | 3 cases |
| MCP | any host | @curate-me/mcp-server | examples/integrations/mcp | 4 cases |
The gateway contract every integration verifies
Each framework’s smoke test confirms the same five guarantees, so the integration story is identical regardless of which framework you start from:
- Base URL ends with
/v1/openai(or/v1/anthropic) on acurate-mehost. - Auth is set via
X-CM-API-Key: cm_sk_...(orAuthorization: Bearer cm_sk_...). - Response carries
X-CM-Request-Id— required for trace correlation in the dashboard. - Response carries
X-CM-Trace-Id— W3C-compatible trace ID propagated to upstream provider calls. - No raw provider key (
sk-...,sk-ant-...) appears in the example source — examples never embed real OpenAI / Anthropic credentials.
If any of those guarantees regress for any framework, the
framework-examples-smoke.yml
CI workflow fails the PR.
Known unsupported behaviors
Not every framework feature is supported by the gateway today. The honest list, refreshed each release:
- Vercel AI SDK tools — function-calling tool definitions work
through the gateway, but the auto-tool-execution path requires
the upstream provider to support OpenAI’s tool format. Anthropic’s
native tool format requires hitting
/v1/anthropicdirectly. - LangGraph checkpointer persistence — the checkpointer (memory saver, Postgres saver, etc.) runs on your infrastructure; the gateway only sees the per-step LLM call. We don’t yet record cross-step memory diffs.
- OpenAI Agents SDK handoffs — handoffs work as long as both the source and target agent use the gateway base URL. We don’t yet model handoffs as first-class trace edges; each agent’s LLM call shows up as a separate trace row.
- MCP streaming tools — SSE / streaming tool responses pass through unmodified, but the gateway only records per-tool-call cost; chunked cost rollup happens at the end of the stream.
Full table with version pins lives in
docs/00-platform/FRAMEWORK_INTEGRATIONS.md.
Troubleshooting
If a framework call returns a non-Curate-Me response shape, check in this order:
- Base URL —
echo $OPENAI_BASE_URL(or the equivalent SDK config). Must end with/v1/openaiand hostcurate-me. - Auth header —
curl -Iyour endpoint and confirmX-CM-API-Key(orAuthorization: Bearer cm_sk_...) is present. - Request ID — every gateway response has
X-CM-Request-Id. If it’s missing, you bypassed the gateway. Re-check step 1. - Open the trace — paste the request ID into the dashboard Traces search.
For framework-specific troubleshooting, see the per-framework page linked in the table above.