# Agent SDKs

The [MCP connector](https://docs.claude.com/en/docs/agents-and-tools/mcp-connector) lets Claude call PostFlow's tools
inside one Messages request:

```sh
curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: mcp-client-2025-11-20" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-5-5",
    "max_tokens": 4096,
    "mcp_servers": [{ "type": "url", "url": "https://postflow.biz.id/api/mcp", "name": "postflow", "authorization_token": "'"$POSTFLOW_API_KEY"'" }],
    "tools": [{ "type": "mcp_toolset", "mcp_server_name": "postflow" }],
    "messages": [{ "role": "user", "content": "Save a draft for every connected account: \"Open until 10 pm tonight!\"" }]
  }'
```

```python
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async with MCPServerStreamableHttp(
    name="postflow",
    params={"url": "https://postflow.biz.id/api/mcp", "headers": {"Authorization": f"Bearer {key}"}},
) as postflow:
    agent = Agent(name="Social media assistant", mcp_servers=[postflow])
    result = await Runner.run(agent, "What is scheduled for this week?")
```

Frameworks that turn an OpenAPI document into tools (LangChain, Semantic Kernel, Mastra, custom GPTs' actions) can load
`https://postflow.biz.id/api/v1/openapi.json` and send the API key as a bearer token. Every operation has an `operationId`
and an `x-scope` of `read` or `write`, so you can expose only the read ones.