For Developers

The SEO content engine your agent can run

Inbounder exposes a Model Context Protocol (MCP) server so Claude, ChatGPT, Cursor, or your own agents can operate it end-to-end on a user's behalf: build topical content clusters, write & publish articles in the brand voice, monitor rankings and AI-search (GEO) visibility, and auto-promote on social.

No-card-required free tier. 3 credits, 10 calls/min, 200 calls/day.

60-second quickstart

1

Sign up free

Free tier gets you 3 credits, no card required. Use them in the dashboard or over MCP.

2

Issue a token

Open /settings/api, name your token, pick scopes, and copy the secret (shown once).

3

Wire your agent

Point Claude Desktop, Cursor, or any MCP client at /api/mcp with Authorization: Bearer …

Try it now — no signup needed (tools/list is public)
curl -sX POST https://www.getinbounder.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq

Connect your agent

Streamable HTTP transport, Bearer auth. Replace YOUR_TOKEN with the token from /settings/api.

Claude Code — one command
claude mcp add --transport http inbounder https://www.getinbounder.com/api/mcp \
  --header "Authorization: Bearer YOUR_TOKEN"
Cursor — ~/.cursor/mcp.json
{
  "mcpServers": {
    "inbounder": {
      "url": "https://www.getinbounder.com/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}
Claude Desktop — claude_desktop_config.json (via mcp-remote, needs Node)
{
  "mcpServers": {
    "inbounder": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.getinbounder.com/api/mcp",
        "--header",
        "Authorization: Bearer YOUR_TOKEN"
      ]
    }
  }
}

The server also ships MCP prompts (run_full_content_job, weekly_content_ops, fix_underperforming_content) — pre-built workflow recipes your client can invoke via prompts/get so multi-step jobs run with the right tool choreography.

19 tools out of the box

Every tool wraps an existing Inbounder primitive. Org-scoped, scope-gated, credit-metered.

list_clients
free

List every client in your organization with their ids (id, name, domain, industry). Call this first — most other tools take a client_id. Free, no scopes required.

create_client
free

Find or create a client (brand/site) in your organization and return its client_id. Matches an existing client by website domain first, then by name — so calling it twice for the same site returns the same client (already_existed: true, matched_on: 'domain'|'name') rather than duplicating. ALWAYS pass domain when you know it. Fails with client_limit_reached when the plan's client limit is hit. Clients cannot be merged or deleted through this API, so prefer list_clients and reuse over creating; set allow_duplicate only after a human confirms a second client for the same site is intended.

write:clients
list_articles
free

List articles in your organization (id, title, status, scores, client) — optionally filtered by client_id and/or status, paginated. Returns metadata only, never article bodies. Use to discover article_ids before get_article, generate_article, score_content, or publish_to_target.

read:articles
get_article
free

Fetch a single article in full: title, status, keywords, scores, published URL, and the complete content (unless include_content=false; the outline is returned while there is no content yet). Use after list_articles when you need the actual text.

read:articles
list_connections
free

List your organization's active integration connections (WordPress, Webflow, Google Search Console, Zapier) with their connection ids, site name/URL, and client scope. Use to pick a connection_id before publish_to_target, or to check whether GSC is connected before get_gsc_performance.

get_credit_balance
free

Return your organization's remaining credit balance (total plus subscription/referral/purchased breakdown; -1 = unlimited), what each tool costs, and today's daily-quota usage. Use before a multi-step workflow to confirm you can afford every paid call. Exempt from daily quotas (the per-minute rate limit still applies).

get_brand_voice
free

Fetch the brand voice profile (tone, ICP, vocabulary, sample patterns) for a specific client. Use before generating any content for that client so the output sounds like them.

read:brand_voice
analyze_brand_voice
1 credit

Scrape a website's text (homepage, /about, blog index) and extract a structured brand VOICE profile with Claude: tone, formality, vocabulary, style guidelines, sentence structure, plus the ideal customer profile (ICP) and example phrases. If save_to_client_id is provided, the profile is persisted to that client's brand voice (created or updated) and approved, so generate_article and generate_social_posts immediately write in it. If that client already has an APPROVED voice it is returned untouched and nothing is charged — pass overwrite: true only when a human has asked for it to be rebuilt, since re-analysis replaces settings a human may have tuned.

write:brand_voice
research_keywords
free

Find target keywords for a topic — a ranked set with search intent and a qualitative difficulty/opportunity read, shaped by your strategy (quick_wins / authority_building / balanced). Use this to plan what to write before create_content_cluster or generate_article. (Difficulty/opportunity are AI estimates; connect a keyword-data provider for hard volume metrics.)

read:articles
create_content_cluster
1 credit

Research a topic and design AND persist a topical-authority content cluster for a client: a pillar article plus N interlinked supporting articles, each saved as a real article (status 'outlined') with a title, meta description, target keywords, and outline. Runs the same planner as the app's Research > Cluster flow: keyword research with difficulty/intent/format analysis, then — when the client has an analyzed brand voice — that brand's copywriting framework, highest-commercial-intent-first ordering, and title-length discipline (call analyze_brand_voice first if it has none; without it the plan falls back to a weaker generic one, reported as planner:'basic'). Creates a new project for the client and returns real ids — feed each article_id to generate_article to write the content. Takes ~2-4 minutes; returns an error rather than hanging if it can't finish in time. Never modifies existing projects or articles. Requires client_id (use list_clients).

write:articles
generate_article
1 credit

Write a publish-ready SEO article in the client's brand voice for a title/topic + target keyword. Runs the same pipeline as the dashboard's Generate button: AEO structure (quick answer, key takeaways, definitions, FAQ), sourced statistics only, in-body internal links to cluster siblings, the humanization second pass, and a featured image. Returns the article HTML plus AEO + content-quality scores; if an existing article_id is given, the content, meta description, schema data, and hero image are saved back to it (ready to publish_to_target). Expect ~2-3 minutes per article_id call (ad-hoc title+keyword calls are faster but skip humanize/image). The 'write' step of the content engine.

write:articles
review_article
free

Run the SEO review board over a stored article: five deterministic seats (format conformance, intent contradiction, SERP coverage, answer shape, self-grading) plus one LLM substance seat, then AT MOST ONE bounded redline that rewrites only the sections carrying findings and leaves every other section byte-identical. Records the verdict, the findings and the review timestamp on the article. Free, and a second call against the same body returns the recorded verdict without re-running anything. Findings quote the bytes they rest on, and each carries a grounding tier — a finding grounded in our own format rules is labelled as that, never as 'what ranks'. The 'check' step of the content engine: run it after generate_article and before publish_to_target.

write:articles
score_content
free

Score a piece of content against a target keyword. Returns AEO (Answer Engine Optimization — readiness for ChatGPT/Perplexity/Google AI citation) and content quality scores. Useful for evaluating articles written outside Inbounder before publishing.

generate_social_posts
1 credit

Turn an article into channel-ready social promotion — one tailored post per requested platform (LinkedIn, X/Twitter, Instagram, Facebook, Threads), in the brand's voice. Accepts an existing article_id (content is fetched for you) or raw content. Returns the posts synchronously. The 'auto-promote' step after publishing.

write:social
publish_to_target
1 credit

Publish an Inbounder article to a connected destination. Returns the published URL and target-side ID. Idempotent: republishing an already-published article updates the existing post instead of duplicating it (but still costs 1 credit). Requires write:articles AND the scope matching the target — publish:wordpress or publish:webflow — so a token granted only one of them cannot publish to the other.

write:articles
confirm_distribution
free

Confirm that an article is live at a URL published outside a connected CMS — the manual counterpart to publish_to_target. Records the URL as the article's live location and marks the article published, so Content Health distribution tracking counts it. Idempotent: re-confirming replaces the recorded URL. Inbounder records the URL exactly as confirmed — it does not fetch or verify the page, so only confirm URLs that are actually live. Free.

write:articles
get_gsc_performance
free

Return GSC performance for a client over a date range: clicks, impressions, CTR, and average position, aggregated by query, page, country, or device (group_by). Reads from synced data — requires the client to have GSC connected and the daily sync cron to be active.

read:gsc
get_geo_visibility
free

Report AI-search (GEO) visibility for a client or the whole org. Returns TWO separate signals: (1) readiness — how well each article is optimized to be cited by AI answer engines, based on Inbounder's per-article AEO score, with an average, well-optimized/needs-work counts, and a ranked per-article breakdown; (2) measured — actual probe results from Claude (web search) and Gemini (Google-grounded): mention rate WITH sample size (e.g. mentioned in 14 of 42 runs), per-engine splits, top cited source domains, gap domains cited where the brand wasn't, and a third-party source breakdown — what share of citations came from surfaces the brand doesn't own (e.g. review sites, Reddit, editorial), with the top non-owned domains and example URLs. The third-party share is null (never 0%) until citations exist, and is only meaningful for clients with a domain on file — clients_missing_domain counts clients where it isn't, since every citation for those falls into third_party by construction. Measured is null with an explanatory note until probes have run. ChatGPT/Perplexity/Google AI Overviews are not currently probed. Omit client_id for an org-wide report.

read:geo
get_content_health
free

Per-dimension Content Health for one client: Production, Distribution, Keywords, and Maturity — each returned as a state (on_track / attention / too_early / no_data) with a 'why' sentence carrying the real counts it derives from, plus the cited reference bands (source, year, method, confidence) the states lean on. This tool deliberately returns no composite health score: a single blended number would hide which dimension needs work and imply measurement precision the underlying research does not support. Free.

read:articles

MCP tier limits

TierRate limitDaily callsCreditsSLA
Free10 calls/min200/day3 one-time
Starter60 calls/min1,000/day10/mobest-effort
Growth120 calls/min3,000/day30/mobest-effort
Advanced240 calls/min10,000/day75/mo99.5% target

Read-only tools (e.g. score_content, get_gsc_performance) don't consume credits — they count against the rate limit and daily quota only. research_keywords is credit-free but LLM-backed, so it has its own daily cap (20/100/250/500 by tier). get_credit_balance is quota-exempt and reports your live usage.

Hashed at rest
SHA-256, timing-safe verify
Scoped tokens
11 scopes, revoke any time
Org-scoped data
No cross-tenant access

Ready to build?

The server describes itself: GET /api/mcp. Discovery manifest at /.well-known/mcp.json.

Questions? See Agents & API in the Help Center.