Connect a new MCP client to Sume: five calls that prove it works
After you add https://mcp.sume.com/mcp to a new client, run mcp_health, tools_list, tools_schema, account_me and catalog_list. What each result should show.

Point your client at https://mcp.sume.com/mcp, finish the OAuth sign-in (or send an API key), and then run five read-only calls in order: mcp_health, tools_list, tools_schema, account_me and catalog_list. If all five answer correctly the session is set up, and you have not spent anything. This is the setup check for a client you have not used with Sume before.
Add the server and sign in
The production URL is the only one customer configs should use. Claude Code adds it with claude mcp add --transport http. Cursor takes an mcpServers entry with a url, and Codex or any streamable-HTTP client takes the same URL in its server config. When the client starts OAuth it reads the protected-resource metadata from the MCP endpoint, then sends you to https://mcp.sume.com/oauth/authorize, which continues to the consent page on the MCP host, not on app.sume.com. If a client cannot complete the flow, the two metadata documents below are the first thing to fetch.
claude mcp add --transport http sume https://mcp.sume.com/mcp
claude mcp login sume
# Discovery documents the client reads before it sends you to consent:
curl -s https://mcp.sume.com/.well-known/oauth-protected-resource/mcp
curl -s https://mcp.sume.com/.well-known/oauth-authorization-serverThe five calls
Ask the agent to call each tool by name, or call them from your client's tool inspector. The live tool ids use underscores; dotted aliases such as tools.list are canonicalized to the underscore names.
| Order | Tool | Healthy answer | If it fails |
|---|---|---|---|
| 1 | mcp_health | Endpoint ready; under OAuth, authenticated.auth_source is mcp_oauth | Auth did not complete. Re-run the client's login for the server name. |
| 2 | tools_list | Tools with safety metadata. With Write off, only read-only tools | Empty or write tools missing is expected on mcp:read. |
| 3 | tools_schema | One tool's contract, for example generate_image | Check the exact name; use tools_list first. |
| 4 | account_me | The workspace account context | Wrong workspace means the wrong key or sign-in. |
| 5 | catalog_list | Public API capabilities, a wider list than the MCP tools | Fine if it lists something with no MCP tool, such as REST-only products. |
Read the result for the right scope
By default hosted OAuth grants mcp:read. A read-only session sees only read-only tools, and a call to a write or paid tool such as generate_image, avatars_create or jobs_cancel returns insufficient_scope. That is correct behavior, not a broken connection. To run write or paid tools, grant mcp:write on the consent page by turning the Write toggle on, or use an API-key session. There is no mcp:paid scope.
tools_list is the honest view of what this session can do. A tool that is in catalog_list but not in tools_list is not available over MCP at all, for example images_create and videos_create, which are REST-only.
Common ways the session looks broken
Most failed first connections come down to four things. The client was given a development URL instead of the production one, so use https://mcp.sume.com/mcp. The sign-in was never finished, so the server answers with an OAuth challenge instead of tools. The consent was granted without Write, so write tools are hidden and paid calls fail with insufficient_scope. Or an API key and an OAuth token were mixed up; they are different credentials and one cannot stand in for the other.
If the client supports only API keys, send Authorization: Bearer $SUME_API_KEY or x-api-key: $SUME_API_KEY as a header on the server entry, never both at once. A key session sees the full tool set, and writes and paid calls still need an idempotency_key.
Before the first paid call
Every write and paid tool needs an idempotency_key. Before the first real spend, read the tool contract with tools_schema, then call the tool with dry_run: true or call generation_admission_preview to see the estimate, the balance and the queue behavior. If you want a hard cap, add max_spend_usd; Sume enforces it only when you provide it. After a real submit, use jobs_status or jobs_wait and then jobs_result.
Do not paste an API key or an OAuth token into the chat. If a key does appear in logs or history, rotate it. Keep the first paid test small, for example a single image, so that the result you read back with jobs_result costs you cents while you confirm that the whole path works from submit to media URL.
Sources
Related posts
More in Developers
- Convert an SRT file to Sume caption cues in Python
Sume captions take no SRT upload, but cues carry the same start, end and text. A 26-line Python script turns an SRT into cues and posts them for $0.20.
- Cost per ad variant: build a ledger from usage.cost on Sume
Every completed /v1/videos poll carries usage.cost. Sum it by hook and ending to get the cost per ad variant before media spend. Node script and the caveats.
- Create an AI avatar and its first talking video in one bash script
Two Sume jobs in order: create the avatar, wait, then render a talking video with its handle. A bash script with curl and jq, plus the cost of both steps.
- CTA end card for an AI video ad: use last_frame on Sume
End an ad clip on your CTA card by sending it as a last_frame image on /v1/videos. Which models accept it, which do not, and the Timeline alternative.
Written by Sume