58 tools ship today, 56 of them over the hosted server, and 35 of those answer a read-only token. read means a read-only token can call it; write means that token gets a 403 and you need a full one — the two are the same fact, since the backend gates on the HTTP method the tool uses underneath. Grouped by the job, not by the order they were written.
The context an agent reads before it writes a single word: what you sell, how it sounds, and who you are talking to at each level of awareness.
get_contextreadRead the whole { brand, personas } bundle. The first call in any content job.
save_brandwriteUpsert the brand. Replaces the whole row — read it first, send back every field you want to keep.
save_personawriteWrite a persona — the depth ladder, the emotional arc, the awareness-stage angles. Pass an id to edit one, leave it out to add one.
delete_personawriteRemove one persona by id.
Everything that lands on the Board for you to review and publish — finished media, slideshow decks, and shooting briefs you film yourself.
list_creativesreadBrowse the library, newest first, optionally filtered by status.
update_creativewriteEdit a creative's title, hook, caption or status — e.g. mark it ready once you approved it.
push_briefwriteCreate a shooting brief: the shot list to film plus the script to record, readable from a phone.
push_creativewritestdio onlyUpload a finished meme/image/video from the local disk into the library. Pass the board slug for anything already on the board, or the upload forks a second creative.
Reads a file off your local disk, so the hosted server cannot offer it — it exists only on the stdio server in mcp/. Over HTTP, upload with POST /v1/creatives (multipart) instead.
push_slideshowwritestdio onlyUpload an ordered deck of slides (TikTok photo mode / IG carousel) as one creative.
Reads a file off your local disk, so the hosted server cannot offer it — it exists only on the stdio server in mcp/. Over HTTP, upload with POST /v1/creatives (multipart) instead.
Which content actually made money, and how confident we are about the link. Every tool here is a GET, so a read-only token covers the whole domain.
get_overviewreadHeadline revenue: 30-day and all-time totals broken down by source.
get_performancereadThe money-per-post table — every post ranked by the revenue it drove. The core view.
get_revenue_eventsreadItemized purchases and renewals, each joined back to the post that drove it.
get_store_salesreadApple's own sales, line by line: day, storefront, product, units, and what you were paid in that country's currency. The only revenue feed with a country in it.
get_self_report_summaryreadThe “how did you hear about us?” rollup: verified share vs dark social, per channel.
list_self_reportsreadThe individual self-report answers behind that rollup.
get_revenue_breakdownreadWhere the money came from: by cash source, by attribution method with its confidence, by channel — including the money nothing explains.
get_analyticsreadApple's own store performance: installs, proceeds, impressions, countries and period-over-period change. Reads one app or every app on the account.
get_store_funnelreadImpressions → product page views → installs per traffic source, with the rates Apple's numbers actually support.
get_onboarding_funnelreadThe in-app onboarding, step by step, split by the channel each run said it came from — then on into trial and paid. Steps above the “how did you hear about us?” question carry no split: a run that quit before answering never gave one.
get_retentionreadDay 1, Day 7 and Day 28 retention by install cohort, and the same split by the channel each install said it came from. The number Apple never gives: it has no cohort and no device id, so the iOS SDK (0.4.0+) reports the opens itself. A figure is null until that day is over, never a zero.
What people say about the app and what you say back. Two numbers live here and they are not the same: the store's public star rating, and the average of the reviews collected. Writing a reply and publishing one are two separate calls — an agent can draft, only a person publishes.
get_reputationreadThe snapshot: mentions held, how many carry words vs stars only, the star histogram, and how many reviews have no answer.
list_mentionsreadThe reviews themselves, newest first. answered:'no' is the reply backlog; 'pending' means an answer is written and the store has not shown it yet.
get_store_ratingreadThe public star rating per storefront, with yesterday's reading beside it. A null average means nobody rated — never zero stars.
draft_replywriteWrite a reply to one review. Saved as a draft; nothing is published until someone sends it.
list_repliesreadThe ledger of replies you sent — drafted, published, refused — with the review's words beside each row.
send_replywritePublish a draft. The store is read first and the send is refused if it would replace an answer you did not write.
cancel_replywriteCall a draft off, or take a published reply back down. The row is kept either way.
Which projects this account holds, and whether the connectors feeding them are still alive. Most read tools take a `project` argument, and several take `scope: 'all'` to answer for every project at once.
list_projectsreadEvery project on the account with its id and name — the names the `project` argument takes.
get_coveragereadWhich marketing fronts a project actually covers, as facts rather than a score.
get_integrations_healthreadEvery connector's state and last error. Check it first when numbers look frozen — an expired token stops importing silently.
The posts themselves — what went out, how it performed, and (soon) the board that decides what to write next.
list_contentreadImported posts with their latest engagement stats and ready-to-share tracked links.
get_content_configreadEverything needed before writing a post in one call: brand, personas, mechanic/topic banks, burnt shapes.
list_ideasreadThe idea bank: what should be written next, including why a rejected idea was killed.
claim_ideawriteClaim an idea before drafting it, so two sessions cannot write the same one.
mark_postedwriteRecord that a post went out on one platform. Idempotent per (post, platform, day).
link_creativewriteConfirm that an imported post IS the creative you wrote — what turns “this reel” into “this reel earned X”.
list_accountsreadThe accounts this project can post to — id, platform, handle, and whether the connection still works.
get_tiktok_creator_inforeadA TikTok account's own state, for a screen someone reads — the privacy levels open to it, whether comments/duet/stitch are off, the longest video it may post. Read live.
publish_creativewritePost a reel to one or more connected accounts through the platform itself. Name them by qualified handle (tiktok:@tallytape), by bare handle, by platform, or by id. The landed post is linked to its creative automatically. TikTok also needs the creator's own choices — a privacy level they picked, never a default.
list_publish_jobsreadWhere each send got to. On a published or drafted job, the note explains how it landed — read it either way.
cancel_publishwriteCall off a send that has not left the queue.
reserve_keywordwrite⚠️ NOT ASO. Reserves an Instagram COMMENT-GATE word (“comment HEME”) and creates the comment→DM rule.
release_keywordwriteGive a reserved comment word back. Rare: a word viewers have already seen on an endcard stays spent.
The tracked short links and the raw redirect traffic behind every click count on the panel.
list_linksreadTracked short links with their total click counts, destination, and the post each is tied to.
list_clicksreadIndividual click events with country, device, os and bot flag. No IP is ever stored.
Rank tracking, the live store listing, and Apple's 100-character keywords field. These tools GET the information and APPLY a change — none of them scores, ranks or proposes wording, because the reasoning belongs in your session where you can see it. Note that tracking a term is a standing nightly commitment, not a one-off insert.
keyword_briefreadStart here. One call for one storefront + locale: the listing, the tracked set with its scores, the packed field, the candidates and the budget.
list_tracked_keywordsreadThe tracked set: rank, 7-day trend, popularity, difficulty and relevance per (keyword, storefront) pair. Filterable by storefront.
get_keyword_historyreadOne keyword's rank series over a window, plus the competitors that held the slate and how often each appeared.
get_keywords_fieldreadThe packed 100-character keywords field for ONE storefront, best-observed-rank first, with what did not fit. Storefront is required.
get_listingreadOne locale's App Store listing with per-field editable / lock_reason — check it before drafting a title nobody can apply.
suggest_keywordsreadCandidate terms mined from your own live listing. Reads App Store Connect on every call, so don't poll it.
update_listingwritePush listing text to the App Store, one locale at a time. Only the fields you send are written; each one comes back with Apple's own verdict.
create_app_versionwriteOpen a new App Store version — the draft that unlocks every field a live listing freezes. Submits nothing, releases nothing.
list_notesreadWhat changed and when, newest first: a listing field written through Attribura (before → after), a version Apple reports on sale, a note someone added. Read a rank move next to the note that precedes it.
add_notewriteRecord a change made elsewhere — a price, a campaign, a partnership — on its date, so the charts and the history carry it. Listing writes are noted on their own, and so is every version once Apple reports it on sale.
delete_notewriteRemove one note that was wrong. Notes are never edited: delete, then add again.
track_keywordswriteStart tracking (keyword, storefront) pairs. Each one is an Apple request every night, forever — the server refuses a batch that costs too much.
untrack_keywordwriteStop tracking one pair and delete its rank history. One per call — there is no bulk delete.
Greyed rows are written but not released — they are not on the hosted server, so an agent will not find them. They are listed so you know what is coming and, more usefully, so nobody wastes a session guessing at a tool name that does not answer yet.
The App Store keyword tools have a page of their own, because they are the only ones whose reads are free but whose writes book work every night from then on — worth reading before you let an agent add keywords in a loop. For pulling the same data over plain HTTP instead of tools, see the Data API.