Attribura

MCP tool catalog

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.

Brand & personas

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_contextread

Read the whole { brand, personas } bundle. The first call in any content job.

save_brandwrite

Upsert the brand. Replaces the whole row — read it first, send back every field you want to keep.

save_personawrite

Write 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_personawrite

Remove one persona by id.

Creatives & library

Everything that lands on the Board for you to review and publish — finished media, slideshow decks, and shooting briefs you film yourself.

list_creativesread

Browse the library, newest first, optionally filtered by status.

update_creativewrite

Edit a creative's title, hook, caption or status — e.g. mark it ready once you approved it.

push_briefwrite

Create a shooting brief: the shot list to film plus the script to record, readable from a phone.

push_creativewritestdio only

Upload 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 only

Upload 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.

Revenue & attribution

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_overviewread

Headline revenue: 30-day and all-time totals broken down by source.

get_performanceread

The money-per-post table — every post ranked by the revenue it drove. The core view.

get_revenue_eventsread

Itemized purchases and renewals, each joined back to the post that drove it.

get_store_salesread

Apple'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_summaryread

The “how did you hear about us?” rollup: verified share vs dark social, per channel.

list_self_reportsread

The individual self-report answers behind that rollup.

get_revenue_breakdownread

Where the money came from: by cash source, by attribution method with its confidence, by channel — including the money nothing explains.

get_analyticsread

Apple's own store performance: installs, proceeds, impressions, countries and period-over-period change. Reads one app or every app on the account.

get_store_funnelread

Impressions → product page views → installs per traffic source, with the rates Apple's numbers actually support.

get_onboarding_funnelread

The 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_retentionread

Day 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.

Reputation & replies

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_reputationread

The snapshot: mentions held, how many carry words vs stars only, the star histogram, and how many reviews have no answer.

list_mentionsread

The 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_ratingread

The public star rating per storefront, with yesterday's reading beside it. A null average means nobody rated — never zero stars.

draft_replywrite

Write a reply to one review. Saved as a draft; nothing is published until someone sends it.

list_repliesread

The ledger of replies you sent — drafted, published, refused — with the review's words beside each row.

send_replywrite

Publish a draft. The store is read first and the send is refused if it would replace an answer you did not write.

cancel_replywrite

Call a draft off, or take a published reply back down. The row is kept either way.

Projects & connections

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_projectsread

Every project on the account with its id and name — the names the `project` argument takes.

get_coverageread

Which marketing fronts a project actually covers, as facts rather than a score.

get_integrations_healthread

Every connector's state and last error. Check it first when numbers look frozen — an expired token stops importing silently.

Content & posts

The posts themselves — what went out, how it performed, and (soon) the board that decides what to write next.

list_contentread

Imported posts with their latest engagement stats and ready-to-share tracked links.

get_content_configread

Everything needed before writing a post in one call: brand, personas, mechanic/topic banks, burnt shapes.

list_ideasread

The idea bank: what should be written next, including why a rejected idea was killed.

claim_ideawrite

Claim an idea before drafting it, so two sessions cannot write the same one.

mark_postedwrite

Record that a post went out on one platform. Idempotent per (post, platform, day).

link_creativewrite

Confirm that an imported post IS the creative you wrote — what turns “this reel” into “this reel earned X”.

list_accountsread

The accounts this project can post to — id, platform, handle, and whether the connection still works.

get_tiktok_creator_inforead

A 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_creativewrite

Post 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_jobsread

Where each send got to. On a published or drafted job, the note explains how it landed — read it either way.

cancel_publishwrite

Call 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_keywordwrite

Give 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_linksread

Tracked short links with their total click counts, destination, and the post each is tied to.

list_clicksread

Individual click events with country, device, os and bot flag. No IP is ever stored.

App Store keywords (ASO)

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_briefread

Start 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_keywordsread

The tracked set: rank, 7-day trend, popularity, difficulty and relevance per (keyword, storefront) pair. Filterable by storefront.

get_keyword_historyread

One keyword's rank series over a window, plus the competitors that held the slate and how often each appeared.

get_keywords_fieldread

The packed 100-character keywords field for ONE storefront, best-observed-rank first, with what did not fit. Storefront is required.

get_listingread

One locale's App Store listing with per-field editable / lock_reason — check it before drafting a title nobody can apply.

suggest_keywordsread

Candidate terms mined from your own live listing. Reads App Store Connect on every call, so don't poll it.

update_listingwrite

Push 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_versionwrite

Open a new App Store version — the draft that unlocks every field a live listing freezes. Submits nothing, releases nothing.

list_notesread

What 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_notewrite

Record 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_notewrite

Remove one note that was wrong. Notes are never edited: delete, then add again.

track_keywordswrite

Start tracking (keyword, storefront) pairs. Each one is an Apple request every night, forever — the server refuses a batch that costs too much.

untrack_keywordwrite

Stop 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.