Audit a site's visibility to ChatGPT, Perplexity, Claude and AI agents. Generates llms.txt.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Turn one page (url) or text into a native post for every enabled channel in every chosen language, saved as drafts. Nothing is published. Use dry_run to see posts without saving, and idempotency_key so a retry never makes a duplicate. Needs the customer's key.
Public page to write from (preferred: its link goes in the posts)
Or the text to write from (a changelog entry, an announcement)
Write and return the posts without saving anything.
Defaults to the account's languages. BCP-47 tags, up to 8: en, zh-TW, zh-CN, ja, ko, es, pt-BR, fr, de, it, nl, pl, tr, ru, uk, ar, hi, id, vi, th, ms, fil
Subset of enabled channel ids (from amplify_status). Default: all enabled.
Same key again returns the first campaign instead of writing a new one.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Turn one page (url) or text into a native post for every enabled channel in every chosen language, saved as drafts. Nothing is published. Use dry_run to see posts without saving, and idempotency_key so a retry never makes a duplicate. Needs the customer's key.
| Argument | Type | Description |
|---|---|---|
| url | string | Public page to write from (preferred: its link goes in the posts) |
| text | string | Or the text to write from (a changelog entry, an announcement) |
| title | string | |
| dry_run | boolean | Write and return the posts without saving anything. |
| languages | array | Defaults to the account's languages. BCP-47 tags, up to 8: en, zh-TW, zh-CN, ja, ko, es, pt-BR, fr, de, it, nl, pl, tr, ru, uk, ar, hi, id, vi, th, ms, fil |
| channel_ids | array | Subset of enabled channel ids (from amplify_status). Default: all enabled. |
| idempotency_key | string | Same key again returns the first campaign instead of writing a new one. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public page to write from (preferred: its link goes in the posts)"
},
"text": {
"type": "string",
"description": "Or the text to write from (a changelog entry, an announcement)"
},
"title": {
"type": "string"
},
"dry_run": {
"type": "boolean",
"description": "Write and return the posts without saving anything."
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"description": "Defaults to the account's languages. BCP-47 tags, up to 8: en, zh-TW, zh-CN, ja, ko, es, pt-BR, fr, de, it, nl, pl, tr, ru, uk, ar, hi, id, vi, th, ms, fil"
},
"channel_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Subset of enabled channel ids (from amplify_status). Default: all enabled."
},
"idempotency_key": {
"type": "string",
"description": "Same key again returns the first campaign instead of writing a new one."
}
}
}Change a draft's text, thread or title. The platform checks (length, hashtags, hype words, required settings) run again and come back as warnings.
| Argument | Type | Description |
|---|---|---|
| text | string | |
| title | string | |
| thread | array | |
| post_id* | string |
{
"type": "object",
"required": [
"post_id"
],
"properties": {
"text": {
"type": "string"
},
"title": {
"type": "string"
},
"thread": {
"type": "array",
"items": {
"type": "string"
}
},
"post_id": {
"type": "string"
}
}
}Posts newest first, with status (draft, scheduled, published, failed, rejected), schedule time, live URL, warnings, claims to confirm and engagement metrics.
| Argument | Type | Description |
|---|---|---|
| limit | number | 1-100, default 30 |
| status | string |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "1-100, default 30"
},
"status": {
"enum": [
"draft",
"approved",
"scheduled",
"published",
"failed",
"rejected"
],
"type": "string"
}
}
}Write native posts for X, LinkedIn and Threads from any public page, in up to 3 languages, so the user can see what RankRoot Amplify would publish. Free, no key. Nothing is stored or posted.
| Argument | Type | Description |
|---|---|---|
| url* | string | Page to write from, e.g. a launch post or changelog entry |
| languages | array | Up to 3. BCP-47 tags, up to 8: en, zh-TW, zh-CN, ja, ko, es, pt-BR, fr, de, it, nl, pl, tr, ru, uk, ar, hi, id, vi, th, ms, fil |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Page to write from, e.g. a launch post or changelog entry"
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 3. BCP-47 tags, up to 8: en, zh-TW, zh-CN, ja, ko, es, pt-BR, fr, de, it, nl, pl, tr, ru, uk, ar, hi, id, vi, th, ms, fil"
}
}
}Schedule draft posts in the customer's Postiz at the next good local time for each platform and language (or at `at`), within the per-channel daily cap and spacing. Only works if the customer allowed agents to schedule; posts with claims to confirm or warnings are skipped for the owner to review. Returns what was scheduled and why anything was skipped.
| Argument | Type | Description |
|---|---|---|
| at | string | Optional ISO 8601 time; the earliest allowed slot at or after it is used. |
| post_ids* | array |
{
"type": "object",
"required": [
"post_ids"
],
"properties": {
"at": {
"type": "string",
"description": "Optional ISO 8601 time; the earliest allowed slot at or after it is used."
},
"post_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Connected channels, languages, mode, guardrails, post counts and what has performed best for this customer. Needs the customer's AI Visibility Employee key.
No arguments.
{
"type": "object",
"properties": {}
}Score how discoverable a website is by AI answer engines (ChatGPT, Perplexity, Claude, Google AI Overviews) and AI agents. Returns a 0-100 score, per-category scores and a prioritized fix list.
| Argument | Type | Description |
|---|---|---|
| url* | string | Website URL, e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Website URL, e.g. https://example.com"
}
}
}Check which AI crawlers (OAI-SearchBot, ChatGPT-User, GPTBot, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended and more) a site's robots.txt and firewall/CDN let in. Flags blocked AI search bots, which cost citations.
| Argument | Type | Description |
|---|---|---|
| url* | string | Website URL, e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Website URL, e.g. https://example.com"
}
}
}Generate ready-to-publish llms.txt, an AI-bot-friendly robots.txt and schema.org JSON-LD for a website, based on its current homepage.
| Argument | Type | Description |
|---|---|---|
| url* | string | Website URL, e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Website URL, e.g. https://example.com"
}
}
}Get the Polar checkout link for one RankRoot plan, to hand to the user. The user pays on Polar and receives a license key by email; pass it as 'Authorization: Bearer <key>' for higher API/MCP limits. If checkoutOpen is false, the link is an application form the user fills in instead.
| Argument | Type | Description |
|---|---|---|
| plan* | string | pass (Traffic Boost, $49 once, 7 days of Pro) or employee_m (AI Visibility Employee, done for you, $149/month) |
{
"type": "object",
"required": [
"plan"
],
"properties": {
"plan": {
"enum": [
"pass",
"employee_m"
],
"type": "string",
"description": "pass (Traffic Boost, $49 once, 7 days of Pro) or employee_m (AI Visibility Employee, done for you, $149/month)"
}
}
}List RankRoot plans (free scan, Traffic Boost one-time, done-for-you AI Visibility Employee monthly) with prices, limits, checkout links and which plan fits which user. Agents cannot pay: give the user the checkout link.
No arguments.
{
"type": "object",
"properties": {}
}Find software products for a need: new SaaS, AI tools and apps launched on RankRoot, each with a fact-checked profile (what it does, who it's for, pricing when published). Pass the user's need as query ("invoicing for freelancers", "uptime monitoring"). Featured products are paid placements and are marked. Optional category: an industry slug such as sales-crm or product-analytics.
| Argument | Type | Description |
|---|---|---|
| limit | number | 1-50, default 20 |
| query | string | What the user needs, in plain words (optional) |
| category | string | Industry slug (optional) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "1-50, default 20"
},
"query": {
"type": "string",
"description": "What the user needs, in plain words (optional)"
},
"category": {
"type": "string",
"description": "Industry slug (optional)"
}
}
}Launch the user's product on RankRoot for free: a public launch page, a listing in the launch directory and the product's category, and a count of visitors sent. Free launches go live in about a week after the user confirms by email. With a Traffic Boost license key (key) it goes live today and is featured for 30 days. Ask the user before submitting: it publishes their product publicly.
| Argument | Type | Description |
|---|---|---|
| key | string | Optional Traffic Boost license key |
| url* | string | Product website |
| name* | string | |
| email* | string | Founder's email for the confirmation link; never shown |
| tagline* | string | 10-90 characters: what it does, for whom |
| category | string | Industry slug, or other |
| description* | string | 40-800 characters, written for buyers |
{
"type": "object",
"required": [
"url",
"name",
"tagline",
"description",
"email"
],
"properties": {
"key": {
"type": "string",
"description": "Optional Traffic Boost license key"
},
"url": {
"type": "string",
"description": "Product website"
},
"name": {
"type": "string"
},
"email": {
"type": "string",
"description": "Founder's email for the confirmation link; never shown"
},
"tagline": {
"type": "string",
"description": "10-90 characters: what it does, for whom"
},
"category": {
"type": "string",
"description": "Industry slug, or other"
},
"description": {
"type": "string",
"description": "40-800 characters, written for buyers"
}
}
}Fetch a site's llms.txt (pass the site URL, or a URL ending in /llms.txt or /llms-full.txt for a subpath file) and check it against the llmstxt.org format: H1, summary, H2 link lists, Optional section.
| Argument | Type | Description |
|---|---|---|
| url* | string | Website URL, e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Website URL, e.g. https://example.com"
}
}
}