OpenAI charges no per-call MCP fee, but Sume paid tools bill
OpenAI bills tokens for MCP tool imports and calls with no per-call fee. A Sume paid tool still spends credits, so preview and cap each call.

Using a remote MCP tool in the Responses API adds no per-call fee from OpenAI. Its guide says you pay for the tokens used when importing tool definitions or making tool calls, and no additional fees apply per tool call. A Sume paid tool is a separate charge: the generation spends credits from your Sume balance.
So a single agent turn has two meters. Tokens go on the OpenAI bill. Image, video, music and speech jobs go against the Sume wallet. Treat the second one as the risk, because a model can request many jobs quickly.
Two meters, one agent turn
| Cost | Billed by | Control |
|---|---|---|
| Importing tool definitions into context | OpenAI, as tokens | allowed_tools to shrink the list |
| The tool call itself | OpenAI, as tokens only (no per-call fee) | Approval settings |
A paid Sume job such as generate_image | Sume credits | dry_run, max_spend_usd, idempotency_key |
| Too little balance | Sume returns 402 insufficient_credits | Top up or lower the request |
Which Sume fields cap a paid call?
Paid and write calls need an idempotency_key. dry_run=true returns an admission and cost preview and does not submit the job. max_spend_usd is optional, and Sume enforces it only when you send it (tools and gates). Admission can also refuse with 429 queue_full or rate_limited; honor retry-after (generation admission).
Do not read the OpenAI sentence as 'MCP calls are free'. It describes OpenAI's fee, not the server's.
A safe default
- Always run
dry_runfirst and show the estimate to the user. - Send
max_spend_usdon every paid call. - Reuse one
idempotency_keyper intended job, so a retry cannot buy twice. - Keep paid tools behind
require_approval.
Sources
Related posts
More in Developers
- OpenAI Python 3.23 turn artifacts: hand over a Sume render
OpenAI Python SDK 3.23.0 adds file staging and turn artifact downloads for agents. Sume job webhooks give you a public media.sume.com URL to hand over.
- OpenAI Realtime GA migration: drop the OpenAI-Beta header
Beta Realtime integrations must move to GA and stop sending OpenAI-Beta: realtime=v1. A short checklist, a code scan for the header, and where Sume jobs fit.
- OpenAI TTS: 13 built-in voices vs 9 legacy ones, pick the model first
OpenAI's guide lists gpt-4o-mini-tts with 13 built-in voices and legacy tts-1 and tts-1-hd with 9. Formats, custom voice consent and disclosure, as a checklist.
- OpenTelemetry spans for MCP tools: tag the Sume request_id
Claude Code v2.1.283 adds MCP tool outputs to OpenTelemetry spans. Put the Sume request_id on the span and keep signed URLs off it.
Written by Sume