Video ads for your store or your app, run by your AI agent
Your agent orders the ads.Real people are in them.
Real Cut makes finished video ads for online stores and for apps and software in the US and Canada, from footage real people filmed, and Žan Bassanese, the founder, reviews every one. Your AI agent can try it, sign up and run the account; you give permission once. Opens at launch
On Shopify, WooCommerce, BigCommerce, Wix, Squarespace or a site of your own, and for apps and software. Not on Shopify? Your own mail tool sends the invitation.
Free to join. $300 a shoot. Creator payouts open at launch.
No AI-generated peopleReal Cut never generates a person. Its verify page shows who was filmed and how they agreed.
You see every act it takesEach is one command at the page, MCP and REST, recorded as agent:<label> with its door and time.
What Real Cut never does.
Learn a face or a voiceIt learns how to cut, and never clones anyone.
Generate pixels, sound or peopleThe edit adds only captions, titles and licensed music, sound and graphics.
Deliver an ad without Content Credentials and a verify linkEvery ad has both. The mark shows once each person on screen has signed Real Cut’s release, unless the brand turns it off for an ad.
Take a creator’s personal yes from an agentThe creator gives it, in person.
Example: Not Black and WhiteŽan’s own store: 29 raw clips from one home shoot, cut into this ad.Opens at launch
What your agent can do.
For a brandOpens at launchEverything, inside the mandate
Sign up the brand and start the free first adstart_brandclaim_free_first_ad
Start, change or cancel a plan, within the capstart_subscriptionchange_subscription
Send footage, confirming you hold its rights and the people in it are real and agreed to appearadd_brand_footage
Keep the brief current, ask for changes, approve deliveries only if you ticked itupdate_brand_briefrequest_changesapprove_variation
Run your creator programme, at the pay you setpick_programme_applicantaccept_programme_footage
Read results and write to Žanget_brand_reportsend_brand_message
Make invitation and reward codes for your store’s own emails, on any storemake_invitation_codesadd_reward_codes
Ship the product with a tracking number, or give a creator a $0 order code for your checkoutrecord_shipmentadd_order_codes
For an app, give each creator private access, asking you firstgive_product_access
What it never does
Raise its own cap, change the mandate, give a consent for you, approve unless you ticked it, delete your footage or your account, or act after you revoke it.
For a creatorAll but the personal yes
Apply and keep the profile currentapply_as_creatorupdate_creator_profile
Accept or decline briefsaccept_jobdecline_job
Book shoot dates and upload the footagebook_shoot_dateupload_job_originalOpens at launch
Track pay and answer messagesget_payoutssend_creator_messageOpens at launch
The personal yes, in person, once
The likeness release, before the first job is accepted
The tax form and payout account, before the first payout
The filming is always the creator.
The mandateOpens at launch
The owner gives it once.
1Who the agent isIts name, its model and its label.
2What it may doPay within your cap, send footage, run your creator programme and start the free first ad; then everyday acts you switch on or off.
3The monthly capYours to set, per calendar month, before tax. It counts every Real Cut charge. Above it, nothing is charged: Real Cut asks you at once. Example: $1,068 covers a month of Grow.
4The payment methodA card, a Stripe agent token, or stablecoins through Stripe where offered. The free first ad needs a card or a token.
5The two consents“Real Cut learns editing from your work” and “Share results for each version”. It learns how to cut, never a face or a voice.
6The delivery choice“Your agent may approve deliveries”, off unless you tick it. Žan reviews every delivery either way.
By hand: when a shoot is booked, you or your fulfilment ship the product to the creator. For an app, nothing ships: the creator gets private access.get_ship_listrecord_shipment
$0todayYour agent then works alone within it, and you see every act. What it does within it binds your business; anything outside it is refused.
The same prices for a person and an agent.
Start$534a month6 finished ads a month in every format
Grow$1,068a month12 finished ads a month in every format
Scale$89an ad20 to 120 finished ads a month
Creators we hire$300eachOn top of any plan; the brand chooses how many
Setup is free, with no card
Two revision rounds per video
Plans: cancel any time
First ads within seven working days of the approved brief
Billing opens soon
The free first adOpens at launchFreeOne ad from your own footage, once the mandate is set with a card or an agent token. One per business, 5 a week in all.
For creatorsFree to join$300 a shoot. Creator payouts open at launch.
request_mandate with who you are, the business, the acts and a PKCE code_challenge. It answers the owner’s url and a match_code.
Your owner opens that one link.
They check your match code and set the mandate.
Read the answer.
get_mandate answers waiting, given, declined or ended. When given, it hands the token once, only with your code_verifier; if it is lost, the owner re-issues it.
Run the account.
start_brand, then claim_free_first_ad. When the owner wants more: start_subscription, within the cap. tools/list holds the rest.
Apply for the creator.
apply_as_creator with their name, email, main profile link and categories. It answers a status_url.
https://realcut.ai/api/service/mcp
The creator opens the status_url.
They confirm their own consents, which an agent cannot set, and give the personal yes.
Ask to connect.
The creator says yes on Real Cut’s consent page. Until then, connect_creator_agent reaches the application.
Do the work.
accept_job, book_shoot_date, upload_job_original, get_payouts. tools/list holds the rest.
Opens at launch
The same order as data: GET /api/service/how-to-start
If you are the ownerIf you are the creatorOpens at launch
Tell your agent: use Real Cut.
Open the one link it brings you.
Check the match code your agent shows you, then set the mandate. It unlocks the free first ad.Confirm your consents and give the personal yes, yourself.
Watch it, and revoke it any time.
Every act shows in Your agents. Revoke there: it stops at once and can no longer act or pay. Your plan runs until it is cancelled in Plan and billing.
A number a day per agent, set before launch (3 here, an example) Opens at launch
The mandate link
Works once, for a time set before launch (7 days in the example) Opens at launch
A connection
Ends when revoked, after 30 days unused, or after a year; the owner renews it in Your agents
The free first ad
5 a week in all, Monday to Sunday, UTC; when a week is full, it waits in line Opens at launch
Requests
128 KB each, and a day’s budget per network address, set before launch
The label
Letters, digits, space . _ -, 60 at most; with none, acts are recorded as agent:agent-session Opens at launch
For machines
The same offer, for an agent to read.
Three of these addresses open at launch: agents.json, terms.json and errors.json. Until then they answer 404.
Opens at launchhttps://realcut.ai/agents.json
{
"format": "Real Cut agent card 1.0",
"url": "https://realcut.ai/agents.json",
"a2a": {
"supported": false,
"agent_card_json": "answers 404 until an A2A endpoint exists"
},
"name": "Real Cut",
"description": "Finished short-form video ads for online stores in the US and Canada, cut from footage real people filmed: the brand’s own, creators’ and customers’ clips. Žan Bassanese, the founder, reviews every delivery, and every delivery carries the Real stamp. Real Cut generates no people, no pixels and no sound, and never trains on a face or a voice.",
"provider": {
"organization": "NotBW d.o.o.",
"url": "https://realcut.ai"
},
"version": "1.0",
"offer_version": "1.0",
"terms_version": "1.0",
"documentation": "https://realcut.ai/agents",
"support": {
"page": "https://realcut.ai/help",
"before_an_account": "request_edit writes to Žan; he answers by email"
},
"interfaces": [
{
"id": "mcp_public",
"protocol": "mcp",
"transport": "streamable-http",
"url": "https://realcut.ai/api/service/mcp",
"auth": "none",
"tools": [
"list_offers",
"run_sandbox",
"read_sandbox_run",
"request_mandate",
"get_mandate",
"verify_stamp",
"report_stamp",
"apply_as_creator",
"connect_creator_agent",
"request_edit"
]
},
{
"id": "mcp_account",
"protocol": "mcp",
"transport": "streamable-http",
"url": "https://realcut.ai/api/service/agent-mcp",
"auth": "bearer",
"tools": "tools/list answers the tools your mandate or connection allows",
"first": [
"start_brand",
"claim_free_first_ad",
"get_brand_next_step"
]
},
{
"id": "rest",
"protocol": "https+json",
"openapi": "https://realcut.ai/api/service/openapi.json",
"auth": "none on the public routes; bearer on the account"
}
],
"how_to_start": {
"url": "https://realcut.ai/api/service/how-to-start",
"brand": [
{
"command": "run_sandbox"
},
{
"command": "read_sandbox_run"
},
{
"command": "request_mandate"
},
{
"actor": "owner",
"open": "url",
"checks": "match_code"
},
{
"command": "get_mandate",
"with": [
"mandate_request",
"code_verifier"
]
},
{
"command": "start_brand"
},
{
"command": "claim_free_first_ad"
}
],
"creator": [
{
"command": "apply_as_creator"
},
{
"actor": "creator",
"open": "status_url",
"gives": [
"their consents",
"the personal yes"
]
},
{
"command": "connect_creator_agent",
"until": "the creator first signs in"
},
{
"actor": "creator",
"open": "https://realcut.ai/oauth/consent",
"gives": "the connection"
},
{
"command": "accept_job"
}
]
},
"auth": {
"mandate": {
"request": "request_mandate, with code_challenge (PKCE, S256); keep the code_verifier to yourself",
"owner_link": "url carries its own public code, never mandate_request",
"match_code": "show it to your owner; the mandate page shows the same code",
"token": "get_mandate hands it over once, and only with the code_verifier; a second ask answers token_already_issued",
"oauth": "with a return address in your client ID document, the browser brings an authorization code for the token endpoint instead",
"lost_token": "the owner re-issues it in Your agents (reissue_agent_token), and the old one stops at once"
},
"header": "Authorization: Bearer <token>",
"oauth_metadata": "https://realcut.ai/.well-known/oauth-authorization-server",
"client_id": "an HTTPS URL of your client ID metadata document",
"label_header": "X-Realcut-Agent-Label",
"label_format": "your label alone (claude, not agent:claude): letters, digits, space . _ -, 60 at most; other characters are removed; with none the act is recorded as agent:agent-session"
},
"waiting": {
"get_mandate": "answers retry_after_seconds while waiting; reading faster answers slow_down",
"read_sandbox_run": "answers retry_after_seconds in structuredContent while running",
"get_brand_next_step": "what waits for you: the owner’s answer to an over-cap ask, a new delivery, a message from Žan",
"webhooks": "not offered at launch"
},
"documents": {
"offer": "https://realcut.ai/api/service/offers",
"sandbox": "https://realcut.ai/api/service/sandbox/runs",
"mandates": "https://realcut.ai/api/service/mandates",
"terms": "https://realcut.ai/terms.json",
"errors": "https://realcut.ai/api/service/errors.json",
"verify": {
"page": "https://realcut.ai/verify/{code}",
"json": "https://realcut.ai/verify/{code}.json",
"rest": "https://realcut.ai/api/service/stamps/{code}",
"by_file": "https://realcut.ai/api/service/stamps?sha256={64 hex}"
},
"text": "https://realcut.ai/llms.txt",
"terms_page": "https://realcut.ai/terms",
"privacy": "https://realcut.ai/privacy"
},
"skills": [
{
"id": "sandbox",
"name": "Try the sandbox",
"description": "Run the editor on Real Cut’s sample footage and brief, with no account. Nothing is charged or published."
},
{
"id": "brand",
"name": "Run a brand’s account",
"description": "Sign up, start the free first ad, start a plan, send footage, keep the brief current, approve deliveries when allowed, read results. Inside the owner’s mandate."
},
{
"id": "creator",
"name": "Work for a creator",
"description": "Apply, keep the profile current, accept or decline briefs, book shoots, upload footage, track pay. The creator gives the personal yes in person."
},
{
"id": "verify",
"name": "Verify a Real stamp",
"description": "Read what Real Cut knows about a delivered ad, by its code or by the file’s SHA-256: the real people in it, their consent, every edit, nothing generated."
}
],
"separate": "Real Cut’s operations door is admin only, with a passkey; brand and creator connections never reach it.",
"opens": "at launch"
}
Real Cut as plain text for any model: realcut.ai/llms.txt
https://realcut.ai/api/service/offers
{
"offer_version": "1.0",
"terms_version": "1.0",
"currency": "USD",
"brands_in": [
"US",
"CA"
],
"tax": {
"prices": "in US dollars, as Pricing shows them, whichever method pays",
"any_tax_charged": "on the receipt; the monthly cap counts before tax"
},
"plans": [
{
"id": "start",
"name": "Start",
"price": 534,
"per": "month",
"ads_per_month": 6,
"includes": [
"6 finished ads a month in every format",
"From your footage, your creators or your customers: $89 an ad",
"Creators we hire: $300 each, 2 by default",
"2 revision rounds per video",
"Cancel any time"
],
"revision_rounds_per_video": 2,
"cancel": "any time",
"buy": {
"command": "start_subscription",
"example_arguments": {
"plan": "start"
},
"idempotency_key": "required",
"payment_token": "with an agent token only: a new one with each payment"
}
},
{
"id": "grow",
"name": "Grow",
"price": 1068,
"per": "month",
"ads_per_month": 12,
"includes": [
"12 finished ads a month in every format",
"From your footage, your creators or your customers: $89 an ad",
"Creators we hire: $300 each, 3 by default",
"2 revision rounds per video",
"Cancel any time"
],
"revision_rounds_per_video": 2,
"cancel": "any time",
"buy": {
"command": "start_subscription",
"example_arguments": {
"plan": "grow"
},
"idempotency_key": "required",
"payment_token": "with an agent token only: a new one with each payment"
}
},
{
"id": "scale",
"name": "Scale",
"price_per_finished_ad": 89,
"per": "finished_ad",
"ads_per_month": {
"from": 20,
"to": 120,
"step": 4
},
"creators_max": 40,
"includes": [
"20 to 120 finished ads a month",
"Any mix of footage",
"Creators we hire: $300 each, one per 4 ads by default",
"2 revision rounds per video",
"Cancel any time"
],
"revision_rounds_per_video": 2,
"cancel": "any time",
"buy": {
"command": "start_subscription",
"example_arguments": {
"plan": "scale",
"ads_per_month": 20
},
"idempotency_key": "required",
"payment_token": "with an agent token only: a new one with each payment"
}
}
],
"creators_we_hire": {
"price_each": 300,
"on_top_of": "any plan",
"how_many": "the brand chooses"
},
"guarantees": [
"Setup is free, with no card",
"Two revision rounds per video",
"Plans: cancel any time",
"First ads within seven working days of the approved brief"
],
"paying": {
"idempotency_key": {
"mcp": "the idempotency_key argument",
"rest": "the Idempotency-Key header",
"on": [
"start_subscription",
"change_subscription"
]
},
"agent_token": {
"kind": "stripe_shared_payment_token",
"field": "payment_token",
"send": "a new token with each payment",
"with": [
"start_subscription",
"change_subscription"
]
},
"after_503": "read get_mandate (spent_this_month) or get_brand_billing, then retry with the same key"
},
"mandate": {
"request": "request_mandate",
"status": "get_mandate",
"statuses": [
"waiting",
"given",
"declined",
"ended"
],
"charged_today": 0,
"monthly_cap": {
"set_by": "the owner",
"currency": "USD",
"period": "calendar_month_utc",
"includes_tax": false,
"counts": "every Real Cut charge, after any credit",
"such_as": [
"plans",
"extra_creators",
"licence_renewals",
"handle_flights",
"programme_pay_your_agent_commits",
"shopify_charges"
],
"read": "get_mandate: spent_this_month, remaining, resets_at"
},
"above_cap": {
"answer": "over_cap: not charged; the act waits and Real Cut asks the owner at once",
"ask_ahead": "request_over_cap",
"read": "get_brand_next_step"
},
"payment_methods": [
"card",
"stripe_shared_payment_token",
"stablecoin_through_stripe_where_supported"
],
"stablecoin": "through Stripe where Stripe supports it for the account; available or not_available is stated at launch",
"consents_required": [
{
"id": "learning",
"text": "Real Cut learns editing from your work"
},
{
"id": "results",
"text": "Share results for each version"
}
],
"approve_deliveries": {
"default": false
},
"acts": [
{
"key": "pay_within_cap",
"words": "Pay, within your cap, for your plan (start, change or cancel it), licence renewals, and ads from a creator’s handle",
"commands": [
"start_subscription",
"change_subscription",
"renew_subscription",
"renew_licence",
"request_handle_ads",
"start_handle_flight",
"stop_handle_ads"
],
"comes_with_the_mandate": true
},
{
"key": "footage",
"words": "Send footage, confirming for you with each upload that it was really filmed with nothing generated, that you hold its rights, and that everyone in it is a real adult who agreed to appear in your ads",
"commands": [
"add_brand_footage"
],
"comes_with_the_mandate": true
},
{
"key": "programme",
"words": "Pick applicants and accept footage in your creator programme, at the pay you set, which counts toward your cap",
"commands": [
"pick_programme_applicant",
"pass_programme_applicant",
"accept_programme_footage",
"request_programme_retake"
],
"comes_with_the_mandate": true
},
{
"key": "free_first_ad",
"words": "Start your free first ad, once",
"commands": [
"claim_free_first_ad"
],
"comes_with_the_mandate": true
},
{
"key": "brief",
"words": "Work on next month’s brief",
"commands": [
"update_brand_brief"
],
"comes_with_the_mandate": false
},
{
"key": "change",
"words": "Ask for changes, with reasons",
"commands": [
"request_changes"
],
"comes_with_the_mandate": false
},
{
"key": "files",
"words": "Download files",
"commands": [
"download_archive"
],
"comes_with_the_mandate": false
},
{
"key": "results",
"words": "Share ad results with Real Cut",
"commands": [
"link_ad",
"get_brand_report"
],
"comes_with_the_mandate": false
},
{
"key": "stamp",
"words": "Switch the Real stamp mark, and test it",
"commands": [
"set_ad_stamp",
"set_stamp_style",
"set_stamp_test",
"set_stamp_link",
"request_release"
],
"comes_with_the_mandate": false
},
{
"key": "approve_deliveries",
"words": "Approve deliveries, only if you tick “Your agent may approve deliveries”, which is off unless you do",
"commands": [
"approve_variation"
],
"comes_with_the_mandate": false,
"off_unless_ticked": true
}
],
"revocable": "any_time"
},
"free_first_ad": {
"requires": [
"mandate_given",
"card_or_stripe_shared_payment_token",
"both_consents"
],
"stablecoin_only": "does not unlock it",
"footage": "brand_own",
"per_business": 1,
"real_cut_wide_per_week": 5,
"week": "Monday to Sunday, UTC",
"when_week_full": "queued",
"queued_answer": "starts_week_of",
"claim": "claim_free_first_ad",
"first_ads_within_working_days": 7
},
"creators": {
"join": 0,
"pay_per_shoot": 300,
"paid_within_days": 3,
"currencies": [
"USD",
"CAD"
],
"ad_licence_months": 12,
"renewal_percent_of_shoot_fee": 40,
"personal_yes": {
"likeness_release": "before_first_accept",
"tax_form": "before_first_payout",
"payout_account": "before_first_payout"
}
},
"shipping": {
"when": "a plan books a creator shoot",
"who": "the owner or their fulfilment ships the product to the creator",
"commands": [
"get_ship_list",
"record_shipment"
]
},
"review": "Žan Bassanese reviews every delivery.",
"stamp": "Every delivery carries signed Content Credentials (C2PA) and a public verify link; the mark shows once each person on screen has signed Real Cut’s release, unless the brand turns it off for an ad."
}
Real Cut as plain text for any model: realcut.ai/llms.txt
Opens at launchhttps://realcut.ai/terms.json
Counsel confirms these terms before launch.
{
"excerpt": "brands:agent, brands:mandate and mandate_acts; the whole file holds every section",
"tabs": {
"brands": "https://realcut.ai/terms.json?tab=brands",
"creators": "https://realcut.ai/terms.json?tab=creators",
"buyers": "https://realcut.ai/terms.json?tab=buyers"
},
"url": "https://realcut.ai/terms.json",
"page": "https://realcut.ai/terms",
"governs": "The words on the page at https://realcut.ai/terms govern; this file carries the same words and their hash.",
"version": "1.0",
"date": "2026-10-15",
"content_hash": null,
"content_hash_alg": "sha256",
"party": "NotBW d.o.o.",
"governing_law": "Slovenia",
"tab": "brands",
"sections": [
{
"key": "brands:agent",
"heading": "Using an AI agent",
"link": "https://realcut.ai/terms#brands-agent",
"text": "You may let an AI agent act for your brand at Real Cut, through the page, MCP or REST. It acts for you, not for Real Cut. Before the owner gives the mandate, an agent no one at your brand has connected may only use the sandbox, read the offer and ask for the mandate link; it cannot sign your brand up, commit you to pay or give a consent. Once the owner has given the mandate, your agent may sign the brand up and act within it, and what it does within the mandate binds the business as if you had done it yourself, including the plans it starts and the payments it makes. The order is always the same: your agent asks with request_mandate; the owner gives the mandate on Real Cut’s own page from that link, signing in there, which makes the account if your business is new; your agent reads it with get_mandate; then start_brand names the brand if your account has none yet. Where your brand already has an account at Real Cut, the mandate attaches to it and start_brand is not needed. An agent connected without a mandate, by you or a teammate, may do only what its switches on AI agent allow, never more than that person’s seat, and never pays; what it does counts as that person’s own act. It can never hold or change a mandate. The law recognises contracts made through electronic agents: in the United States, sections 9 and 14 of the Uniform Electronic Transactions Act, in the states that adopted it, and section 101(h) of the federal E-SIGN Act; in Canada, the provinces’ electronic commerce acts (for example section 20 of Ontario’s Electronic Commerce Act, 2000); in Slovenia, whose law governs these terms, Article 5 of ZEPEP, under which a message an information system sends for you counts as yours. By giving the mandate you agree that what your agent does within it is yours. Real Cut checks every act against the mandate before it runs; an act outside it is refused and does not bind you. Every refusal names its reason, as listed under each clause here and in the terms as JSON, so your agent knows what to do next. Every act your agent takes is recorded as agent:<label>, with the door it came through and the time; read the record in your brand space, under AI agent › Your agents.",
"commands": [
"request_mandate",
"get_mandate",
"start_brand"
],
"person_only": {
"role": "brand_owner",
"label": "Only the owner",
"commands": [
"set_mandate"
]
},
"refused": [
{
"code": "mandate_not_active",
"when": "an account act before the mandate is active, or after it ends",
"next": "get_mandate"
},
{
"code": "outside_mandate",
"when": "an act the mandate does not include"
},
{
"code": "insufficient_scope",
"when": "an agent connected without a mandate, past its switches"
}
]
},
{
"key": "brands:mandate",
"heading": "The mandate",
"link": "https://realcut.ai/terms#brands-mandate",
"text": "What it is. The mandate is what the brand’s owner gives once, signed in as the owner on Real Cut’s own page: who the agent is and the label its acts carry, what it may do, the monthly cap, the payment method, the two consents of the data partnership in checkout’s own words (“Real Cut learns editing from your work” and “Share results for each version”), and whether it may approve deliveries. Your agent may bring you a one-tap link to that page. Only the owner, who confirms they may bind the business, can give, change or revoke the mandate. Giving it charges nothing, and accepts these terms, version 1.0, for the business if you have not accepted them already; the page says so beside the button, and your signed record keeps it. What it may do. The mandate page shows these acts in these words, and get_mandate answers them by the same keys; the owner may switch off any but the first four. Pay, within your cap, for your plan (start, change or cancel it), licence renewals, and ads from a creator’s handle. Send footage, confirming for you with each upload that it was really filmed with nothing generated, that you hold its rights, and that everyone in it is a real adult who agreed to appear in your ads. Pick applicants and accept footage in your creator programme, at the pay you set, which counts toward your cap. Start your free first ad, once. Work on next month’s brief. Ask for changes, with reasons. Download files. Share ad results with Real Cut. Switch the Real stamp mark, and test it. Approve deliveries, only if you tick “Your agent may approve deliveries”, which is off unless you do. Picking applicants includes passing on one and asking for a retake. An approval your agent gives counts as your own, for revision rounds too, and Žan reviews every delivery either way. What it can never do. Your agent can never accept these terms other than through the mandate the owner gives, give, change or revoke the mandate, raise its cap or spend past it, give a consent for you, see your card or bank details, delete your footage or your account, approve a delivery unless you ticked it, or act after you revoke it. Some acts are never in a mandate, and a person signed in to your space does them: setting or changing your programme’s offer and what you pay your own creators, inviting a creator, recording a payment to a creator, asking a creator for exclusivity, and turning buyer invitations on or changing their store credit. The cap. The monthly cap is the most your agent can commit you to in a calendar month (UTC), in US dollars, including any tax charged. It covers only what Real Cut charges; Real Cut never spends from your ad accounts. Everything Real Cut charges counts toward it: plans, licence renewals and ads from a creator’s handle, after any credit; so does what your agent commits you to pay creators in your programme, and what Shopify bills you for Real Cut. What you buy yourself is never blocked by the cap, but it counts toward it, so your agent sees what is left. Real Cut refuses a new act that would pass the cap and asks you instead; nothing new above the cap is charged without your yes. Amounts that fall due under something already agreed (a running plan, a flight already started) are charged when due even if the month’s cap is reached; they count toward it, and your agent starts nothing new until the month fits. If you lower the cap below a plan already running, the plan keeps running at its price until you or your agent change or cancel it, as Real Cut shows you when you save. Changing or revoking. Change or revoke the mandate at any time in your brand space, under AI agent › Your agents. A change applies from your agent’s next act, and a change to these terms never widens the mandate. Revoking ends your agent’s access at once and withdraws any request of its you have not answered: what it already finished stays done; what Real Cut accepted before you revoked, such as a batch in progress, a running plan, a flight already started or a payment already confirmed, runs its course under these terms; and nothing new starts. After you revoke, the payment method in the mandate pays only for what was accepted before, such as a running plan, until that is cancelled; cancel the plan in Plan and billing. Undo restores the same mandate while it shows on that page; after that, you give it again. Your agent may also give up its own mandate (release_mandate), which ends it as revoking does. Each version of the mandate is kept in your signed record, and your agent reads the version in force, with the version of these terms, through get_mandate, so it sees a change to these terms before it takes effect.",
"commands": [
"get_mandate",
"request_over_cap",
"release_mandate"
],
"person_only": {
"role": "brand_owner",
"label": "Only the owner",
"commands": [
"set_mandate",
"change_mandate",
"revoke_mandate",
"approve_over_cap",
"decline_over_cap"
]
},
"refused": [
{
"code": "over_cap",
"when": "a new act would pass the monthly cap; it waits, and Real Cut asks you",
"next": "get_brand_next_step"
},
{
"code": "outside_mandate",
"when": "an act the mandate does not include"
},
{
"code": "owner_action_required",
"when": "an act only the owner does; the answer carries the owner’s link"
},
{
"code": "person_only",
"when": "an act a person signed in does"
},
{
"code": "approval_not_allowed",
"when": "an approval when the owner did not tick it"
},
{
"code": "mandate_revoked",
"when": "any act after the mandate is revoked or released"
}
]
}
],
"mandate_acts": [
{
"key": "pay_within_cap",
"words": "Pay, within your cap, for your plan (start, change or cancel it), licence renewals, and ads from a creator’s handle",
"commands": [
"start_subscription",
"change_subscription",
"renew_subscription",
"renew_licence",
"request_handle_ads",
"start_handle_flight",
"stop_handle_ads"
]
},
{
"key": "footage",
"words": "Send footage, confirming for you with each upload that it was really filmed with nothing generated, that you hold its rights, and that everyone in it is a real adult who agreed to appear in your ads",
"commands": [
"add_brand_footage"
]
},
{
"key": "programme",
"words": "Pick applicants and accept footage in your creator programme, at the pay you set, which counts toward your cap",
"commands": [
"pick_programme_applicant",
"pass_programme_applicant",
"accept_programme_footage",
"request_programme_retake"
]
},
{
"key": "free_first_ad",
"words": "Start your free first ad, once",
"commands": [
"claim_free_first_ad"
]
},
{
"key": "brief",
"words": "Work on next month’s brief",
"commands": [
"update_brand_brief"
]
},
{
"key": "change",
"words": "Ask for changes, with reasons",
"commands": [
"request_changes"
]
},
{
"key": "files",
"words": "Download files",
"commands": [
"download_archive"
]
},
{
"key": "results",
"words": "Share ad results with Real Cut",
"commands": [
"link_ad",
"get_brand_report"
]
},
{
"key": "stamp",
"words": "Switch the Real stamp mark, and test it",
"commands": [
"set_ad_stamp",
"set_stamp_style",
"set_stamp_test",
"set_stamp_link",
"request_release"
]
},
{
"key": "approve_deliveries",
"words": "Approve deliveries, only if you tick “Your agent may approve deliveries”, which is off unless you do",
"commands": [
"approve_variation"
],
"off_unless_ticked": true
}
]
}
Real Cut as plain text for any model: realcut.ai/llms.txt
https://realcut.ai/api/service/mcp
# The public MCP: no account. Stateless: initialize is optional, each call stands alone.
POST https://realcut.ai/api/service/mcp
Content-Type: application/json
Accept: application/json
MCP-Protocol-Version: 2025-06-18
X-Realcut-Agent-Label: claude
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"run_sandbox","arguments":{"terms_version":"1.0"}}}
# The answer (example). Wait retry_after_seconds, then read_sandbox_run.
{"jsonrpc":"2.0","id":1,"result":{"structuredContent":{"run":"sbx_example","status":"running","retry_after_seconds":20,"read":"read_sandbox_run"},"content":[{"type":"text","text":"The sandbox is running. Read it with read_sandbox_run in 20 seconds."}]}}
# The account MCP, with the token get_mandate hands over once
POST https://realcut.ai/api/service/agent-mcp
Content-Type: application/json
Accept: application/json
Authorization: Bearer <token>
MCP-Protocol-Version: 2025-06-18
X-Realcut-Agent-Label: claude
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"start_subscription","arguments":{"plan":"grow","idempotency_key":"<a key you choose>"}}}
# Above the cap (example): not charged, the act waits, the owner is asked at once
{"jsonrpc":"2.0","id":3,"result":{"isError":true,"structuredContent":{"error":"over_cap","over_cap_request":"ocr_example","amount":1068,"remaining_this_month":534,"resets_at":"2026-11-01T00:00:00Z","read":"get_brand_next_step"}}}
# Claude Code
claude mcp add --transport http realcut https://realcut.ai/api/service/agent-mcp --header "Authorization: Bearer <token>"
# X-Realcut-Agent-Label is your label alone (claude, not agent:claude): letters, digits, space . _ -, 60 at most.
Real Cut as plain text for any model: realcut.ai/llms.txt
https://realcut.ai/api/service/openapi.json
# The OpenAPI document is at the address above. Every command is also REST, the same acts as MCP; the requests and answers below are examples.
# run_sandbox · no account
POST https://realcut.ai/api/service/sandbox/runs
Content-Type: application/json
X-Realcut-Agent-Label: claude
{"terms_version":"1.0"}
→ 202 {"run":"sbx_example","status":"running","retry_after_seconds":20}
# read_sandbox_run · Retry-After and retry_after_seconds while it runs
GET https://realcut.ai/api/service/sandbox/runs/{run}
→ 200 {"run":"sbx_example","status":"done","variations":[…],"report":"…"}
# request_mandate · no account · make a code_verifier and keep it to yourself
POST https://realcut.ai/api/service/mandates
Content-Type: application/json
X-Realcut-Agent-Label: claude
{"client_id":"https://agent.example/realcut-client.json","label":"claude","model":"Claude","business":{"website":"https://brand12.example","owner_email":"owner@brand12.example"},"acts":["pay_within_cap","footage","free_first_ad","brief","change","files","results"],"suggested":{"monthly_cap":1068,"payment":"card"},"code_challenge":"<base64url SHA-256 of your code_verifier>","code_challenge_method":"S256","terms_version":"1.0"}
→ 201 {"mandate_request":"mnr_example","status":"waiting","url":"https://realcut.ai/mandate/mq_example","match_code":"KQ7-F2M","expires_at":"2026-10-22T09:40:00Z","retry_after_seconds":10}
# get_mandate · waiting, given, declined or ended; the status needs no secret
GET https://realcut.ai/api/service/mandates/mnr_example
→ 200 {"status":"waiting","retry_after_seconds":10}
# get_mandate · the token, once, only with your code_verifier (in the body, never the URL)
POST https://realcut.ai/api/service/mandates/mnr_example
{"code_verifier":"<yours>"}
→ 200 {"status":"given","token":"<once>","token_type":"Bearer","mandate":{"mandate":"mnd_example","status":"active","version":1,"terms":"1.0","agent":"agent:claude","model":"Claude","monthly_cap":{"amount":1068,"currency":"USD","period":"calendar_month_utc","includes_tax":false,"spent_this_month":0,"remaining":1068,"resets_at":"2026-11-01T00:00:00Z"},"may":["pay_within_cap","footage","programme","free_first_ad","brief","change","files","results"],"approve_deliveries":false,"payment_method":{"kind":"card"},"free_first_ad":{"status":"unlocked","claim_with":"claim_free_first_ad"},"above_cap":"request_over_cap","ends":"when revoked, after 30 days unused, or after a year"}}
→ 409 {"error":"token_already_issued"} on a second ask
# The account: the same Bearer token; paying commands take an Idempotency-Key
Authorization: Bearer <token>
Idempotency-Key: <a key you choose>
# verify_stamp · no account · by its code, or by the file
GET https://realcut.ai/api/service/stamps/{code}
GET https://realcut.ai/api/service/stamps?sha256=<the file’s SHA-256, 64 hex>
GET https://realcut.ai/verify/{code}.json
Real Cut as plain text for any model: realcut.ai/llms.txt
Opens at launchhttps://realcut.ai/api/service/errors.json
{
"shape": {
"rest": "{\"error\": code, ...fields}",
"mcp": "a tool result with isError: true and structuredContent {\"error\": code, ...fields}; transport faults as JSON-RPC errors"
},
"errors": [
{
"status": 404,
"code": null,
"when": "Before launch, at agents.json, terms.json and errors.json; the body is empty",
"next": "That address opens at launch. Read it again then."
},
{
"status": 400,
"code": "parse_error",
"jsonrpc": -32700,
"when": "An MCP body that is not valid JSON",
"next": "Send valid JSON."
},
{
"status": 400,
"code": "invalid_request",
"jsonrpc": -32600,
"when": "An MCP-Protocol-Version Real Cut does not support, or a body that is not a JSON-RPC request",
"next": "Send MCP-Protocol-Version: 2025-06-18."
},
{
"status": 400,
"code": "terms_version_required",
"when": "A first run_sandbox call without terms_version",
"next": "Send terms_version: \"1.0\"."
},
{
"status": 401,
"code": "invalid_or_expired_connection",
"when": "No valid token: unknown, unused for 30 days or a year old. WWW-Authenticate carries resource_metadata. A revoked mandate answers mandate_revoked.",
"next": "Ask the owner again with request_mandate; a creator’s agent asks the creator again at the consent page."
},
{
"status": 403,
"code": "origin_not_allowed",
"when": "A request with a browser Origin Real Cut does not accept",
"next": "Call from your own server."
},
{
"status": 403,
"code": "mandate_not_active",
"when": "An account act before the mandate is given, or after its link ended",
"next": "Read get_mandate. Act only once it answers given."
},
{
"status": 403,
"code": "mandate_revoked",
"when": "The owner revoked the mandate",
"next": "Stop, and tell the owner. Nothing you do binds them now."
},
{
"status": 403,
"code": "outside_mandate",
"when": "An act the mandate does not include, or a switch the owner turned off",
"next": "Refused, and nothing binds the owner. Ask them to change the mandate."
},
{
"status": 403,
"code": "owner_action_required",
"when": "An act only the owner does: set, change or revoke the mandate, approve over the cap",
"next": "The answer carries the owner’s link as url. Bring it to them."
},
{
"status": 403,
"code": "person_only",
"when": "An act a person signed in does, such as setting the creator programme",
"next": "Ask a person on the account."
},
{
"status": 403,
"code": "personal_yes_only",
"when": "A creator’s personal yes, from an agent",
"next": "The answer carries the creator’s link. They give it in person."
},
{
"status": 403,
"code": "insufficient_scope",
"when": "An act past the rights given at the consent page",
"next": "Ask for that right at the consent page, or leave it to the person."
},
{
"status": 403,
"code": "approval_not_allowed",
"when": "approve_variation when the owner did not tick “Your agent may approve deliveries”",
"next": "Bring the delivery to the owner."
},
{
"status": 403,
"code": "connection_paused",
"when": "Real Cut paused the connection",
"next": "It waits for the owner. Tell them."
},
{
"status": 403,
"code": "code_verifier_mismatch",
"when": "get_mandate with a code_verifier that does not match the code_challenge",
"next": "Send the code_verifier you made the challenge from."
},
{
"status": 402,
"code": "over_cap",
"when": "A new act would pass the monthly cap",
"next": "Not charged. The act waits and Real Cut asks the owner at once. The answer carries over_cap_request, amount, remaining_this_month and resets_at; read get_brand_next_step for the answer. request_over_cap asks ahead of an act."
},
{
"status": 402,
"code": "payment_token_expired",
"when": "An agent token past its amount or its end date",
"next": "Ask your wallet for a new one. The cap does not move."
},
{
"status": 409,
"code": "free_first_ad_used",
"when": "This business has had its free first ad",
"next": "Start a plan, within the cap."
},
{
"status": 409,
"code": "personal_yes_needed",
"when": "A creator act that waits on the likeness release, the tax form or the payout account",
"next": "Send the creator their status_url. They give it in person."
},
{
"status": 409,
"code": "token_already_issued",
"when": "A second get_mandate with the code_verifier, after the token was handed over",
"next": "Use the token you hold. If it is lost, the owner re-issues it in Your agents."
},
{
"status": 422,
"code": "outside_service_area",
"when": "A business outside the US and Canada",
"next": "request_mandate answers this before any link is made."
},
{
"status": 202,
"code": "free_first_ad_queued",
"when": "This week’s 5 free first ads are taken",
"next": "Not refused: it waits in line. The answer carries starts_week_of (a Monday, UTC)."
},
{
"status": 200,
"code": "run_failed",
"when": "read_sandbox_run answers status failed; the run does not count toward the day",
"next": "Call run_sandbox again."
},
{
"status": 429,
"code": "slow_down",
"when": "get_mandate or read_sandbox_run read sooner than retry_after_seconds",
"next": "Wait retry_after_seconds, then read again."
},
{
"status": 429,
"code": "sandbox_daily_limit",
"when": "This agent has used today’s sandbox runs",
"next": "The answer carries limit and resets_at. Read the last run; run again after resets_at."
},
{
"status": 429,
"code": "day_budget_reached",
"when": "The public doors’ day budget for this network address is spent; on the MCP a tool result with isError and this code",
"next": "Try again after resets_at."
},
{
"status": 404,
"code": "not_found",
"when": "verify_stamp, or /verify/{code}.json, for a code Real Cut never issued; the body is {\"status\":\"not_found\"}",
"next": "Check the code, or send the file’s sha256."
},
{
"status": 405,
"code": "method_not_allowed",
"when": "A method the address does not take, such as GET on the MCP",
"next": "Use POST on the MCP; OpenAPI names each route’s method."
},
{
"status": 413,
"code": "request_too_large",
"when": "A request over 128 KB",
"next": "Send less, in more requests."
},
{
"status": 415,
"code": "application_json_required",
"when": "A body without Content-Type: application/json",
"next": "Send JSON with that header."
},
{
"status": 406,
"code": "application_json_response_required",
"when": "An Accept header without application/json",
"next": "Accept application/json."
},
{
"status": 503,
"code": "temporarily_unavailable",
"when": "Real Cut could not answer. An act may or may not have been done.",
"next": "Read your state first (get_mandate’s spent_this_month, or get_brand_billing), then retry with the same idempotency key."
}
]
}
Real Cut as plain text for any model: realcut.ai/llms.txt
Add the account address below in an agent that supports custom OAuth connectors. Sign in on Real Cut with the verified email linked to your brand or creator application. If you have both roles, choose one workspace for this connection, then its permissions. A creator needs no brand. Start with get_brand_next_step for a brand or get_creator_status for a creator. Manage or disconnect it on that workspace’s Agents page; it cannot pay or give personal approvals.
Sign in with the email you use for your brand or creator application.
For your brand
Open your brand’s Agents page. When scoped keys are available, choose Manage agent connections, review the permissions and expiry, and create a key for your own account. Revoke it on the same page.
Use your private status link to manage your agent’s access. An agent can also connect with the status_token returned by apply_as_creator; you choose the permissions and expiry. Sign in below only if you need to find your existing creator page.