Buy SEO link placements across every marketplace: verified domains, held prices, one invoice.
One address for any MCP client. No sign-in needed on this server.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Odel could not list its tools without signing in.
Buy SEO link placements across every marketplace from one API or MCP server. Named, inspectable domains with live prices, independent verification, a survival record for every publisher we have bought from, and one invoice — paid with prepaid credits.
https://api.placementapi.com/mcp (streamable HTTP, Bearer API key)This repository holds the TypeScript client (sdk/, published to npm as placementapi) and the MCP registry manifest (server.json). The service itself is not open source.
# Claude Code
claude mcp add --transport http placement-api https://api.placementapi.com/mcp \
--header "Authorization: Bearer $PLACEMENT_KEY"
// Cursor / Windsurf / any host that takes a JSON config
{ "mcpServers": { "placement_api": { "url": "https://api.placementapi.com/mcp",
"headers": { "Authorization": "Bearer pk_live_…" } } } }
Claude.ai / ChatGPT: Settings → Connectors → add custom connector with the URL above and the Authorization header.
Get a key at https://app.placementapi.com/dashboard. A read key can search, plan and compare; an order key can spend credits.
| Tool | What it does |
|---|---|
search_placements | Search ~550k priced placements deduplicated by domain, with verification, score and price plausibility on every row |
plan_links | A brief in (links, topic, DR, budget, strategy) → a costed plan of named domains, each with why, held at price for four hours |
compare_domain | Everything about one publisher: listings and spread, verification, web-graph, survival, outcomes, Placement Score, market reference |
target_profile / gap_map | Your page's backlink profile and the competitor links you can reproducibly buy, priced |
keyword_winners | What the sites that rank for a keyword look like, and what they buy |
place_order · submit_content · write_it_for_me | Order at the held price; supply the article, let the publisher write it, or have it written |
list_orders · campaign_status · order_outcome | Fulfilment, live checks and observed rank movement (observed, never attributed) |
standing_orders · create_standing_order | Recurring plans; auto-placement can only be enabled from the dashboard |
check_balance · cancel_order |
npm i placementapi
import { PlacementApi } from "placementapi";
const api = new PlacementApi({ apiKey: process.env.PLACEMENT_KEY! });
const quote = await api.quote({ links: 5, topic: "finance", dr_min: 50, strategy: "safest" });
for (const l of quote.lines) console.log(l.domain, l.price_credits, l.verification, l.why.join(" · "));
See sdk/README.md.
quote_id to pay the held price.verification says whether a domain's authority is real: ok, suspect (high link authority with no organic footprint — what a link farm looks like) or unverified. quality_reasons names which of five tests fired. Method: https://placementapi.com/research/quality-methodologywhy[] on every line is the factual basis for the pick, in sentences an agent can repeat.Support: hello@placementapi.com · Terms: https://placementapi.com/terms