Fifty-four named outcomes. One call does one job and returns one envelope
with the cost, the freshness of the data behind it and the next tools
worth calling.
Credits come out of your organization's balance the moment your agent
calls a tool, and auto-reload keeps that balance topped up.
ToolWhat it doesPrice
Growth
onboard_product
Binds the product, collects the facts no source can supply, starts the social and product measurement connections, and kicks off the same six background jobs a browser onboard starts: the keyword bank, the tracked-account walk, the screenshot harvest, the end card, the first persona and the first reel.
Layers never receives your source code.
Free
manage_growth_landscape
Pins, removes and rescopes the accounts your product is measured against, and requests an explicit refresh or a full rebuild.
Curation is free. A rebuild is the same work as a refresh today, and priced the same, until a deeper rebuild ships.
Free, or 6 credits per forced refresh; 6 credits per rebuild
find_growth_opportunities
Returns the strongest tests to run now, each carrying the source post it came from, the effort and whether you have used it before.
Reading the standing queue starts no vendor call and no model call. Ask for the creative analysis a card is missing and it is made on the call and cached, so the next read of that card is free. The queue is empty until an owned account is connected and discovery scope is set, and it says so.
Free, or 2 credits per creative preview produced
plan_content_experiment
Turns one opportunity into an editable plan with a single controlled variable, a target account, a measurement window and a success gate.
Creative edits to the script, opening, caption or tags are free.
6 credits per new or restructured plan
generate_influencer
Creates one persona for the project from a gender, an age range and an optional one-line look. It returns the persona id straight away and draws the portrait in the background, usually inside a couple of minutes, and hands back a slate page showing every persona's face to give the person you work for.
Free, the same as making one in the Layers app. A completed persona fronts a reaction render.
Free
render_content
Four recipes, rendered from a plan revision or straight from a brief: reaction_demo films a persona reacting and then shows the app, slideshow_builder builds a deck from the project's own screens and keyword bank, static_ad draws one still ad image from the opening as its brief, and adapt_source remixes one post, where a TikTok source can be any public post. The brief directs the reaction formula, the scene, the caption treatment, the music, the app screenshots and the persona, and a plan render carries the same directions under an overrides block.
An unusable output is refunded. The finished job names an artifact at layers://artifacts/<id>, which is where the media, its dimensions and its content hash come back.
25 credits per usable image; 85 credits per usable slideshow; 200 credits per usable 10-second video; 400 credits per usable 20-second video
deliver_content_experiment
Prepares a rights cleared artifact and delivers it to a platform draft inbox, or posts it directly. TikTok is the built platform, and each further platform enters the same enum on its own. An artifact Layers rendered is deliverable from its id alone, because Layers wrote those bytes and hashes the stored object itself.
Draft mode ends in the platform inbox, where you make the final public action yourself.
Free, or 5 credits per delivery target
track_growth_experiment
Registers a post you published yourself as an experiment, keeping the hypothesis, the source lineage and the result together.
It records work that already happened.
Free
review_growth_results
Reads the evidence, writes the verdict against the account's own normal, and names the next controlled test.
Stored results are free, and a forced read that finds nothing new charges nothing.
Free, or 1 credit per forced provider read
halt
Stops queued and running work in scope and returns a receipt for every target it touched. Six scopes: one running job, one experiment, one social account, one paid campaign, one managed account, or the whole project. On a paid campaign it pauses delivery at the provider.
It never claims to delete a post that is already public.
Free
cancel_trial_auto_renewal
Previews the trial end date and what access runs to, then confirms the cancellation under the calling organization administrator and returns the subscription receipt.
It starts no other offer and no checkout.
Free
send_feedback
Sends a message to the founders, who read every one. A bug, a price you think is wrong, a capability you looked for and did not find, or something that worked. Attach it to the exact render, delivery, review or onboarding a result handed you, add a one-word verdict and an email address to answer at.
It works for any member of the workspace, including one whose organization has run out of credits or has billing paused. It returns an acknowledgment and nothing else.
Free
add_brand_asset
Puts one of your own product assets into the project from a public https URL: an app_screenshot a deck composites, an app_demo a reaction reel ends on, or an end_card it falls back to. Layers fetches the URL, checks the type and the size, and stores the bytes.
Free, because the render that uses the asset is what costs. It returns the bas_ id layers://brand-assets lists it under, and says which render gates the asset now clears.
Free
install_growth_measurement
Hands your coding agent the exact dependency, App ID, environment variable and init snippet for this product's platform, so it installs the Layers SDK in your own repository and no bot opens a pull request. Ship the build, call it again with verify, and it reads real events back and says whether the install is reporting.
Free on both actions. On the five web platforms the spec carries a prompt written for an agent to execute as written.
Free
generate_tracking_link
Mints a named link that records where every visitor came from. A label and tags are yours and stay inside Layers; campaign, source, medium, content and term ride the URL to the ad network unchanged; a payload of your own reaches the app on first launch. It lands on your store listing, or on your own address with the click id appended. Put it in a bio, a download button, an ad destination or an email.
Free. Every link is a stored row, so layers://tracking-links lists what you handed out and what each one did. Without the SDK reporting it attributes a click and a store tap; with the SDK reporting the same link resolves an install and its revenue back to the exact click. A product with no store URL on file is told that instead of handed a link that 404s, and configure_growth_measurement is the call that sets one.
Free
archive_tracking_link
Takes one link out of the working inventory, or puts it back. An archived link leaves the list and stays readable by its id.
Free, and it is not a brake: the URL keeps resolving, the click route keeps recording, and every count the link has already produced stays readable. A link archived by mistake is one restore away.
Free
configure_growth_measurement
Sets the four fields the click route reads for this product: the App Store URL, the Play Store URL, the fallback URL, and whether the iOS page asks for the tap that writes the click to the clipboard.
Free. This is the call that clears the only refusal the tracking link has, and the result says so. Name only the fields you are changing; a field you leave out keeps the value it has.
Free
manage_bio_page
Publishes a link-in-bio page for your product at .layers.click, made of the same tracking links. Store buttons that resolve to your listing at the moment somebody taps, your own web links, and your connected social profiles with their handles and avatars.
Free. The page arrives already made of your product: the icon, the name and the tagline off your own rows, an accent taken from your brand colors or out of your icon, and the store and web buttons for every address you have on file. It is rendered from those rows on every request, so an edit is live on the next visit with no publish step. Every button is a tracking link minted with all five labels a report groups by: source layers.click, medium bio, campaign the page address, and content what the button opens. A tap on the page attributes the way a tap on an ad does, and layers://bio-page reads back what each button did beside how many people opened the page.
Free
decline_next_step
Records the person's answer to an offer the next step made: no, or not before a date they name.
Free. Two offers can be answered, the ad account and the managed fleet, and both stop being raised once an answer is on file. A decline is forever; a not now needs the date it lapses on, because an offer that can never come back on its own is a decline in softer words. Saying yes is calling the tool the offer named, so there is no third answer here.
Free
record_mma_shipyard
Records one playtest, survey, release or mid-test experiment change for your app in MMA's Shipyard, beside its experiments.
Free. Send externalKey, your own stable key, and a repeat updates that record instead of adding one; a release updated this way dates each rollout or track change.
Free
update_mma_shipyard
Changes a playtest, a survey or a logged experiment change in MMA's Shipyard.
Free. A field left out keeps its value. Releases have no update: record a new one.
Free
set_mma_prototype_gates
Replaces your app's prototype gates, the playtest bars a title clears before soft launch.
Free. A signed-in person only; an agent key files an MMA decision to propose a change. Each gate is read against the newest done playtest recorded for it.
Free
create_mma_attachment_upload
Requests an upload for a screenshot, short video or PDF on an experiment or Shipyard record in MMA; your agent PUTs the bytes itself.
Free. Images up to 30 MB, video 200 MB, PDF 10 MB; 20 per record. The upload URL lasts 15 minutes. An externalKey makes a repeat return the same attachment.
Free
finalize_mma_attachment
Publishes an uploaded piece of evidence after MMA checks its size and type.
Free. A repeat call returns the same attachment. A key finalizes only its own uploads.
Free
exclude_mma_install
Takes a QA or test install out of your app's numbers in MMA, so installs, sessions, cohorts, retention and SDK revenue stop counting it.
Free. Send the install id the SDK sent from the test device and a reason. It has no undo. A repeat returns the stored record.
Free
list_mma_reviews
Lists your app's store reviews in MMA, newest first and deduped, with filters and a cursor to page.
Free. App Store reviews come from the RSS feed and App Store Connect; Google Play reviews come from the Play API. Filter by store, star range, app version and review date.
Free
get_mma_ratings
Reads your app's daily store ratings, per-version statistics and release markers in MMA.
Free. App Store version statistics count ratings received while the version was current; Google Play version statistics count written reviews on the version.
Free
get_mma_studio_brief
Reads the morning MMA brief: spend against caps, proven installs, revenue, ratings, alerts, tests due, decisions and releases.
Free. People and org-wide MMA API keys read the studio; an app-scoped key reads only its bound app. Every figure carries its n or source, with low-n marked below 30 observations. mmaUrl opens the Brief page.
Free
get_mma_cohorts
Reads install-day cohorts for your app in MMA: installs, proven and claimed installs, and returners on day 1, 3, 7, 14 and 30.
Free. Filter by campaign, ad set, network, country, platform or app version. A day N that has not ended reads as not mature, and totals carry 95% Wilson intervals.
Free
get_mma_retention
Reads the daily retention baseline, discovered dimensions and dimension slices for your app in MMA, with D1, D3, D7, D14 and D30 returners.
Free. Rates carry 95% Wilson intervals; D1 and D7 differences use Newcombe against the rest of the app, with Holm-corrected tests and a low-n flag.
Free
get_mma_insights
Reads the daily retention insight feed for your app or the apps you can access in the studio, newest day first, then score.
Free. Slice findings use 95% Wilson rates, Newcombe differences against the rest of the app and Holm-corrected D1 and D7 tests. Low-n slices produce no findings.
Free
get_mma_pockets
Reads healthy acquisition pockets, weak cut candidates and behavioral product pockets for your app or the apps you can access in the studio.
Free. Pockets rank by retained players per day, then cost per D7 player within each source currency. Cost is present only where the spend report carries the pocket keys; missing cost is null.
Free
list_mma_experiments
Lists the product experiments recorded for your app in MMA, the Mobile Measurement Agent, newest first, with a cursor to page.
Free. The same records the MMA Experiments page shows: hypothesis, arms, primary metric, read date, status and result.
Free
get_mma_experiment
Reads one MMA experiment by its id or by the key it was registered under.
Free. An experiment on another app reads as not found.
Free
register_mma_experiment
Records a product experiment your agent is about to run, so it shows on the MMA Experiments page beside the app numbers.
Free. A key already on file returns that experiment unchanged, so a retried call is harmless.
Free
update_mma_experiment
Moves an MMA experiment through planned, running, paused, reading, decided or stopped, and records its result.
Free. The result holds the winner, the effect on the primary metric, its confidence interval, the units per arm and a note.
Free
file_mma_decision
Asks a person in your studio a question about your app on MMA's Decisions page, such as a gate change or spend over the daily cap.
Free. The same title again while your first ask waits returns that ask. The answer arrives on layers://mma/decisions and in the inbox.
Free
withdraw_mma_decision
Takes back a pending MMA decision that no longer needs an answer.
Free. An answered decision keeps its answer. A repeat returns the decision unchanged.
Free
mark_mma_inbox_read
Marks your MMA inbox read up to the time of the read your agent acted on, so the next read lists only what is new.
Free. The marker is your agent's own, one per app, and only moves forward.
Free
Research · read the platform you are growing on, one credit a call
research_tiktok_creator
Reads one TikTok creator by handle: followers, following, post count, bio, bio link, verification, whether the account is private, avatar, public profile URL and the date the account was created. The follower and following counts are the unrounded ones.
A handle nobody holds comes back with creator null and charges nothing.
1 credit a call
research_tiktok_creator_posts
Reads one creator's recent posts, newest first, up to 20 a call: caption, post URL, video or photo deck, length, views, likes, comments, shares, saves, cover, the sound it carries and the post id. nextCursor pages forward.
Every post id is what render_content's adapt_source recipe takes, so a post worth copying is one call from being remixed.
1 credit a call, whatever the count
research_tiktok_search
Searches TikTok for public posts on a topic, up to 20 a call, with the numbers that decide whether one is worth copying and the handle, display name and follower count of whoever posted it. Sort by relevance or likes, and narrow to the last 1, 7, 30, 90 or 180 days.
A query that matches nothing charges nothing.
1 credit a call, whatever the count
research_tiktok_hashtag
Reads one hashtag: how many posts carry it, their views between them, its average views per post, and up to 20 recent posts with their own numbers. momentum compares the posts in that answer against the tag's own history, and reads above 1 when the tag is running hotter than usual.
A tag nobody has posted under comes back with hashtag null and charges nothing.
1 credit a call, whatever the count
research_tiktok_trending_sounds
Reads the TikTok sound chart as it stands right now, up to 20 tracks: title, artist, length, how many posts carry each one, whether anybody sings on it, a preview URL and cover art. Each track carries renderableTrackId.
The chart and layers://music are two lists: the chart is what is climbing on TikTok, and layers://music is the curated catalog render_content scores from. A chart track becomes renderable once it is in that catalog, and renderableTrackId is the trk_ id when it already is.
1 credit a call, whatever the count
Managed distribution · Layers-operated TikTok accounts, billed in dollars from your cash wallet
plan_managed_distribution
Quotes a fleet of 1 to 20 Layers-operated TikTok accounts at $150 per account per month. You say how many and, if you want, what each persona should be. The quote returns the exact monthly and first-period price in dollars, where your cash wallet stands against it, every unmet precondition with its fix, and the disclosures the accounts will carry.
The fee is dollars from the cash wallet and never content credits, which meter rendering and delivery separately. Quoting reserves nothing.
Free
provision_approved_managed_accounts
Orders the exact fleet one plan quoted and reserves the fee from the cash wallet in a single transaction, returning the account ids at funds_reserved. It re-checks every precondition against live state, so a wallet spent since the quote is refused with the shortfall and a top-up link, and nothing is reserved.
Free in credits, and $150 per account per month in dollars. Watch the build at layers://managed-accounts.
Free
release_managed_accounts
Gives accounts back, up to twenty at a time. The preview lists per account the queued posts release would cancel, the next renewal date, the recurring cost it removes, what money comes back and what the current period keeps, what can still be exported and what cannot be recovered.
Published posts stay published and measurement stays readable. A delivered account keeps the month it was given rather than being refunded pro rata.
Free
Paid media · on for every bound workspace, no provider is certified yet
plan_paid_campaign
Resolves a complete campaign plan with the source creative, geography, schedule, attribution window, native currency caps and closed stop conditions.
Planning touches no ad account and reserves no spend.
Free
start_experiment
Starts an experiment from the post the Content Planner already picked. You send one number, the daily budget in whole cents of the ad account’s own currency; Layers supplies which of your own posts to spend on, on which network, and the schedule and caps around it.
It returns the same plan plan_paid_campaign returns and creates nothing. The campaign is confirmed with create_approved_campaign_draft, exactly as any other plan is.
Free
resume_paid_setup
Continues the plan one setup handoff belongs to. You send back the handle the handoff carried and nothing else; Layers re-reads the provider, records what it saw, and returns the same plan.
If the provider still does not show the change, you get the same setup action back with the fresh observation on it and nothing is created. Finishing setup moves no money and confirms no campaign.
Free
create_approved_campaign_draft
Creates the provider objects from the resolved plan. Every campaign starts paused and is read back before it is reported as created.
Nothing spends until a campaign is launched.
10 credits per campaign drafted
launch_approved_campaign
Starts exactly one confirmed campaign. There is no bulk launch, so each campaign gets its own preview and its own call.
Ad spend is billed by the platform against your own ad account and is never a credit charge.
Free, with ad spend billed separately by the platform
apply_approved_campaign_change
Previews one bounded change to a live campaign, then applies exactly the change you saw. Two kinds: move the daily total, or delete the campaign at the provider.
The preview shows the configuration before and after and whether objects are paused or spending. A delete preview says what the campaign has spent so far.
Free, or 5 credits per campaign changed
configure_conversions_forwarding
Points one ad platform's conversions destination at your product, says which conversion it counts, and says which of your traffic reaches it. Meta, TikTok, LinkedIn and ChatGPT Ads.
Free. It takes no access key and no tool here does: when the destination has none on file the result hands you a signed page to open and paste one, and forwarding turns on the moment you do.
Free