Build with AI

Connect Sanity Context with OpenAI Agents SDK

Connect Sanity Context to a Python agent using the OpenAI Agents SDK with built-in MCP support.

This example connects Sanity Context to a Python agent using the OpenAI Agents SDK. The SDK has built-in MCP support and discovers tools automatically.

Before you start

You need a Sanity Context MCP endpoint. If you haven't set one up yet, start with Sanity Context. You'll need:

  • MCP endpoint URL: Shown in the Sanity Context document in Studio.
  • Sanity API read token: Create one at sanity.io/manage.
  • OpenAI API key: The SDK reads it from OPENAI_API_KEY.
  • Python 3.10 or later: Required by openai-agents.

Install dependencies

Set environment variables

Create a .env file next to agent.py. load_dotenv() reads it. Replace each placeholder with your own value:

Full example

Connect to the MCP endpoint, fetch initial context, and run the agent:

How it works

Every Sanity Context integration follows three steps:

  • Fetch initial context via the /initial-context HTTP endpoint and inject it into your system prompt. This gives the agent a compressed schema overview so it can write accurate queries from the start — and saves a tool call on every conversation.
  • Connect to MCP using MCPServerStreamableHttp. The SDK discovers tools automatically when you pass mcp_servers to the agent. Use create_static_tool_filter to block the initial_context tool since you've already fetched it.
  • Create the agent and run it with Runner.run. The agent will make tool calls as it explores your content. Without a model argument, Agent uses the SDK's default model, and credentials come from OPENAI_API_KEY, so a missing key fails at this step, after the MCP connection has already succeeded.

Common errors

Three failures account for most first runs:

  • KeyError: 'SANITY_CONTEXT_MCP_URL': The .env file is missing, or isn't in the directory you run the script from. load_dotenv() returns without error when it finds no file.
  • httpx.HTTPStatusError: Client error '401 Unauthorized' raised by resp.raise_for_status(): The value in SANITY_API_READ_TOKEN isn't a valid Sanity API read token.
  • openai.OpenAIError: Missing credentials. Please pass an `api_key`, `workload_identity`, `admin_api_key`, or set the `OPENAI_API_KEY` or `OPENAI_ADMIN_KEY` environment variable.: This surfaces at Runner.run, after the MCP connection and the initial-context fetch have already succeeded.

Next steps

Was this page helpful?