Tempio Docs
API

Resources and prompts

Two primitives beside the tools

A tool is something an agent calls. MCP has two more primitives, and the same Tempio server serves both beside its capabilities, built per request from the same verified credential.

A resource is a document, addressed by a URI of Tempio's own scheme. The URI is an identity, not a URL: nothing fetches it over the network, the client asks this server for it by name. A client that supports resources lets a person attach one to a conversation the way they attach a file, and the model then has the document in front of it without spending a tool call on it.

A prompt is a task, not a document. Asking for one composes the workspace context and the relevant playbook into a ready message and hands it back, and names the resources it embedded so a client can attach those too. A prompt does not act; it sets a model up to.

Both are filtered to the scopes on your credential exactly as the tool list is, and both read the workspace through the same org-scoped tool layer a tool call goes through. An identifier in an argument proves nothing: a record your workspace does not own is not found, whether it is asked for as a resource, as a prompt argument or as a tool parameter.

The resources

Every resource the Tempio MCP server serves, with the URI it is addressed by, the scope a credential needs for it, and what it holds.
ResourceAddressWhat it holds
playbooks
Playbook index
read · text/markdown
tempio://playbooks
One document
Every playbook Tempio publishes, one line each with its URI, its summary and the date a person last confirmed it. Read this first to see what the shelf holds, then read the one you need at its own URI.
playbook
A playbook
read · text/markdown
tempio://playbooks/{platform}/{topic}
A family; the braces are filled in per document
One published playbook as markdown: what works on a platform, or how one part of Tempio itself works. The first line says when it was last reviewed, the sources are listed at the end, and a review older than ninety days is called out in the warnings block rather than left for the reader to notice.
help
The Tempio catalogue
read · application/json
tempio://help
One document
The root `tempio_help` answer as JSON: the entity model, the entity x action matrix this credential can call, the draft lifecycle, the money and null rules, the warning classes, and the resources and prompts it can reach. The same answer the tool gives, as a document a client can attach to a conversation.
account_brief
An account brief
read · text/markdown
tempio://workspace/accounts/{adAccountId}/brief
A family; the braces are filled in per document
What Tempio has learned about one connected ad account from its last ninety days, as markdown: coverage, totals, the recent twenty-eight days against the twenty-eight before them, the biggest campaigns, and the notes saying why a figure is missing. Money is minor units of the account's own currency. Only the accounts this credential's workspace owns are listed or readable.
timeline
The workspace timeline
read · application/json
tempio://workspace/timeline
One document
The workspace's operating calendar for today and the next 60 days, as JSON: every ad account with its resolved daily cap and yesterday's spend, and under each one a lane per live campaign and per planned flight — its flight dates, what it is running at per day, its phases and their multipliers, its envelope, every goal with a verdict, how it is pacing against plan, and any drafted flight still waiting at the gate. The same answer `get_timeline` gives for that window, as a document a client can attach to a conversation. Money is integer minor units of each account's own currency and no total crosses two of them; a ratio is null when its denominator is zero and is never zero. Only the accounts this credential's workspace owns, and this credential's person may reach, appear at all.
brand_kit
The brand kit
read · text/markdown
tempio://workspace/brand-kit
One document
The workspace's brand kit as markdown, read once per session before writing any creative copy: the six colour roles with their hex, the intent a template reads each for and the contrast a composite draws text in; the typography and its descriptor; the voice lines; the compliance-line template with its permit slots; the forbidden words; the labelled products; and every preset this workspace can generate with, one line each. When the workspace has no kit, it says so and how to make one.

6 resources. A client that lists them sees only the ones its credential's scopes reach, and a family lists only the documents that credential's workspace owns.

Listing and reading are the ordinary MCP calls. A family — a URI with braces in it — enumerates its members through the same list call, so a client discovers the published playbooks and the ad accounts your workspace owns rather than guessing at an address:

{ "method": "resources/list" }
{ "method": "resources/read", "params": { "uri": "tempio://playbooks" } }
{ "method": "resources/read", "params": { "uri": "tempio://playbooks/tempio/draft-lifecycle" } }
{ "method": "resources/read", "params": { "uri": "tempio://workspace/accounts/1d9c4e57-3a20-4b6f-8e11-77c0d4a9b312/brief" } }

The playbooks are the playbooks shelf: what Tempio keeps about a platform, and what it keeps about its own mechanics. The catalogue is the root tempio_help answer as JSON, so a client can attach the whole surface description once instead of calling for it. An account brief is the ninety-day read of one connected ad account, in that account's own currency and minor units.

How the age of a document reaches you

Every playbook carries the day a person last confirmed it against the platform, on its first line. A document that has gone more than ninety days without a review says so rather than leaving a reader to work it out from the date, and it says so twice on purpose:

  • in _meta.warnings on the read result, as the same warning objects the tool envelope carries — a code, a class, a severity and a sentence written as what to do about it;
  • and as a trailing block in the markdown itself, opened by the marker <!-- warnings -->, one line per warning and the word None. when there is nothing wrong.

Most clients render the text and drop the metadata, which is the whole reason for the second copy. The marker is always present, so "no warnings" and "no warnings block" are different things and a reader can tell them apart.

The two codes this page's documents raise are playbook_stale — reviewed more than ninety days ago, so quote the review date when you lean on the advice — and playbook_missing, which travels with an answer about a platform that has no playbook yet, so a model knows it is working from its own knowledge there rather than from Tempio's. Both are info: they qualify an answer, they never withhold one. The warning classes are the same ones every tool result uses.

The prompts

Every prompt the Tempio MCP server offers, the arguments each one takes, and what it composes.
PromptArgumentsWhat it composes
plan_flight
Plan a flight
read
  • brief (required) — What the flight is for, in the words the person used: the product, the audience, the outcome they want.
  • platforms (optional) — Comma-separated platforms to plan across, e.g. "meta,google". Omit to use every platform this workspace has connected.
  • budgetMinor (optional) — Total budget as an INTEGER in minor units (cents), e.g. "500000" for $5,000.00. Never a decimal.
  • currency (optional) — ISO 4217 code the budget is in, e.g. "AUD".
  • startDate (optional) — YYYY-MM-DD.
  • endDate (optional) — YYYY-MM-DD.
Turn a brief into a media plan: the workspace's connections and accounts with their currencies, the planning section of each named platform's playbook, Tempio's own planning method and the money rules. It ends with the instruction to build the plan through create_media_plan and upsert_plan_item.
review_account
Review an account
read
  • adAccountId (required) — The Tempio ad account id, as list_ad_accounts returns it. An account outside this workspace is not found.
Read one ad account the way Tempio would: its brief, its last twenty-eight days of metrics with every warning stated before a number, and the measurement section of its platform's playbook.
pace_review
Review the pace
read
  • from (optional) — First day of the window, YYYY-MM-DD. Defaults to today in the workspace's reporting zone.
  • to (optional) — Last day, YYYY-MM-DD. Defaults to 59 days after `from`.
  • adAccountId (optional) — One ad account, as list_ad_accounts returns it. Omit for every account this credential reaches; an account outside this workspace is not found.
Read the workspace's timeline and the pacing of every campaign that is not on pace, then plan the budget moves that answer it — ending with propose_reallocation in dry run, so the plan is drafts a person decides and never a change anybody made.
explain_warnings
Explain warnings
read
  • warnings (required) — The warnings array as the envelope carries it, as JSON, e.g. [{"code":"never_synced","class":"stale_sync","severity":"degraded","message":"..."}]. A bare array of code strings is accepted too.
Turn the warnings array off a tool result into a paragraph a person can act on: what each code means, what its class and severity say about the answer it travelled with, and what to do next.
write_change_brief
Write a change brief
read
  • correlationId (optional) — The correlationId draft_changes returned — the whole batch, in the order it applies. Give this or draftId.
  • draftId (optional) — One draft, by id; its batch is read around it. Resolved against the two hundred most recent drafts in this workspace, so name the correlationId for anything older.
Write the description a reviewer reads at the gate: the drafts in the batch with what each one changes, the relevant part of the platform's playbook, and Tempio's own draft lifecycle. Name either the batch or one draft in it.
creative_brief
Write a creative brief
read
  • presetKey (required) — The preset to write for, as list_creative_presets names it, e.g. prize_hero or product_shot.
  • brief (required) — The promo or the plan item in the person's own words: what is on offer, to whom, and until when.
  • planItemId (optional) — A media plan item of this workspace, as get_media_plan returns it, to write the creative for. Its flight, platform and budget are composed in.
  • permit (optional) — The promotion's permit code exactly as issued, e.g. TP/04821. Filled into the brand kit's compliance-line template; never invented.
  • quantity (optional) — How many stills to generate once a headline is chosen, as a whole number from 1 to 10, e.g. "4". Defaults to 1.
Turn a promo or a plan item into the copy fields for one preset, in the brand kit's voice: the kit, the preset's fields and composition rules, the house rules for creative copy and the plan item when one is named. It asks for five headline variants and the compliance line filled from the permit (or marked missing), then generate_creatives once the person picks a headline.

6 prompts, every one of them a read. A prompt composes the workspace half of its answer through the same org-scoped tool layer a tool call goes through, so a record this credential's workspace does not own is not found.

Every one of them reads. None of them writes, drafts or approves: a prompt composes the message, and whatever the model does next goes through the capabilities under the scopes the credential actually holds.

Turning a brief into a plan

Composes the workspace's connections and ad accounts with their currencies, the planning section of each named platform's playbook, Tempio's own planning method, and the money rules — then ends by telling the model to build the plan through the planner's own capabilities.

{
  "method": "prompts/get",
  "params": {
    "name": "plan_flight",
    "arguments": {
      "brief": "Spring intake for an Australian short-course provider, 25-54, enquiries",
      "platforms": "meta,google",
      "budgetMinor": "500000",
      "currency": "AUD",
      "startDate": "2026-09-21",
      "endDate": "2026-10-19"
    }
  }
}

The budget is an integer in minor units beside its currency, as it is everywhere else in Tempio: 500000 is 5,000.00 AUD. A decimal is refused at the argument rather than rounded.

Reading one account

Composes that account's brief, its last twenty-eight days of metrics with every warning stated before a number, and the measurement section of its platform's playbook.

{
  "method": "prompts/get",
  "params": {
    "name": "review_account",
    "arguments": { "adAccountId": "1d9c4e57-3a20-4b6f-8e11-77c0d4a9b312" }
  }
}

The metrics block in that message is platform-wide, not account-level. The metrics capability filters by date range and by platform and by nothing narrower, so the block covers every account your workspace holds on that platform, and the composed message says so over the figures and again in the task. Account-level figures come from the brief in the same message. The block narrows the day an account-scoped metrics read exists.

Reviewing the pace

Composes the workspace's calendar for a window you name — every ad account with its resolved daily cap and what it spent yesterday, and under each one every live campaign and planned flight with how it is tracking against plan — and then the day-by-day series for the campaigns that are off it, worst drift first.

{
  "method": "prompts/get",
  "params": {
    "name": "pace_review",
    "arguments": { "from": "2026-10-01", "to": "2026-11-30" }
  }
}

Every argument is optional. With no window it covers today and the next sixty days in your workspace's reporting time zone; naming one ad account narrows the whole message to it. At most ten campaigns are expanded into a full series, and the message says how many of how many that was, so you can ask for any of the rest by id. The task it hands the model ends at the allocator in dry run, which writes nothing: what that call would write is change requests waiting at the approval gate, and the task says so rather than letting a model report a budget as moved.

Making sense of a warnings array

Takes the warnings array off any result and turns it into a paragraph a person can act on: what each code means, what its class and severity say about the answer it travelled with, and what to do next.

{
  "method": "prompts/get",
  "params": {
    "name": "explain_warnings",
    "arguments": {
      "warnings": "[{\"code\":\"never_synced\",\"class\":\"stale_sync\",\"severity\":\"degraded\",\"message\":\"This connection has never finished a sync, so there is nothing behind these numbers yet — they are unknown rather than zero.\"}]"
    }
  }
}

A bare array of code strings is accepted too, because that is what an agent usually still has by the time it decides to ask.

Writing the brief a reviewer reads

Composes the drafts in a batch with what each one changes, the relevant part of the platform's playbook, and Tempio's own draft lifecycle. The output is the description a person reads at the gate before approving.

{
  "method": "prompts/get",
  "params": {
    "name": "write_change_brief",
    "arguments": { "correlationId": "3c7d5a90-1b48-4e62-a0f5-9d6c2e18b473" }
  }
}

Name either the batch or one draft in it. A draft in another workspace is not found, which is the same answer an id from another workspace gets anywhere else on this surface.

Writing the copy for a creative

Composes your workspace's brand kit — the brand-kit resource above, with its colour roles, voice, compliance-line template and forbidden words — the chosen preset's fields and composition rules, Tempio's rules for creative copy, and a plan item when you name one. The task asks for the preset's fields with five headline variants and the compliance line filled from the kit's template and your permit code.

{
  "method": "prompts/get",
  "params": {
    "name": "creative_brief",
    "arguments": {
      "presetKey": "prize_hero",
      "brief": "Win the gaming rig. Entries close Sunday 9pm.",
      "permit": "TP/04821",
      "quantity": "4"
    }
  }
}

presetKey and brief are required. Without a permit the compliance line is marked missing rather than invented, and the task holds off generating until a person supplies it; a still is generated only after someone picks a headline.

Clients that have neither

Resources and prompts are optional halves of the protocol and not every client implements them. Nothing is lost: the playbooks are also two capabilities on the tool surface, reading the same published documents and carrying the same warnings, so a client with tools alone gets the same text. The MCP reference has the capability catalogue and the scopes.