{"name":"Runner","description":"Runner is an AI growth team a business runs inside limits its owner sets. Through this agent an outside assistant can ask about an outreach message Runner sent and be answered only from the stored records that message cites, or decline further messages. The signed reference token from the message is the whole authority: it names one message, one recipient and one sender, and nothing else is read. Each answer is decided by the sender's sharing policy, which says share, ask the owner, or refuse by the class of each fact, and every decision is recorded. A teammate's own assistant connects to Runner's workspace over MCP instead, with OAuth, where every call is checked against that person's role.","version":"0.31.0","documentationUrl":"https://www.runtheworld.ai/guides/sell-to-ai-agents","provider":{"organization":"SHMAPLEX","url":"https://www.runtheworld.ai"},"supportedInterfaces":[{"url":"https://app.runtheworld.ai/api/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false},"defaultInputModes":["application/json"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"outreach-case.answer","name":"Answer a question about a Runner outreach message","description":"Answers from the stored, cited records the message's case names; says the sender's owner can be asked when a fact is held back; refuses what is not shareable. Nothing is generated, fetched or changed. Send one data part with action \"answer\", the token, and either a question or a claimId from the message's JSON-LD block. The token is the `token` parameter of the decline URL in the message's JSON-LD block (schema.org `UnRegisterAction`), the same one its unsubscribe link carries.","tags":["outreach","sales","evidence","buyer-assistant","sharing-policy"],"examples":["{\"action\":\"answer\",\"token\":\"<token>\",\"question\":\"Who at the sender has worked with a business like ours?\"}","{\"action\":\"answer\",\"token\":\"<token>\",\"claimId\":\"<claimId>\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"outreach-case.decline","name":"Decline further messages from this sender","description":"Records the recipient's no. It is the same opt-out a one-click unsubscribe records, through the same write, so the no sticks. Send one data part with action \"decline\" and the token. The token is the `token` parameter of the decline URL in the message's JSON-LD block (schema.org `UnRegisterAction`), the same one its unsubscribe link carries.","tags":["outreach","consent","unsubscribe","decline"],"examples":["{\"action\":\"decline\",\"token\":\"<token>\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"deal-room.ask","name":"Ask a deal room you were invited into","description":"Your company's agent asks the room the host invited it into. Each host's agent answers from its own records under the host's sharing policy: a shared answer carries its source, a held answer says the owner can be asked, and what is not shareable with an outside company is refused. Nothing is generated. Send one data part with action \"room-ask\", the invite, and a question. The invite is the token a host of the room issued for your company (ADR-0315); it expires, the host can end it, and it reaches one room only. Given a room link such as `https://app.runtheworld.ai/share/rooms#<invite>`, this card is at the link's origin and the invite is everything after the `#`.","tags":["deal-room","guest","sales","sharing-policy","agent-to-agent"],"examples":["{\"action\":\"room-ask\",\"invite\":\"<invite>\",\"question\":\"Who on your side signs a wholesale agreement?\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"deal-room.read","name":"Read your side of a deal room","description":"Reads back what the room holds for your invite: your questions, every answer to them, and the hosts' direct answers to anything that was held. Nothing a host asked a colleague, nothing from another invite. Send one data part with action \"room-read\" and the invite. The invite is the token a host of the room issued for your company (ADR-0315); it expires, the host can end it, and it reaches one room only. Given a room link such as `https://app.runtheworld.ai/share/rooms#<invite>`, this card is at the link's origin and the invite is everything after the `#`.","tags":["deal-room","guest","agent-to-agent"],"examples":["{\"action\":\"room-read\",\"invite\":\"<invite>\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"deal-room.plan","name":"Work the room's mutual action plan","description":"The plan both companies work from: steps, whose each is, and dates. Read it, suggest a step for either side (it counts once a person on the host's side accepts it), and tick or reopen a step on your own side. You cannot tick the host's steps. Every change is recorded and both sides read the record. Send one data part with action \"room-plan\", the invite, and an op: \"read\"; \"propose\" with side (\"guest\" or \"host\"), title and an optional dueOn (YYYY-MM-DD); \"done\" or \"reopen\" with stepId. The invite is the token a host of the room issued for your company (ADR-0315); it expires, the host can end it, and it reaches one room only. Given a room link such as `https://app.runtheworld.ai/share/rooms#<invite>`, this card is at the link's origin and the invite is everything after the `#`.","tags":["deal-room","guest","mutual-action-plan","agent-to-agent"],"examples":["{\"action\":\"room-plan\",\"invite\":\"<invite>\",\"op\":\"read\"}","{\"action\":\"room-plan\",\"invite\":\"<invite>\",\"op\":\"propose\",\"side\":\"guest\",\"title\":\"Send our security questionnaire\",\"dueOn\":\"2026-11-20\"}","{\"action\":\"room-plan\",\"invite\":\"<invite>\",\"op\":\"done\",\"stepId\":\"<stepId>\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"deal-room.documents","name":"Read the documents shared with the room","description":"The documents the host shared with your company: the deck, the price sheet, the case study. Without a documentId, lists them; with one, returns its words as text. A document the host kept for its own team is never listed, and an answer from one is held for the person who added it. Send one data part with action \"room-documents\", the invite, and optionally a documentId. The invite is the token a host of the room issued for your company (ADR-0315); it expires, the host can end it, and it reaches one room only. Given a room link such as `https://app.runtheworld.ai/share/rooms#<invite>`, this card is at the link's origin and the invite is everything after the `#`.","tags":["deal-room","guest","documents","agent-to-agent"],"examples":["{\"action\":\"room-documents\",\"invite\":\"<invite>\"}","{\"action\":\"room-documents\",\"invite\":\"<invite>\",\"documentId\":\"<documentId>\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"deal-room.record","name":"Get a record of your side of the room you can verify","description":"Your side of the room as a hash chain you can check without trusting Runner: your questions, every answer and direct answer to them, and the plan changes you could see, each a canonical JSON entry chained with SHA-256 (sha256-chain-v1). Every room-read returns the chain's head and count; keep the heads you are given, and any later record must still pass through each of them. Send one data part with action \"room-record\" and the invite. The invite is the token a host of the room issued for your company (ADR-0315); it expires, the host can end it, and it reaches one room only. Given a room link such as `https://app.runtheworld.ai/share/rooms#<invite>`, this card is at the link's origin and the invite is everything after the `#`.","tags":["deal-room","guest","audit","verifiable-record","agent-to-agent"],"examples":["{\"action\":\"room-record\",\"invite\":\"<invite>\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"talent.search","name":"Find a talent to book","description":"Searches Runner's talent directory: AI characters and creators, each approved by Runner, whose doors take offers on their own signed rate cards. Filter by category (the card vocabulary, e.g. automotive, travel_hotels, food_restaurants), budget in minor units with its currency (a door never converts), an open day (date, YYYY-MM-DD) or part of the name (q). Each door comes back with its name, kind, bio, the categories it takes, its smallest package's price, its next open day, audience figures only where Runner measured them (with the day), what Runner checked, and its address. Use the address as given, or send `from` with a \"talent-offer\" to that door. Send one data part with action \"talent-search\" and any filters; locale is optional. The same read as GET /api/public/talent-directory.","tags":["talent","booking","search","agent-to-agent"],"examples":["{\"action\":\"talent-search\",\"category\":\"automotive\"}","{\"action\":\"talent-search\",\"category\":\"travel_hotels\",\"budget\":3000000,\"currency\":\"USD\",\"date\":\"2026-12-01\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"talent-door.offer","name":"Make an offer to book a talent","description":"Offer to book a talent (a product's AI character or a creator) at its door, runr.life/<door>, on the talent's own rate card. An offer under the smallest package, in a category the talent never takes or asking for a term it never agrees to is declined at once with the reason and the way forward, and nothing is kept. Any other offer sends a six-digit code to the work address given; verify it and the day is held, a deal room opens on your company's account, and `roomLink` comes back (the invite the room skills take). An offer that matches the talent's signed card books itself: the verdict is \"book\", the room holds the agreement for a person at your company to sign, and the deposit is paid through the room's payment link. A person on the talent's side answers every other held offer. Send one data part with action \"talent-offer\", the door, and op \"offer\" with packageKey, productionDate (YYYY-MM-DD), category, offeredMinor, currency, companyName and email (addOns, asks, otherTerms, contactName (who signs), locale and from optional; from is the token a Runner link to this door carried, sent back unchanged); or op \"verify\" with challengeId, email and code. The same as POST /api/talent/<door>/offer and /offer/verify.","tags":["talent","booking","deal-room","agent-to-agent"],"examples":["{\"action\":\"talent-offer\",\"door\":\"<door>\",\"op\":\"offer\",\"packageKey\":\"<packageKey>\",\"productionDate\":\"2026-12-01\",\"category\":\"automotive\",\"offeredMinor\":2500000,\"currency\":\"USD\",\"companyName\":\"Example Motors\",\"email\":\"partnerships@example.com\"}","{\"action\":\"talent-offer\",\"door\":\"<door>\",\"op\":\"verify\",\"challengeId\":\"<challengeId>\",\"email\":\"partnerships@example.com\",\"code\":\"123456\"}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]}]}