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
Sign up free
Free tier gets you 3 credits, no card required. Use them in the dashboard or over MCP.
Issue a token
Open /settings/api, name your token, pick scopes, and copy the secret (shown once).
Wire your agent
Point Claude Desktop, Cursor, or any MCP client at /api/mcp with Authorization: Bearer …
curl -sX POST https://www.getinbounder.com/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jqConnect your agent
Streamable HTTP transport, Bearer auth. Replace YOUR_TOKEN with the token from /settings/api.
claude mcp add --transport http inbounder https://www.getinbounder.com/api/mcp \ --header "Authorization: Bearer YOUR_TOKEN"
~/.cursor/mcp.json{
"mcpServers": {
"inbounder": {
"url": "https://www.getinbounder.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}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.
16 tools out of the box
Every tool wraps an existing Inbounder primitive. Org-scoped, scope-gated, credit-metered.
list_clientsList 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_clientCreate a client (brand/site) in your organization and return its client_id. If a client with the same name already exists it is returned instead (already_existed: true). Fails with client_limit_reached when the plan's client limit is hit. Use when list_clients shows no suitable client.
list_articlesList 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.
get_articleFetch 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.
list_connectionsList 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_balanceReturn 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_voiceFetch 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.
analyze_brand_voiceScrape 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.
research_keywordsFind 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.)
create_content_clusterDesign 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. Creates a new project for the client, saves the keyword research behind the plan, and returns real ids — feed each article_id to generate_article (pillar first) to write the content. Never modifies existing projects or articles. Requires client_id (use list_clients).
generate_articleWrite a publish-ready SEO article in the client's brand voice for a title/topic + target keyword. Returns the article HTML plus AEO + content-quality scores; if an existing article_id is given, the content is saved back to it (ready to publish_to_target). The 'write' step of the content engine.
score_contentScore 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_postsTurn 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.
publish_to_targetPublish 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. Triggers the per-published-article outcome event on Outcome tier.
get_gsc_performanceReturn 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.
get_geo_visibilityReport GEO (Generative Engine Optimization) readiness for a client's content — how well each article is optimized to be cited by AI answer engines (ChatGPT, Perplexity, Google AI Overviews), based on Inbounder's per-article AEO score. Returns an average GEO score, counts of well-optimized vs. needs-work articles, and a ranked per-article breakdown. Omit client_id for an org-wide report. (Optimization readiness; live cross-engine citation tracking is on the roadmap.)
MCP tier limits
| Tier | Rate limit | Daily calls | Credits | SLA |
|---|---|---|---|---|
| Free | 10 calls/min | 200/day | 3 one-time | — |
| Starter | 60 calls/min | 1,000/day | 10/mo | best-effort |
| Growth | 120 calls/min | 3,000/day | 30/mo | best-effort |
| Advanced | 240 calls/min | 10,000/day | 75/mo | 99.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.
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.