MCP

Bring your own agent.

Tonta ships a Model Context Protocol server so a customer's own agent — Claude, ChatGPT, Cursor, or anything else that speaks MCP — can plan, price and submit real work from inside a conversation.

Who this is for

Anyone who already lives inside an agent and would rather ask for a reel than open a web app. A connected workspace works from Claude Code, Claude Desktop, ChatGPT, Cursor, VS Code, or any MCP client that supports Streamable HTTP — no code required on your side.

What this connection can never do

Not policy on a page — the server has no code path for the things below. An agent connected here is bounded structurally, not by a setting someone could forget.

Workspace comes from the token, never an argument

No tool takes a workspace id. A tool that accepted one would be one prompt injection away from cross-tenant access — so that argument simply doesn't exist on this surface.

Spending always goes through a quote

There is no tool that takes a brief and a budget. create — the tool your agent reaches for first — classifies the brief, fills in the settings and returns a single-use, five-minute quote the same way estimate_job does; submit_job requires it. Unpriced spending isn't guarded — it's unrepresentable.

No agent's claim of approval is ever accepted

There is no confirmed: true parameter, because a parameter an agent can set is a parameter an agent will set. Above your confirmation threshold, Tonta asks through MCP elicitation if your client supports it, or parks the job and hands back a web approval link if it doesn't.

Money writes and impersonation are absent from the surface

Buying credits, changing a plan, deleting a workspace or a member, reading another workspace's anything, and any staff operation are not permission-checked here — they simply aren't reachable from this server.

Every call is audited

Actor, connection, tool, arguments, quote, cost and result are recorded on every call — the same trail a human console action leaves.

Bounded by a cap you set, independent of your plan

Each connection carries its own per-job and daily spend cap, editable from Settings. A confused or compromised agent is bounded by a number you chose, not the whole workspace's plan.

Authentication

OAuth 2.1 with PKCE, browser-based — no static API key on this surface. You authorise Tonta for one workspace the first time a client connects; access tokens are short-lived and refresh tokens rotate, with reuse of a rotated token revoking the whole family. A client Tonta has never heard of can still connect via Dynamic Client Registration (RFC 7591) — nobody has to register it by hand.

Connect a client

Claude Code

One command.

claude mcp add --transport http tonta https://tonta.media/api/mcp

Claude Desktop / Cursor

Paste into claude_desktop_config.json (or .cursor/mcp.json), then restart.

{
  "mcpServers": {
    "tonta": { "type": "http", "url": "https://tonta.media/api/mcp" }
  }
}

ChatGPT / anything else

Settings → Connectors → Add connector → paste the URL.

https://tonta.media/api/mcp

Server URL: https://tonta.media/api/mcp — the same one every client above uses.

What it looks like

You

Using Tonta, what would a 30-second faceless reel about home espresso cost, before you make anything?

Your agent

I'll estimate that with Tonta first. Three shots, cinematic preset, 9:16 — the quote comes back at $2.14 and is good for five minutes. Want me to submit it?

You

Yes, go ahead.

Your agent

Submitted. I'll watch it — plan is done, shots are generating now. I'll show you the cut here as soon as it's ready to review.

Every tool your agent can call

Read straight from the same contract the server is generated from — 70 tools today. No schemas dumped here; your MCP client reads those directly from the server on connect.

Read (42)

get_auto_refillToday's automatic top-up setting, without changing it.
get_automation_planWhat this automated service will do: aim, output, cost, schedule and references — built and persisted as the current draft.
get_automation_readinessWhether a service may run unattended right now, and what is blocking it.
get_balanceCredit available now, and what is reserved against running work.
get_block_adjust_optionsA shot's adjustable fields, their bounds, and each option's price delta.
get_caption_trackA piece's captions: the lines, the style, and the subtitle files.
get_connection_limitsYour own remaining spend budget for this credential, right now.
get_content_statsPieces produced and published, itemised by service.
get_entitlementsWhat your plan and add-ons allow.
get_jobRead a job, its progress and what it has cost so far.
get_job_activityWhat this job is doing right now, step by step.
get_projectRead a project, its recent jobs and its latest export.
get_referenceOne reference, with its current images in conditioning order.
get_reference_role_suggestionsServer-owned suggested asset roles for a reference kind, before any reference exists.
get_sceneRead the current state of a scene: objects, cameras, lights, rigs.
get_service_settingsA configured cadence's full settings, plus what each unset field resolves to — read-only.
get_spend_summaryWhat your credits were spent on, itemised.
get_subscriptionYour plan, when it renews and what it will cost.
list_automationsEvery service this workspace has configured, and whether each is ready to run unattended.
list_block_attemptsA block's version history.
list_calendarScheduled posts between two dates.
list_caption_stylesThe caption styles a piece can use.
list_connectionsYour connected accounts and their health.
list_content_languagesEvery language a service can write, narrate and caption in.
list_goal_metricsEvery metric a goal may be set on.
list_goalsEvery goal for this workspace, grouped by whether it is proposed, active or past.
list_jobsYour jobs, filtered and paged newest first.
list_libraryYour assets, filtered.
list_offersThe offers live for your workspace right now — read-only; accept one on the web.
list_platform_prerequisitesWhat each platform needs before you connect it.
list_presetsThe presets this workspace may choose from, and what each can do.
list_projectsYour projects, filtered.
list_referencesYour references, and whether each may be used.
list_review_queuePieces waiting for your decision.
list_scene_compute_callsList a scene’s billed compute calls, newest first.
list_scene_projectsList this workspace’s Blender scenes, newest first.
list_schedulable_contentContent cleared to schedule — moderation- and customer-approved — and which of your connections already carry it.
list_servicesWhich services this workspace can plan and submit right now.
list_supported_platformsEvery platform a cadence may target, with how well Tonta supports each.
list_top_piecesPieces ranked by a measured performance metric.
list_workspace_add_onsAdd-ons you can buy on your current plan, and the ones you already hold.
wait_for_jobCheck whether a job has finished, needs an answer, or is still working.

Act (28)

answer_questionAnswer a question a job is waiting on, and let it continue.
answer_session_questionAnswer a session-level question that is not waiting on any one job.
apply_scene_opsApply a batch of scene edits, never code, a closed, typed operation list.
cancel_jobCancel a job and release whatever credit it has not spent.
cancel_scheduled_postCancel a scheduled post before it goes out.
confirm_uploadConfirm a direct upload once the file has finished sending, and register it.
createDescribe what to make. Classifies, fills the settings, and returns a priced quote or a question.
create_scene_projectStart a new, persistent Blender scene.
curate_block_attemptPin or reject a regenerated version — never spends, never changes review status.
decline_quoteSay no to a spend that is above your confirmation limit.
estimate_block_actionPrice an in-place change to one block of a piece.
estimate_jobPrice a job and return a single-use quote for it.
estimate_scene_actionPrice one scene action before committing to it.
import_scene_assetImport an existing 3D asset into a scene as a referenceable handle.
pause_automationStop a running cadence. Scheduled runs stop; nothing already queued is cancelled.
preview_create_priceThe live price of the Create settings, and what each option would change.
propose_goalPropose a measurable target. Always created proposed, never active.
request_uploadGet a direct upload URL for a file you are about to send — the browser uploads straight to storage.
resume_automationStart a paused cadence back up, from its next scheduled slot.
schedule_postSchedule an approved piece to a connected account.
send_messageAdd a message to a conversation.
set_reference_assetsSet the ordered images behind a reference sheet, replacing whatever was there.
set_reference_brandChange a reference's brand, or clear it.
start_jobStart a planned draft from its quote.
submit_block_regenerationSpend a block-action estimate and start the regeneration.
submit_jobSubmit a quoted job for generation.
update_caption_trackEdit a piece's captions and re-render them. Free.
use_block_as_referenceTurn an output into a reusable reference.

Connect a client

Sign in, open Settings → Integrations, pick your client and paste one line — you authorise Tonta for your workspace in the browser the first time it connects. No API key goes in a config file.

Connect in Settings