Placement API

Search SEO link placements, compare vendor prices for the same domain, and plan purchases within a budget through a hosted MCP server; ordering requires a separate order-scoped API key and credits.

Hosted MCP Server

npx add-mcp 'https://api.placementapi.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Your model already doesthe other half of SEO.

It audits your site, finds the gaps, writes the brief and plans the links. Then it stops, because the next step is buying something and there was never anything to call. This is the thing to call.

613,446

placements it can search

215,280

domains measured independently

20

tools over MCP

4 hours

a quoted price is held

One command, then ask it to plan a campaign.

# Claude Code, Cursor, or any MCP host
claude mcp add --transport http placement-api \
  https://api.placementapi.com/mcp \
  --header "Authorization: Bearer $PLACEMENT_KEY"

# In Claude or ChatGPT:
#   Settings -> Connectors -> Add custom connector
#   URL     https://api.placementapi.com/mcp
#   Header  Authorization: Bearer <your key>

Hosted, not an npx package: nothing to install, nothing to pin, and we can fix a bug for everyone at once. Prefer code? The typed client is placementapi on npm.

20 tools. Five of them can spend money.

A key you paste into an MCP config lives inside a chat session for as long as that session does. A key that can only search is a very different thing to leave there than one that can buy links, so ordering is a separate scope. On a read-only key the buying tools are not refused, they are never listed.

search_placements readEvery supplier at once, deduplicated by domain, at the price you will actually pay.

plan_links readA brief becomes a costed basket, spread across domains, with a why for every line, at a price held for 4 hours.

compare_domain readEvery listing for one domain, cheapest first, with the spread and our verdict on its authority.

check_balance readCredits, spend caps, and what has cleared.

list_orders readDelivery state, which orders can still be cancelled, and which are waiting on an article.

campaign_status readWhat this account has already bought for a page: domains, spend, anchor mix. Nothing bought twice.

target_profile readThe backlink profile of the page you are buying for, and how much of it we sell.

gap_map readDomains your competitors have that you do not, priced and held.

ranking_scenario readWhat closing a keyword's gap could be worth, with measured, published and assumed figures kept apart and labelled.

keyword_winners readWho ranks for a keyword, who links to them, and which of those we carry.

search_console_status readWhether this buyer has connected Google Search Console, and how far the nightly pull has got.

connect_search_console readA consent link to connect Search Console, read-only. Their rows stay theirs: never pooled, never published, deleted on disconnect.

search_console_opportunities readThe buyer's own pages at positions 5 to 20 with the queries behind them and their momentum: where a link has something to move.

place_order orderBuys a placement at the held price. Charges immediately, inside the account's spend caps.

submit_content orderSends the article for an order, checked against the publisher's spec before it goes anywhere.

write_it_for_me orderHas the article drafted with the buyer's own model and stored on the order for approval.

order_outcome readEverything observed since a placement: the link still standing, rank movement, confidence. Observed, never caused.

standing_orders readThe account's standing orders: so many links a month for a page, and how each last run went.

create_standing_order orderSet up links that keep arriving on a cadence and budget; auto placement stays a dashboard switch.

cancel_order orderFull refund until the order reaches a supplier.

Autonomy you can leave running.

An agent optimising for authority per dollar will happily buy fifty exact-match-anchor links to one page in a week. Every rail below is enforced server-side, because a markdown instruction is advice and a database constraint is a guarantee.

Caps it cannot argue past

Per-order and per-day limits are enforced in the same atomic statement as the charge. They are not in a prompt, so no amount of reasoning gets around them.

A retry never charges twice

Agents retry on any network hiccup, and a retry without a key is indistinguishable from a second purchase. We refuse it rather than double-charge you.

Your agent is warned about anchors

The ordering tool tells the model that anchor text is a distribution, not a string: many links on one exact-match anchor get devalued rather than counted, so the budget is spent and the links do nothing. Guidance, not a database constraint.

Fakes are out by default

Plans exclude domains whose authority is not backed by search traffic unless you ask for them, so a model cannot quietly buy a campaign of them while hitting its DR target.

Quoted prices are held

A plan approved at 9am is charged at the price it was approved at. A quote binds for 4 hours, so the catalogue moving underneath cannot turn a yes into a different invoice.

Cancel until the morning

Orders go to suppliers in one batch each day. Until then anything can be pulled back in full, which is the window where a mistake is still free.

It keeps watching, and says observed, never caused.

Is the link still there

Delivered links are re-checked on a schedule. One that disappears inside its guarantee becomes a claim, not a shrug.

Did the page move

Rank on the page's keywords is observed at checkpoints after delivery and reported with confidence, across buyers where three or more bought the same site.

Your own numbers, if you connect them

With Search Console connected, the buyer's real impressions, clicks and positions replace published curves in every answer, and never leave their account.