Readyt API & MCP server
Developer documentation · API v1 · Last updated: August 23, 2026
Readyt answers two questions programmatically: does a brand show up when AI engines are asked for a recommendation, and which Reddit threads should that brand be in. This page is the reference for the REST API, the MCP server, and every machine-readable file on this site.
When to use Readyt
Reach for the Readyt API or the Readyt MCP server when you need to:
- Check whether ChatGPT, Claude, Perplexity or Google AI Overviews mention a brand for its category, and who they recommend instead.
- Rank the brands AI engines name most in a product category.
- Find the sources an AI engine cites when answering one specific buying question.
- Find the subreddits where a product's buyers are, ranked by buying intent.
- Read a subreddit's self-promotion rules, karma floor and flair requirements before posting.
- Discover this month's buying-intent Reddit threads for a site, scored, with a suggested reply angle.
- Check whether a Reddit account looks shadowbanned before posting from it.
Do not use it for general web search, scraping arbitrary pages, or posting to Reddit. Readyt never writes to Reddit: it drafts, a human approves and sends.
Quick start
No key, no signup. Start a job, then poll it.
curl -s -X POST https://www.readyt.ai/api/v1/analyses \
-H 'Content-Type: application/json' \
-d '{"tool":"geo-report","input":"acme.com","email":"you@example.com"}'
# -> 202 {"id":"0f4d…","status":"running","poll_url":"…","poll_after_seconds":5}
curl -s 'https://www.readyt.ai/api/v1/analyses?id=0f4d…'
# -> 200 {"id":"0f4d…","status":"done","result":{"summary":"…","lines":["…"]}}
An analysis takes about 30 seconds; lead discovery about two minutes. Results are cached for 30 days per (tool, input), so an identical call can come back done on the first poll.
Why an email is required
Write calls take an email. The finished report is sent there, and the per-email daily quota is keyed on it. Ask the person you are working for; do not invent an address.
Readyt MCP server
The same engines are exposed as Model Context Protocol tools, so Claude, ChatGPT, Cursor and any other MCP client can call Readyt natively.
| Property | Value |
|---|---|
| Endpoint | https://www.readyt.ai/api/mcp |
| Transport | Streamable HTTP |
| Protocol versions | 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26 |
| Authentication | None |
| Manifest | /.well-known/mcp.json |
Claude Code:
claude mcp add --transport http readyt https://www.readyt.ai/api/mcp
Claude Desktop, Cursor, or any client using a JSON config:
{
"mcpServers": {
"readyt": {
"type": "streamable-http",
"url": "https://www.readyt.ai/api/mcp"
}
}
}
ChatGPT: Settings → Connectors → Add custom connector, then paste https://www.readyt.ai/api/mcp.
Tools exposed over MCP
readyt_ai_visibility, readyt_category_leaderboard, readyt_citation_sources, readyt_find_subreddits, readyt_subreddit_rules, readyt_keyword_research, readyt_draft_reply, readyt_account_health, readyt_find_leads, and readyt_get_result to poll any of them. Call tools/list for the live schemas.
REST API
Base URL: https://www.readyt.ai/api/v1. Machine-readable description: openapi.json (OpenAPI 3.1).
| Method & path | What it does |
|---|---|
GET /api/v1 | Service description: endpoints, versioning, rate limits, docs links. |
GET /api/v1/tools | The analysis tools, the input each expects, and when to use it. |
POST /api/v1/analyses | Start an analysis. Body: {tool, input, email}. Returns 202 and an id. |
GET /api/v1/analyses?id= | Poll an analysis until status is done or error. |
POST /api/v1/leads | Start Reddit lead discovery. Body: {site_url, email}. |
GET /api/v1/leads?id= | Poll a lead discovery run. |
Analysis tools
| Tool id | What it returns | When to use it | Example input |
|---|---|---|---|
geo-report | How ChatGPT, Claude and Perplexity talk about a brand today: whether it is named, who is recommended instead, and which sources feed those answers. | The caller asks whether a company shows up in AI answers, or wants an AI-visibility baseline. | acme.com |
geo-index | The brands AI engines name most for a product category, in order. | The caller asks who the AI engines recommend in a market, or wants a category leaderboard. | project management tools |
citation-tracker | The sources AI engines cite when answering a specific buying question. | The caller wants the pages and threads behind an AI answer for one query. | best CRM for a 2-person agency |
subreddit-finder | The five subreddits where a product's buyers are, ranked by buying intent. | The caller asks where on Reddit to post, or which communities match an audience. | time tracking for freelance designers |
subreddit-rules-analyzer | A subreddit's rules in plain English: self-promotion limits, karma floor, flair requirements. | The caller is about to post somewhere and needs to know what is allowed. | r/SaaS |
reddit-keyword-tool | Where a keyword is discussed on Reddit and with what intent. | The caller is researching demand or thread volume for a topic. | cold email deliverability |
reddit-reply-generator | A natural, rule-respecting draft reply to a Reddit thread. | The caller has a thread and wants a reply that will not read as an ad. | https://www.reddit.com/r/SaaS/comments/xxxxxx/ |
shadowban-karma-checker | Whether a Reddit account looks shadowbanned and how healthy its karma is. | The caller wants to know if an account is safe to post from. | u/spez |
Versioning
The version is in the URL path: https://www.readyt.ai/api/v1/…. The current version is v1, live since 23 August 2026.
- Additive changes — new endpoints, new fields on existing responses — ship inside a version without notice. Ignore fields you do not recognise; they will keep appearing.
- Breaking changes — removing or renaming a field, changing a type, changing a status code — never happen inside a version. They ship as a new path version,
/api/v2/. - Every response carries
X-API-Version, so you can assert on it in your integration.
Deprecation policy
When a version is superseded, it keeps working for at least six months from the day it is marked deprecated. Throughout that window every response from the deprecated version carries:
| Header | Meaning |
|---|---|
Deprecation | RFC 9745. The date the version became deprecated, as an IMF-fixdate. |
Sunset | RFC 8594. The date after which the version stops responding. Never sooner than six months after Deprecation. |
Link: rel="successor-version" | The URL of the version that replaces it. |
No version is deprecated today, so those headers are absent. The live status of every version is in GET /api/v1 and under x-api-versions in openapi.json. Agents should treat the presence of a Sunset header as a hard signal to migrate.
Rate limits
Every response carries RFC 9331 RateLimit headers, so you can self-throttle without guessing.
| Header | Example | Meaning |
|---|---|---|
RateLimit-Policy | "read";q=60;w=60, "write";q=10;w=3600 | Every policy this API enforces. |
RateLimit | "read";r=58;t=42 | The policy that applied, requests remaining, seconds to reset. |
RateLimit-Limit | 60 | Requests allowed in the current window. |
RateLimit-Remaining | 58 | Requests left in the current window. |
RateLimit-Reset | 42 | Seconds until the window resets. |
Retry-After | 3600 | Sent on 429. Wait this long before retrying. |
Two layers apply:
- Gateway — 60 read requests per minute and 10 write requests per hour, per client IP. Polling counts as read, so following your own job to completion never burns your write budget. These counters are held per serving instance, which means
RateLimit-Remainingis a floor: the real allowance is never lower than what the header says. - Engine quotas — the analysis engines enforce their own daily caps: 250 analyses per day globally and 4 per day per email per tool; 150 lead discovery runs per day and 2 per day per email. These reset at 00:00 UTC and are the authoritative limit. Hitting one returns
429with{"error":{"code":"quota_exceeded"}}and aRetry-Afterpointing at the next reset.
Errors
Every error is JSON with a stable machine-readable code:
{
"error": {
"code": "quota_exceeded",
"message": "Daily capacity reached, try again tomorrow.",
"retry_after_seconds": 41231
}
}
| Status | Codes |
|---|---|
400 | invalid_json, invalid_input, invalid_email, invalid_site, invalid_id, unknown_tool |
404 | not_found |
405 | method_not_allowed |
429 | rate_limited (gateway), quota_exceeded (engine) |
502 | upstream_error |
Markdown instead of HTML
Every page on this site serves a Markdown representation from the same URL to any client that asks for it, following acceptmarkdown.com. It is the cheapest way to read this site: no nav, no scripts, no layout markup.
curl -H 'Accept: text/markdown' https://www.readyt.ai/pricing.html
Responses carry Content-Type: text/markdown; charset=utf-8 and Vary: Accept, Accept-Encoding. A request that accepts neither HTML nor Markdown gets 406 with the list of available representations. A URL that does not exist returns a real 404 whose Markdown body points at the sitemap and this page.
Command line
The readyt CLI wraps the endpoints above so you can script them without writing an integration:
npx @readyt/cli tools
npx @readyt/cli analyze geo-report acme.com --email you@example.com
npx @readyt/cli leads acme.com --email you@example.com
It starts the job, polls it, and prints the result as JSON or a table. Source: cli/ in the site repository.
Machine-readable files
| URL | What it is |
|---|---|
/llms.txt | Site index for LLMs, with a "when to use Readyt" section. |
/openapi.json | OpenAPI 3.1 description of the public API. |
/.well-known/mcp.json | MCP server manifest (server.json schema). |
/api/v1 | Live service description. |
/sitemap.xml | Every public URL. |
/rss.xml | Blog feed. |
/robots.txt | Crawl policy. Every major AI crawler is explicitly allowed. |
Support
Questions about the API: hello@readyt.ai. Bugs and outages: support@readyt.ai. Terms: /terms.html.


