SubReply
Integrations

Connect your AI to SubReply

SubReply exposes its six Reddit prospecting tools over a Model Context Protocol server, the standard spoken by Claude, ChatGPT, Gemini and n8n. Connect it in thirty seconds and your assistant searches, writes then publishes without you writing a single HTTP request.

One endpoint, POST only, streamable HTTP transport with no session:

Server URL
https://subreply.io/api/mcp

Two ways to authenticate: OAuth for the connectors of consumer assistants, an API key for everything else.

OAuth connection (recommended) — claude.ai, ChatGPT, Gemini

The shortest path, with no key to copy anywhere. The connector sends you to SubReply, you sign in with your usual account and it is plugged in.

Claude (claude.ai)
  1. Settings → Connectors → Add custom connector
  2. Paste the URL: https://subreply.io/api/mcp
  3. Connect → SubReply sign-in → Approve
Read the full API docs →
ChatGPT
  1. Settings → Developer Mode → Apps → New connector
  2. URL: https://subreply.io/api/mcp, auth OAuth
  3. Requires a Pro, Business, Enterprise or Edu plan
Read the full API docs →
Gemini
  1. Google AI Studio → Extensions → Custom MCP
  2. URL: https://subreply.io/api/mcp
  3. Authentication through SubReply OAuth
Read the full API docs →

The approval lasts 30 days. After that the client reopens the same screen, and one click is enough to carry on.

Publishing is not available over OAuth

publish_reddit_comment turns down OAuth connections: writing to Reddit needs an API key whose publishing permission is switched on in your API settings. The other five tools work as usual.

API key connection — Claude Code, Claude Desktop, n8n

The key travels in the Authorization header. Every request is re-authenticated, so revoking a key cuts it off that very moment rather than when some session expires. It is the same sr_live_… key as the REST v1 API, generated on your API keys page.

Claude Code and Claude Desktop

Terminal
claude mcp add --transport http subreply https://subreply.io/api/mcp \
  --header "Authorization: Bearer sr_live_YOUR_API_KEY"

Or straight into the MCP configuration file, if you would rather keep it in version control:

MCP configuration
{
  "mcpServers": {
    "subreply": {
      "type": "http",
      "url": "https://subreply.io/api/mcp",
      "headers": {
        "Authorization": "Bearer sr_live_YOUR_API_KEY"
      }
    }
  }
}

n8n

Add an MCP Client node and fill in four fields:

  • Endpoint — https://subreply.io/api/mcp
  • Server Transport — HTTP Streamable
  • Authentication — Header Auth
  • Header Auth credential — name Authorization, value Bearer sr_live_…

The node then lists all six tools. Mind the timeout: publish_reddit_comment can take two minutes, well beyond the n8n default.

Checking that it answers

When a client refuses to connect, this call settles the question: it depends on no MCP client and spends no credits.

cURL
curl -s -X POST https://subreply.io/api/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer sr_live_YOUR_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Six tools listed means the server is fine and the problem sits on the client side. A 401 means the key. A 406 means the Accept header: the transport requires both types, even though it answers with plain JSON. The ping tool does the same job once your client is connected: it answers pong and proves your key works at the same time.

Available tools

ToolWhat it doesCreditsWorth knowing
pingAvailability probe. Answers “pong” and confirms the key is valid.free—
get_account_statusCredit balance and subscription state. The tool to call when another one answers “not enough credits”.free—
list_projectsProjects on the account: id, name, target language, keywords, agent state.free—
scrape_reddit_opportunitiesScans subreddits and returns posts whose author looks like a customer, scored by relevance.freeproduct_description strongly recommended
generate_reddit_commentWrites a natural comment, in the language of the thread, built not to trigger a shadowban. Publishes nothing.35Idempotent on post_url
publish_reddit_commentPublishes for real on Reddit, from a SubReply pool account behind a residential proxy.50Per-key opt-in required

Same economics as the REST API: searching is free, only production is billed. A scan that finds nothing therefore never costs anything.

Scanning is free, but not open to everyone

Scanning charges nothing, yet it does require a balance of at least 35 credits — the price of one comment. Below that the tool refuses: scraping for an account that cannot produce anything afterwards serves nobody. get_account_status and list_projects stay callable at zero credits. That is precisely their point.

Charges are idempotent per post: if the network drops and your agent replays generate_reddit_comment on the same Reddit URL, the second call returns credits_used: 0.

Rate limits

ToolLimit
scrape_reddit_opportunities60 calls / minute
generate_reddit_comment20 calls / minute
publish_reddit_comment5 calls / minute
get_account_statuslist_projects60 calls / minute
pingnone

Quotas are counted per account and per tool: exhausting generate_reddit_commentthrottles neither your other tools nor anyone else's account. ping is deliberately unlimited — it is the probe, and it has to stay reachable exactly when you are hammering it because you suspect an outage.

Publishing to Reddit

publish_reddit_comment really writes to Reddit

The comment is public the moment the tool returns, posted from a SubReply pool account behind a residential proxy. Deleting it does not undo the notification already sent to the poster. Only call this tool once a human has approved the exact text.

Which is why it is off by default. To turn it on, open your API keys page and enable publishing on the key in question.

The permission lives on the key, not on the account, and that is deliberate: a key dedicated to an n8n publishing workflow can have it while a key pasted into a conversational assistant does not. After a leak, turning publishing off on that one key breaks none of your other integrations.

  • 5 calls per minute at most, far below what the infrastructure would take. A burst of publications does not just cost a balance: it costs a shadowban.
  • The 50 credits are charged afterwards, once publication is confirmed. A failure bills nothing.
  • This tool is not idempotent: two calls on the same URL leave two comments. The second one is free, but it is very much there.
  • Allow up to two minutes per call — a real browser opens the post and types the comment. Set your client timeout accordingly.

MCP-specific errors

A failing tool never raises a JSON-RPC exception: it returns a result flagged isError: true, with a sentence the agent can read. Four cases exist only on the MCP side.

CaseWhat the tool returns
Rate limit exceededisError: true and the retry delay in seconds. Nothing is charged.
Not enough creditsisError: true and the missing balance. Top up on the billing page.
publish_reddit_comment without opt-inisError: true: publishing is off on that key. Turn it on in your API settings.
publish_reddit_comment over OAuthisError: true: publishing requires an API key, an OAuth connection is not enough.

The rate limit message carries the retry delay, so your agent knows when to pick back up instead of looping:

Tool response
Rate limit exceeded for generate_reddit_comment:
20 calls per minute maximum. Retry in 34 seconds.
No credits were charged.

The refusal lands before any business logic: nothing is called, nothing is charged. An agent that burns through its 20 generations per minute has lost no credits.

An empty list is not an error

scrape_reddit_opportunities filters on freshness, customer signal and product fit. Zero results is a normal answer. Passing product_description changes a great deal — without it the product fit threshold rejects almost everything.

HTTP codes and the REST error format are described on the error codes page.

Full error codes