Operate the user's RankControl workspace: AI-search visibility and citations, SEO content planning and publishing, backlinks and outreach, social repurposing, brand memory, analytics, and reports. Side-effect tools default to a dry run. When the user asked for the change, call them with confirm=true; ask first only when the request is unclear. Removals and team changes return an approval link for the workspace owner.
Protocol
Pass100/10020 / 20 pts
Connection, authentication, and protocol compatibility.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Two numbers for the last 30 days: crawls30d (visits from AI crawlers) and aiVisits30d (people who arrived from an AI engine). Zeros until crawler or visit data comes in.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_overview_funnel",
"title": "Get overview funnel",
"description": "Two numbers for the last 30 days: crawls30d (visits from AI crawlers) and aiVisits30d (people who arrived from an AI engine). Zeros until crawler or visit data comes in.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get overview funnel",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Your AI visibility score by day across the 6 AI engines, oldest first: date, score (percent of checks that cited you), totalChecks and cited. days picks 30, 60 or 90 (default 30). Days without checks are left out, so expect gaps between weekly checks.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
days
Window size in days, default 30
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
How much of the web links to your domain and to each competitor you track, scored 0 to 10: your domain and score, peers (name, domain, score; highest first) and the peers' median. Null until a score exists. A new domain scoring near zero is why AI citations are still absent.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_web_footprint",
"title": "Get web footprint",
"description": "How much of the web links to your domain and to each competitor you track, scored 0 to 10: your domain and score, peers (name, domain, score; highest first) and the peers' median. Null until a score exists. A new domain scoring near zero is why AI citations are still absent.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get web footprint",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Web total history for the workspace and every competitor it tracks: each domain's monthly web total over the last 3 months, oldest month first. The web total counts citations in ChatGPT and Google answers, including queries you do not track.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations100/100
All four behavior hints are declared.
{
"title": "Get web total history",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_web_total_history",
"title": "Get web total history",
"description": "Web total history for the workspace and every competitor it tracks: each domain's monthly web total over the last 3 months, oldest month first. The web total counts citations in ChatGPT and Google answers, including queries you do not track.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get web total history",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Composite AI visibility score for the workspace, blending AI citation rate across the tracked models with Google and Bing rank share. Returns the composite and the score of each part: AI citations, Google and Bing (the AI part includes a per-model breakdown).
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_visibility_score",
"title": "Get visibility score",
"description": "Composite AI visibility score for the workspace, blending AI citation rate across the tracked models with Google and Bing rank share. Returns the composite and the score of each part: AI citations, Google and Bing (the AI part includes a per-model breakdown).",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get visibility score",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
The workspace's expeditions on the Overview: the current expedition, each step's name and whether it is done, and the next step. Use it to help the user finish setting up.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_setup_progress",
"title": "Get setup progress",
"description": "The workspace's expeditions on the Overview: the current expedition, each step's name and whether it is done, and the next step. Use it to help the user finish setting up.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get setup progress",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Published pages ranked by citability score (how extractable each page is for AI answers), worst first, each with its top open fixes. Use to decide which articles to improve.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Max rows, default 25
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Which domains AI engines cite when answering the brand's tracked queries, typed brand / competitive / UGC / editorial with counts and share. Shows where citation presence must be earned.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
days
Window in days, default 30
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Share of voice vs competitors: the brand's citation rate, top competitor mention rates, and the brand's share of all brand appearances in AI answers over the window.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
days
Window in days, default 30
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
The workspace's tracked queries — the questions RankControl checks weekly across the 6 AI engines for brand citations — with their status and, for each tracked query, how many of the 6 engines cited it in their latest check.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_tracked_queries",
"title": "List tracked queries",
"description": "The workspace's tracked queries — the questions RankControl checks weekly across the 6 AI engines for brand citations — with their status and, for each tracked query, how many of the 6 engines cited it in their latest check.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "List tracked queries",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
How many queries you track against your plan's limit, as Query Control shows it (18/50 tracked): used and limit. At the limit, add_tracked_query needs a free slot first.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_query_slots",
"title": "Get query slots",
"description": "How many queries you track against your plan's limit, as Query Control shows it (18/50 tracked): used and limit. At the limit, add_tracked_query needs a free slot first.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get query slots",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Daily AI-crawler reachability probe result — a DIAGNOSTIC, not a traffic metric: whether the site's edge (e.g. Cloudflare Bot Fight Mode) or robots.txt blocks GPTBot/ClaudeBot. 'shielded' means browsers and bots are both challenged (site-wide shield, ambiguous for real, signed crawlers).
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Per-workspace analytics source setup: the selected writer for human traffic and AI-crawler data, which sources the setup qualifies for, and install state (Cloudflare zone/sync, WordPress plugin version, embed liveness). Both Analytics and Reports screens ship disabled until activated.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Select the active writer for a data type. Validated server-side against what the customer's setup supports. Switching aiCrawlers to cloudflare starts a backfill sync.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs65/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dataType
The data the source writes. aiCrawlers (AI crawler visits) is the only option.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
source
cloudflare, wordpress_plugin or site_hook
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Pick the Cloudflare zone to poll. A crawler source already set stays; Cloudflare becomes the source only when none is set, and its first sync backfills up to 7 days.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
Input documentation gives an agent enough context to populate the arguments.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Install site-wide visit tracking on the connected Framer project via its custom-code API. Dry run unless confirm is true. Confirming ALSO PUBLISHES the customer's Framer site. When the person asked for this, call it with confirm=true.
The description explains the capability, when to use it, and what to expect.
Inputs82/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "install_framer_embed",
"title": "Install framer embed",
"description": "Install site-wide visit tracking on the connected Framer project via its custom-code API. Dry run unless confirm is true. Confirming ALSO PUBLISHES the customer's Framer site. When the person asked for this, call it with confirm=true.",
"inputSchema": {
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"description": "Actually install (default: dry run)"
},
"integrationId": {
"type": "string",
"description": "Leave it out to use your connected Framer site"
}
}
},
"annotations": {
"title": "Install framer embed",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Register and apply the tracking loader via Webflow's Custom Code API. Dry run unless confirm is true. When the person asked for this, call it with confirm=true. Needs a site token with CMS + Custom code scopes (pass apiToken to upgrade the stored one). Goes live on the customer's next Webflow site publish.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
integrationId
Leave it out to use your connected Webflow site
Clear enough to supply this argument.
apiToken
New site token with CMS + Custom code scopes
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "install_webflow_custom_code",
"title": "Install webflow custom code",
"description": "Register and apply the tracking loader via Webflow's Custom Code API. Dry run unless confirm is true. When the person asked for this, call it with confirm=true. Needs a site token with CMS + Custom code scopes (pass apiToken to upgrade the stored one). Goes live on the customer's next Webflow site publish.",
"inputSchema": {
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"description": "Actually install (default: dry run)"
},
"apiToken": {
"type": "string",
"description": "New site token with CMS + Custom code scopes"
},
"integrationId": {
"type": "string",
"description": "Leave it out to use your connected Webflow site"
}
}
},
"annotations": {
"title": "Install webflow custom code",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Add a query. Weekly AI citation checks start immediately when a tracking slot is free; otherwise it is saved untracked. Pass coveredByContentId when the query is one of that article's question headings, so Content Ideas does not offer it again.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
queryText
The search/AI query to track
Clear enough to supply this argument.
coveredByContentId
contentPage id of the article that already answers this query
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_tracked_query",
"title": "Add tracked query",
"description": "Add a query. Weekly AI citation checks start immediately when a tracking slot is free; otherwise it is saved untracked. Pass coveredByContentId when the query is one of that article's question headings, so Content Ideas does not offer it again.",
"inputSchema": {
"type": "object",
"required": [
"queryText"
],
"properties": {
"queryText": {
"type": "string",
"description": "The search/AI query to track"
},
"coveredByContentId": {
"type": "string",
"description": "contentPage id of the article that already answers this query"
}
}
},
"annotations": {
"title": "Add tracked query",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Pause or resume weekly AI citation checks on a saved query. Tracking uses one of the plan's tracking slots; pausing frees it. The query is kept either way.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Tracked competitors used in share-of-voice and visibility comparisons, with each one's AI visibility score, citations of checks over the last 30 days, domain metrics and positioning analysis.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Start tracking a competitor (10 at most). It joins the weekly share-of-voice comparison with your own citation rate and the weekly competitor checks. Leave out websiteUrl to have the site found from the name. remove_competitor stops it.
Describe the returned information so the agent knows whether it will answer the request.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
name
Competitor name
Clear enough to supply this argument.
websiteUrl
Competitor website URL (optional; resolved from the name when omitted)
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_competitor",
"title": "Add competitor",
"description": "Start tracking a competitor (10 at most). It joins the weekly share-of-voice comparison with your own citation rate and the weekly competitor checks. Leave out websiteUrl to have the site found from the name. remove_competitor stops it.",
"inputSchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Competitor name"
},
"websiteUrl": {
"type": "string",
"description": "Competitor website URL (optional; resolved from the name when omitted)"
}
}
},
"annotations": {
"title": "Add competitor",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Stop tracking a competitor: it leaves share of voice and the weekly competitor checks. It waits for the workspace owner to approve it in RankControl; the answer is an approval link.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_competitor",
"title": "Remove competitor",
"description": "Stop tracking a competitor: it leaves share of voice and the weekly competitor checks. It waits for the workspace owner to approve it in RankControl; the answer is an approval link.",
"inputSchema": {
"type": "object",
"required": [
"competitorId"
],
"properties": {
"competitorId": {
"type": "string",
"description": "Competitor id from get_competitors"
}
}
},
"annotations": {
"title": "Remove competitor",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
The workspace's topics, each with id and name. Tracked queries, content ideas and planned articles all group under them, and plan_content takes their names. Empty until topics are set with set_topics.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_topics",
"title": "Get topics",
"description": "The workspace's topics, each with id and name. Tracked queries, content ideas and planned articles all group under them, and plan_content takes their names. Empty until topics are set with set_topics.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get topics",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Replace the FULL topic list. Send every topic that should exist; missing ones are removed, new ones created, duplicates merged. Read get_topics first and modify that list. Up to 20 topics.
The description explains the capability, when to use it, and what to expect.
Inputs74/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
topics
The complete list of topic names
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Remove a planned title from the content calendar. The title's keyword returns to Content Ideas as a saved query, so the topic is not lost. Only planned rows qualify; use archive for generated articles.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contentId
Planned contentPage id
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description73/100
Traffic overview from RankControl's own page analytics: total page views, unique visitors, sessions, bounce rate, and average time on page. With scope "site" and Google Analytics connected, the whole site from Google Analytics instead: visits with the same days before, visits from search and from AI by engine, a visits trend, and top pages.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
days
Window in days, default 30
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
scope
"ours" (default): visits to your RankControl articles, from RankControl's own counter. "site": the whole site from Google Analytics, when it is connected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_traffic_overview",
"title": "Get traffic overview",
"description": "Traffic overview from RankControl's own page analytics: total page views, unique visitors, sessions, bounce rate, and average time on page. With scope \"site\" and Google Analytics connected, the whole site from Google Analytics instead: visits with the same days before, visits from search and from AI by engine, a visits trend, and top pages.",
"inputSchema": {
"type": "object",
"properties": {
"days": {
"enum": [
"7",
"30",
"90"
],
"type": "string",
"description": "Window in days, default 30"
},
"scope": {
"enum": [
"ours",
"site"
],
"type": "string",
"description": "\"ours\" (default): visits to your RankControl articles, from RankControl's own counter. \"site\": the whole site from Google Analytics, when it is connected."
}
}
},
"annotations": {
"title": "Get traffic overview",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Verified Google and Bing positions per keyword (top 30), with Search Console clicks, impressions and average position when connected (gscPosition is an average over the searches you appeared in, never a rank), which page earned each query and whether it is one of your articles (isOurs), and how often Google's AI Overview shows above each keyword and cites one of your pages (a rate over the last 8 weekly checks). Defaults to queries your published articles appear for.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
scope
"ours" (default): queries your published articles appear for. "site": everything on the domain, including pages RankControl did not write.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_rankings",
"title": "Get rankings",
"description": "Verified Google and Bing positions per keyword (top 30), with Search Console clicks, impressions and average position when connected (gscPosition is an average over the searches you appeared in, never a rank), which page earned each query and whether it is one of your articles (isOurs), and how often Google's AI Overview shows above each keyword and cites one of your pages (a rate over the last 8 weekly checks). Defaults to queries your published articles appear for.",
"inputSchema": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"description": "\"ours\" (default): queries your published articles appear for. \"site\": everything on the domain, including pages RankControl did not write."
}
}
},
"annotations": {
"title": "Get rankings",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Invite a member to the workspace with per-screen none/read/write access (unspecified screens default to none — grant at least one). Dry-run unless confirm is true; confirming sends the invite email. When the person asked for this, call it with confirm=true.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
email
Invitee email address
Clear enough to supply this argument.
screenPermissions › overview
Overview screen access
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenPermissions › content
Content screen access
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenPermissions › visibility
Visibility screen access
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenPermissions › brandControl
Brand Control screen access
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenPermissions › linkControl
Link Control screen access
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenPermissions › analytics
Analytics screen access
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenPermissions › reports
Reports screen access
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
confirm
Set true to actually send the invite (default dry-run)
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Cancel a pending team invite so it can no longer be accepted. It waits for the workspace owner to approve it in RankControl; the answer is an approval link. Invitation ids come from get_team.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "revoke_team_invite",
"title": "Revoke team invite",
"description": "Cancel a pending team invite so it can no longer be accepted. It waits for the workspace owner to approve it in RankControl; the answer is an approval link. Invitation ids come from get_team.",
"inputSchema": {
"type": "object",
"required": [
"invitationId"
],
"properties": {
"invitationId": {
"type": "string",
"description": "Pending invite id from get_team"
}
}
},
"annotations": {
"title": "Revoke team invite",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Remove a member from the workspace (access revoked immediately). Dry-run unless confirm is true. When the person asked for this, call it with confirm=true.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_team_member",
"title": "Remove team member",
"description": "Remove a member from the workspace (access revoked immediately). Dry-run unless confirm is true. When the person asked for this, call it with confirm=true.",
"inputSchema": {
"type": "object",
"required": [
"userId"
],
"properties": {
"userId": {
"type": "string",
"description": "Member user id from get_team"
},
"confirm": {
"type": "boolean",
"description": "Set true to remove the member (default: dry run)"
}
}
},
"annotations": {
"title": "Remove team member",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Your link outreach prospects, newest first, one row per site: domain, url, status (identified, contacted, replied, link_placed or rejected), the article it's for, Domain Rating (dr, with drSource ahrefs; dataforseo marks an estimate for a domain Ahrefs has no number for), contact email and name once found, send and reply dates, the latest reply and how it was classed, follow-ups, and whether a placed link was seen on the page.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_outreach_prospects",
"title": "List outreach prospects",
"description": "Your link outreach prospects, newest first, one row per site: domain, url, status (identified, contacted, replied, link_placed or rejected), the article it's for, Domain Rating (dr, with drSource ahrefs; dataforseo marks an estimate for a domain Ahrefs has no number for), contact email and name once found, send and reply dates, the latest reply and how it was classed, follow-ups, and whether a placed link was seen on the page.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "List outreach prospects",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Outreach funnel for the last 90 days by how each prospect was found (intersection = competitor linkers, footprint = resource pages, mention = topical mentions, fresh = fresh competitor links, brand_mention = brand mentions, legacy = earlier rows): prospects, sent, replied and placed with reply and placement rates per send, plus the total. The harvest reads the same numbers to weight its methods; nothing to configure.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_outreach_stats",
"title": "Get outreach stats",
"description": "Outreach funnel for the last 90 days by how each prospect was found (intersection = competitor linkers, footprint = resource pages, mention = topical mentions, fresh = fresh competitor links, brand_mention = brand mentions, legacy = earlier rows): prospects, sent, replied and placed with reply and placement rates per send, plus the total. The harvest reads the same numbers to weight its methods; nothing to configure.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get outreach stats",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
AI-draft the next reply to a prospect who answered (status replied or rejected; auto-replies don't count). Returns subject and body only. Nothing sends: pass that subject and body to queue_outreach_email to send it.
Describe the returned information so the agent knows whether it will answer the request.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Queue an outreach email to a prospect. It sends from the workspace's own connected mailbox, paced automatically with a daily cap. Uses the stored draft unless subject/body are given (a reply to a prospect who answered must pass both); a "[Your name]" sign-off in the draft is replaced with the owner's profile name at send time. Dry-run unless confirm is true — a confirmed queue leads to a REAL email being sent. When the person asked for this, call it with confirm=true.
Describe the returned information so the agent knows whether it will answer the request.
Inputs84/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
backlinkId
Prospect id from list_outreach_prospects
Clear enough to supply this argument.
subject
Override the drafted subject
Clear enough to supply this argument.
body
Override the drafted body
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
confirm
Set true to actually queue the send
Explain what happens when this optional value is omitted.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "queue_outreach_email",
"title": "Queue outreach email",
"description": "Queue an outreach email to a prospect. It sends from the workspace's own connected mailbox, paced automatically with a daily cap. Uses the stored draft unless subject/body are given (a reply to a prospect who answered must pass both); a \"[Your name]\" sign-off in the draft is replaced with the owner's profile name at send time. Dry-run unless confirm is true — a confirmed queue leads to a REAL email being sent. When the person asked for this, call it with confirm=true.",
"inputSchema": {
"type": "object",
"required": [
"backlinkId"
],
"properties": {
"body": {
"type": "string",
"description": "Override the drafted body"
},
"confirm": {
"type": "boolean",
"description": "Set true to actually queue the send"
},
"subject": {
"type": "string",
"description": "Override the drafted subject"
},
"backlinkId": {
"type": "string",
"description": "Prospect id from list_outreach_prospects"
}
}
},
"annotations": {
"title": "Queue outreach email",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Every article in the workspace, archived ones included: id, title, status (planned, draft, published or archived), contentType, slug, wordCount, scheduledAt, publishedAt, the live url, health and citability scores, and Google clicks, impressions and position for published articles with Search Console data.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_content",
"title": "List content",
"description": "Every article in the workspace, archived ones included: id, title, status (planned, draft, published or archived), contentType, slug, wordCount, scheduledAt, publishedAt, the live url, health and citability scores, and Google clicks, impressions and position for published articles with Search Console data.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "List content",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Generate candidate article titles (capacity-gated). This DOES NOT put anything on the calendar: review the returned titles, then call commit_planned_titles with the keepers. To plan titles about something specific, pass it as subject with the workspace topics it fits as topics. If it fits none of them, offer to add a topic first (set_topics). Costly; capped at 5/min.
Describe the returned information so the agent knows whether it will answer the request.
Inputs79/100
Resolve the mismatch between this description and its schema constraints.
topics
Topic names from get_topics; omit for auto
Clear enough to supply this argument.
subject
What the titles should be about, in the user's words (150 characters max). Needs topics.
Resolve the mismatch between this description and its schema constraints.
contentTypes
Article formats to plan, from the ones turned on in get_article_settings. Leave it out to use any format that's on.
Clear enough to supply this argument.
maxDifficulty
Keyword-difficulty ceiling
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
intents
informational / commercial / transactional
Explain what happens when this optional value is omitted.
useCitationGaps
Target queries where AI cites competitors but not us
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "plan_content",
"title": "Plan content",
"description": "Generate candidate article titles (capacity-gated). This DOES NOT put anything on the calendar: review the returned titles, then call commit_planned_titles with the keepers. To plan titles about something specific, pass it as subject with the workspace topics it fits as topics. If it fits none of them, offer to add a topic first (set_topics). Costly; capped at 5/min.",
"inputSchema": {
"type": "object",
"properties": {
"topics": {
"type": "array",
"items": {
"type": "string"
},
"description": "Topic names from get_topics; omit for auto"
},
"intents": {
"type": "array",
"items": {
"type": "string"
},
"description": "informational / commercial / transactional"
},
"subject": {
"type": "string",
"description": "What the titles should be about, in the user's words (150 characters max). Needs topics."
},
"contentTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Article formats to plan, from the ones turned on in get_article_settings. Leave it out to use any format that's on."
},
"maxDifficulty": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Keyword-difficulty ceiling"
},
"useRankingGaps": {
"type": "boolean",
"description": "Target keywords ranking page 2-3 or slipping"
},
"useCitationGaps": {
"type": "boolean",
"description": "Target queries where AI cites competitors but not us"
}
}
},
"annotations": {
"title": "Plan content",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Approve reviewed titles onto the content calendar (the approval half of the plan→commit gate). Pass rejected candidates in `discarded` so their keywords recycle into Content Ideas.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs50/100
Explain the meaning of this value, not just its name.
runId
The runId plan_content returned with these titles
Explain the meaning of this value, not just its name.
titles › items › title
Title from plan_content
Explain the meaning of this value, not just its name.
titles › items › targetKeyword
Target keyword from plan_content
Explain the meaning of this value, not just its name.
titles › items › searchVolume
Search volume from plan_content
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
titles › items › keywordDifficulty
Keyword difficulty from plan_content
Explain the meaning of this value, not just its name.
titles › items › searchIntent
Search intent from plan_content
Explain the meaning of this value, not just its name.
discarded › items › title
Title from plan_content
Explain the meaning of this value, not just its name.
discarded › items › targetKeyword
Target keyword from plan_content
Explain the meaning of this value, not just its name.
discarded › items › searchVolume
Search volume from plan_content
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
discarded › items › keywordDifficulty
Keyword difficulty from plan_content
Explain the meaning of this value, not just its name.
discarded › items › searchIntent
Search intent from plan_content
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Publish an article to the customer's connected CMS. Defaults to a DRY RUN describing what would happen. When the person asked for this, call it with confirm=true. Delivery runs after this call returns. If the article does not go live, list_content shows its lastPublishError. Webhook receivers: https://rctrl.com/docs/webhook
The description explains the capability, when to use it, and what to expect.
Inputs73/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contentId
The content page id
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "publish_content",
"title": "Publish content",
"description": "Publish an article to the customer's connected CMS. Defaults to a DRY RUN describing what would happen. When the person asked for this, call it with confirm=true. Delivery runs after this call returns. If the article does not go live, list_content shows its lastPublishError. Webhook receivers: https://rctrl.com/docs/webhook",
"inputSchema": {
"type": "object",
"required": [
"contentId"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Set true to actually publish (default: dry run)"
},
"contentId": {
"type": "string",
"description": "The content page id"
}
}
},
"annotations": {
"title": "Publish content",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Change a written article's title, meta title (60 characters at most) or meta description (155 at most). The article's URL does not change. Defaults to a DRY RUN describing what would happen. When the person asked for this, call it with confirm=true. On a published article the change also goes to the customer's site.
The description explains the capability, when to use it, and what to expect.
Inputs70/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contentId
The content page id
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
title
New title
Explain the meaning of this value, not just its name.
metaTitle
New meta title, 60 characters at most
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
metaDescription
New meta description, 155 characters at most
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_article_meta",
"title": "Update article meta",
"description": "Change a written article's title, meta title (60 characters at most) or meta description (155 at most). The article's URL does not change. Defaults to a DRY RUN describing what would happen. When the person asked for this, call it with confirm=true. On a published article the change also goes to the customer's site.",
"inputSchema": {
"type": "object",
"required": [
"contentId"
],
"properties": {
"title": {
"type": "string",
"description": "New title"
},
"confirm": {
"type": "boolean",
"description": "Set true to actually save (default: dry run)"
},
"contentId": {
"type": "string",
"description": "The content page id"
},
"metaTitle": {
"type": "string",
"description": "New meta title, 60 characters at most"
},
"metaDescription": {
"type": "string",
"description": "New meta description, 155 characters at most"
}
}
},
"annotations": {
"title": "Update article meta",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Write a PLANNED article's body immediately instead of waiting for the scheduled pipeline (generate-only: its publish slot is unchanged). Allowed for past-due slots and up to 3 days ahead, and at most 5 articles in any 24 hours (the dry run reports withinDailyLimit and nextWriteAt). Defaults to a DRY RUN. When the person asked for this, call it with confirm=true. To write several articles, use write_articles.
Describe the returned information so the agent knows whether it will answer the request.
Inputs72/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contentId
The planned content page id
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
confirm
Set true to actually start generation (default: dry run)
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "generate_article",
"title": "Generate article",
"description": "Write a PLANNED article's body immediately instead of waiting for the scheduled pipeline (generate-only: its publish slot is unchanged). Allowed for past-due slots and up to 3 days ahead, and at most 5 articles in any 24 hours (the dry run reports withinDailyLimit and nextWriteAt). Defaults to a DRY RUN. When the person asked for this, call it with confirm=true. To write several articles, use write_articles.",
"inputSchema": {
"type": "object",
"required": [
"contentId"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Set true to actually start generation (default: dry run)"
},
"contentId": {
"type": "string",
"description": "The planned content page id"
}
}
},
"annotations": {
"title": "Generate article",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Write several PLANNED articles one after another, and publish each one when publish is true: the next ones in calendar order (next), or the ones you name (contentIds). Each article follows Write now's rules: Auto-write off, next in line, up to 3 days before its day, at most 5 in any 24 hours. News and trending articles are written but never published by a run. Defaults to a DRY RUN that lists what would be written and what would stop it. When the person asked for this, call it with confirm=true. Follow progress with get_write_runs.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
next
How many of the next planned articles to write
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
contentIds
Planned article ids, instead of next
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "write_articles",
"title": "Write articles",
"description": "Write several PLANNED articles one after another, and publish each one when publish is true: the next ones in calendar order (next), or the ones you name (contentIds). Each article follows Write now's rules: Auto-write off, next in line, up to 3 days before its day, at most 5 in any 24 hours. News and trending articles are written but never published by a run. Defaults to a DRY RUN that lists what would be written and what would stop it. When the person asked for this, call it with confirm=true. Follow progress with get_write_runs.",
"inputSchema": {
"type": "object",
"properties": {
"next": {
"type": "number",
"maximum": 20,
"minimum": 1,
"description": "How many of the next planned articles to write"
},
"confirm": {
"type": "boolean",
"description": "Set true to start (default: dry run)"
},
"publish": {
"type": "boolean",
"description": "Publish each article once it is written"
},
"contentIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Planned article ids, instead of next"
}
}
},
"annotations": {
"title": "Write articles",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
Recent write runs: each article's state (waiting, writing, written, publishing, live, review: written and waiting for a person to publish, failed, skipped) and why a run stopped.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Where a change that waits for the workspace owner stands: pending, running, done, failed, declined or expired, and what happened. The approvalId comes from an approval_required answer; only the owner approves, in RankControl.
Describe the returned information so the agent knows whether it will answer the request.
Inputs90/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_approval",
"title": "Get approval",
"description": "Where a change that waits for the workspace owner stands: pending, running, done, failed, declined or expired, and what happened. The approvalId comes from an approval_required answer; only the owner approves, in RankControl.",
"inputSchema": {
"type": "object",
"required": [
"approvalId"
],
"properties": {
"approvalId": {
"type": "string",
"description": "Id from an approval_required answer"
}
}
},
"annotations": {
"title": "Get approval",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
The workspace's article settings: articleSettings (auto-write, auto-publish, images, title in hero image, section infographics, Related Reading, YouTube, emojis, link counts, global instructions and the formats turned on), flexibleScheduling and styleSet (the hero image style). Change them with update_article_settings. News and trending articles always publish manually, whatever auto-publish says.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Change the workspace's article settings. Only the fields you pass change; the rest keep their values. flexibleScheduling true allows 1 to 5 articles a day and lets you move planned articles by hand. styleSet picks the image style for hero images. get_article_settings shows the current values.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Explain the meaning of this value, not just its name.
articleSettings › autoPublish
Publish automatically on each article's scheduled day. False: you review and publish each one yourself. News and trending articles always wait for your approval.
Clear enough to supply this argument.
articleSettings › autoGenerate
Off = fully manual mode: articles are written only on demand (generate_article) and publish only from the editor. Turning it on needs a publishing destination that has already put at least one article live on the site.
Clear enough to supply this argument.
articleSettings › includeInfographics
AI hero + section images
Explain the meaning of this value, not just its name.
articleSettings › titleInHeroImage
Write the post title into the hero image
Clear enough to supply this argument.
articleSettings › includeSectionInfographics
Informational panels in 2,000+ word articles
Clear enough to supply this argument.
articleSettings › includeRelatedReading
Related Reading link block at the end
Clear enough to supply this argument.
articleSettings › includeYouTube
A relevant YouTube video embedded where a walkthrough would help
Clear enough to supply this argument.
articleSettings › useEmojis
Tasteful emojis in headers and lists
Clear enough to supply this argument.
articleSettings › internalLinksPerArticle
Links to your own pages in each article (1 to 8)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
articleSettings › externalLinksPerArticle
Links to other sites in each article (0 to 15)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
articleSettings › globalInstructions
Editorial rules for every article, like "Always mention our free migration service."
Clear enough to supply this argument.
flexibleScheduling
true allows 1 to 5 articles a day and lets you move planned articles by hand
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
styleSet
Your workspace's image style, one of the 25 styles.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_article_settings",
"title": "Update article settings",
"description": "Change the workspace's article settings. Only the fields you pass change; the rest keep their values. flexibleScheduling true allows 1 to 5 articles a day and lets you move planned articles by hand. styleSet picks the image style for hero images. get_article_settings shows the current values.",
"inputSchema": {
"type": "object",
"properties": {
"styleSet": {
"enum": [
"editorial",
"cinematic",
"documentary",
"studio",
"conceptual-metaphor",
"editorial-illustration",
"clay-3d",
"isometric",
"line-art-minimal",
"dark-gradient-glass",
"travel-poster",
"watercolor-wash",
"retro-futurism",
"ukiyo-e",
"paper-diorama",
"gouache-metaphor",
"minimalist",
"riso-print",
"pop-art",
"corporate-flat",
"memphis",
"bauhaus-poster",
"flat-vector",
"cartoon-creator",
"soft-anime"
],
"type": "string",
"description": "Your workspace's image style, one of the 25 styles."
},
"articleSettings": {
"type": "object",
"properties": {
"useEmojis": {
"type": "boolean",
"description": "Tasteful emojis in headers and lists"
},
"autoPublish": {
"type": "boolean",
"description": "Publish automatically on each article's scheduled day. False: you review and publish each one yourself. News and trending articles always wait for your approval."
},
"autoGenerate": {
"type": "boolean",
"description": "Off = fully manual mode: articles are written only on demand (generate_article) and publish only from the editor. Turning it on needs a publishing destination that has already put at least one article live on the site."
},
"includeYouTube": {
"type": "boolean",
"description": "A relevant YouTube video embedded where a walkthrough would help"
},
"titleInHeroImage": {
"type": "boolean",
"description": "Write the post title into the hero image"
},
"globalInstructions": {
"type": "string",
"description": "Editorial rules for every article, like \"Always mention our free migration service.\""
},
"includeInfographics": {
"type": "boolean",
"description": "AI hero + section images"
},
"includeRelatedReading": {
"type": "boolean",
"description": "Related Reading link block at the end"
},
"externalLinksPerArticle": {
"type": "number",
"maximum": 15,
"minimum": 0,
"description": "Links to other sites in each article (0 to 15)"
},
"internalLinksPerArticle": {
"type": "number",
"maximum": 8,
"minimum": 1,
"description": "Links to your own pages in each article (1 to 8)"
},
"includeSectionInfographics": {
"type": "boolean",
"description": "Informational panels in 2,000+ word articles"
}
},
"description": "The article settings to change. Fields you leave out stay as they are."
},
"flexibleScheduling": {
"type": "boolean",
"description": "true allows 1 to 5 articles a day and lets you move planned articles by hand"
}
}
},
"annotations": {
"title": "Update article settings",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Move a PLANNED article to another day (requires the flexible schedule; max 5/day; the exact hour is placed automatically). Pass the target day as YYYY-MM-DD in the workspace's timezone.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
contentId
Planned article id from list_content
Clear enough to supply this argument.
date
Target day as YYYY-MM-DD in the workspace's timezone
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "reschedule_article",
"title": "Reschedule article",
"description": "Move a PLANNED article to another day (requires the flexible schedule; max 5/day; the exact hour is placed automatically). Pass the target day as YYYY-MM-DD in the workspace's timezone.",
"inputSchema": {
"type": "object",
"required": [
"contentId",
"date"
],
"properties": {
"date": {
"type": "string",
"description": "Target day as YYYY-MM-DD in the workspace's timezone"
},
"contentId": {
"type": "string",
"description": "Planned article id from list_content"
}
}
},
"annotations": {
"title": "Reschedule article",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
How the workspace's articles interlink: how many published articles link TO this page (with the source list) and how many internal links it sends out. Recorded from the real injected links at publish render time.
Describe the returned information so the agent knows whether it will answer the request.
Inputs50/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contentId
The content page id
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_internal_links",
"title": "Get internal links",
"description": "How the workspace's articles interlink: how many published articles link TO this page (with the source list) and how many internal links it sends out. Recorded from the real injected links at publish render time.",
"inputSchema": {
"type": "object",
"required": [
"contentId"
],
"properties": {
"contentId": {
"type": "string",
"description": "The content page id"
}
}
},
"annotations": {
"title": "Get internal links",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Your site's pages that articles can link to, in the text and in the Related Reading block. Each row: id, url, title, description, isLinkable (whether new articles may link to it), isAlive (whether the page still loads) and priority. Empty until pages are added or detected.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_site_pages",
"title": "List site pages",
"description": "Your site's pages that articles can link to, in the text and in the Related Reading block. Each row: id, url, title, description, isLinkable (whether new articles may link to it), isAlive (whether the page still loads) and priority. Empty until pages are added or detected.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "List site pages",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Scan the customer's sitemap (nested indexes handled) or crawl a blog root page and return same-site page URLs, minus the articles RankControl published (those are linked already). The source is remembered and re-read daily. Costly (3/min); review the URLs, then call add_site_pages with the keepers.
Describe the returned information so the agent knows whether it will answer the request.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
source
sitemap reads a sitemap XML. blogroot collects the links on one page, like your blog index.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "detect_site_links",
"title": "Detect site links",
"description": "Scan the customer's sitemap (nested indexes handled) or crawl a blog root page and return same-site page URLs, minus the articles RankControl published (those are linked already). The source is remembered and re-read daily. Costly (3/min); review the URLs, then call add_site_pages with the keepers.",
"inputSchema": {
"type": "object",
"required": [
"source",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Sitemap XML URL or a page URL to crawl"
},
"source": {
"enum": [
"sitemap",
"blogroot"
],
"type": "string",
"description": "sitemap reads a sitemap XML. blogroot collects the links on one page, like your blog index."
}
}
},
"annotations": {
"title": "Detect site links",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Add site page URLs for internal linking. Duplicates and articles RankControl published are skipped; page titles fill in automatically in the background.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "set_site_page_linking",
"title": "Set site page linking",
"description": "Turn linking to a site page on or off. Off keeps the page in your list, but articles published after this don't link to it.",
"inputSchema": {
"type": "object",
"required": [
"pageId",
"isLinkable"
],
"properties": {
"pageId": {
"type": "string",
"description": "Page id from list_site_pages"
},
"isLinkable": {
"type": "boolean",
"description": "true lets new articles link to the page, false stops them"
}
}
},
"annotations": {
"title": "Set site page linking",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_site_page",
"title": "Remove site page",
"description": "Remove a page from your site pages. Articles published after this don't link to it, and scans don't add it back; add_site_pages adds it again.",
"inputSchema": {
"type": "object",
"required": [
"pageId"
],
"properties": {
"pageId": {
"type": "string",
"description": "Page id from list_site_pages"
}
}
},
"annotations": {
"title": "Remove site page",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Published articles with their social repurpose drafts per platform (platform + status chips). Shows which articles still need drafts and which scheduler is connected (Buffer or Postiz).
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_repurpose_queue",
"title": "List repurpose queue",
"description": "Published articles with their social repurpose drafts per platform (platform + status chips). Shows which articles still need drafts and which scheduler is connected (Buffer or Postiz).",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "List repurpose queue",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Full social drafts (title, body, images, status) for one published article across the 8 platforms (LinkedIn, X/Twitter, Pinterest, Instagram, Facebook, Threads, YouTube, TikTok).
The description explains the capability, when to use it, and what to expect.
Inputs50/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contentId
The content page id
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Draft platform-native social posts for all eight platforms from a published article. Only for an article with no drafts yet; edit existing drafts in the dashboard. Defaults to a DRY RUN. When the person asked for this, call it with confirm=true.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "generate_repurpose_drafts",
"title": "Generate repurpose drafts",
"description": "Draft platform-native social posts for all eight platforms from a published article. Only for an article with no drafts yet; edit existing drafts in the dashboard. Defaults to a DRY RUN. When the person asked for this, call it with confirm=true.",
"inputSchema": {
"type": "object",
"required": [
"contentId"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Set true to write the drafts (default: dry run)"
},
"contentId": {
"type": "string",
"description": "Published article id from list_content"
}
}
},
"annotations": {
"title": "Generate repurpose drafts",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_repurpose_draft",
"title": "Update repurpose draft",
"description": "Change a social post draft's text or title before you push or post it. Only the fields you pass change. Draft ids come from get_repurpose_drafts.",
"inputSchema": {
"type": "object",
"required": [
"draftId"
],
"properties": {
"body": {
"type": "string",
"description": "The new post text"
},
"title": {
"type": "string",
"description": "The new title, for drafts that have one"
},
"draftId": {
"type": "string",
"description": "Draft id from get_repurpose_drafts"
}
}
},
"annotations": {
"title": "Update repurpose draft",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Send a repurpose draft to a connected scheduler's channels: Postiz or Buffer (schedule, save as a draft, or add to Buffer's queue). YouTube and TikTok drafts are recording scripts and never push. PUBLICLY VISIBLE side effect: defaults to a DRY RUN. When the person asked for this, call it with confirm=true.
The description explains the capability, when to use it, and what to expect.
Inputs67/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
draftId
Draft id from get_repurpose_drafts
Clear enough to supply this argument.
scheduler
Which scheduler; required when both are connected
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
integrationIds
Channel ids from list_postiz_channels (required with confirm)
Resolve the mismatch between this description and its schema constraints.
scheduleType
Default draft; queue is Buffer only
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
date
ISO time for scheduleType=schedule
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
confirm
Set true to send it to the scheduler (default: dry run)
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "push_repurpose_draft",
"title": "Push repurpose draft",
"description": "Send a repurpose draft to a connected scheduler's channels: Postiz or Buffer (schedule, save as a draft, or add to Buffer's queue). YouTube and TikTok drafts are recording scripts and never push. PUBLICLY VISIBLE side effect: defaults to a DRY RUN. When the person asked for this, call it with confirm=true.",
"inputSchema": {
"type": "object",
"required": [
"draftId"
],
"properties": {
"date": {
"type": "string",
"description": "ISO time for scheduleType=schedule"
},
"confirm": {
"type": "boolean",
"description": "Set true to send it to the scheduler (default: dry run)"
},
"draftId": {
"type": "string",
"description": "Draft id from get_repurpose_drafts"
},
"scheduler": {
"enum": [
"postiz",
"buffer"
],
"type": "string",
"description": "Which scheduler; required when both are connected"
},
"scheduleType": {
"enum": [
"schedule",
"draft",
"queue"
],
"type": "string",
"description": "Default draft; queue is Buffer only"
},
"integrationIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Channel ids from list_postiz_channels (required with confirm)"
}
}
},
"annotations": {
"title": "Push repurpose draft",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Scored content-idea backlog: uncovered tracked queries ranked by citation gaps, competitor citations, trending topics, and quick-win rankings. Each idea carries a suggested title, winnability metrics and, where the site already ranks for it or ChatGPT read one of its pages, that page: rankingPage or readPage, with articleId when it is one of the workspace's articles and insightItemId when the page has an open Insights item.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_content_ideas",
"title": "Get content ideas",
"description": "Scored content-idea backlog: uncovered tracked queries ranked by citation gaps, competitor citations, trending topics, and quick-win rankings. Each idea carries a suggested title, winnability metrics and, where the site already ranks for it or ChatGPT read one of its pages, that page: rankingPage or readPage, with articleId when it is one of the workspace's articles and insightItemId when the page has an open Insights item.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get content ideas",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
List Insights: what to work on next on the workspace's own site: its product and service pages, searches Google shows it for that no page is about, and problems across the whole site from the weekly crawl. Each item has the problem, its evidence lines, a suggested fix when there is one, and its one action. todo comes in the page's order; done holds finished and hidden items.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_insights",
"title": "Get insights",
"description": "List Insights: what to work on next on the workspace's own site: its product and service pages, searches Google shows it for that no page is about, and problems across the whole site from the weekly crawl. Each item has the problem, its evidence lines, a suggested fix when there is one, and its one action. todo comes in the page's order; done holds finished and hidden items.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get insights",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "hide_insight",
"title": "Hide insight",
"description": "Hide an Insights item the person doesn't want. It moves under Done as Hidden and does not come back. Item ids come from get_insights.",
"inputSchema": {
"type": "object",
"required": [
"itemId"
],
"properties": {
"itemId": {
"type": "string",
"description": "Item id from get_insights"
}
}
},
"annotations": {
"title": "Hide insight",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Move a Search Console item (a search Google shows the site for, but no page is about) to Content Ideas: the Insights item's "Move to Content Ideas". The search becomes an untracked idea tagged Search Console, planned like any other idea, and the item moves under Done. Item ids come from get_insights.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "move_insight_to_ideas",
"title": "Move insight to ideas",
"description": "Move a Search Console item (a search Google shows the site for, but no page is about) to Content Ideas: the Insights item's \"Move to Content Ideas\". The search becomes an untracked idea tagged Search Console, planned like any other idea, and the item moves under Done. Item ids come from get_insights.",
"inputSchema": {
"type": "object",
"required": [
"itemId"
],
"properties": {
"itemId": {
"type": "string",
"description": "Item id from get_insights"
}
}
},
"annotations": {
"title": "Move insight to ideas",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Plan articles that link to one of the person's product or service pages: the Insights item's "Plan 3 articles that link here". Up to 3 articles about the page's main search, in the formats the workspace has on, each asked to link to the page once; they go on the calendar as planned articles. Defaults to a DRY RUN. When the person asked for this, call it with confirm=true. Item ids come from get_insights.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Input documentation gives an agent enough context to populate the arguments.
itemId
Item id from get_insights
Clear enough to supply this argument.
confirm
Set true to put the articles on the calendar (default: dry run)
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "plan_insight_articles",
"title": "Plan insight articles",
"description": "Plan articles that link to one of the person's product or service pages: the Insights item's \"Plan 3 articles that link here\". Up to 3 articles about the page's main search, in the formats the workspace has on, each asked to link to the page once; they go on the calendar as planned articles. Defaults to a DRY RUN. When the person asked for this, call it with confirm=true. Item ids come from get_insights.",
"inputSchema": {
"type": "object",
"required": [
"itemId"
],
"properties": {
"itemId": {
"type": "string",
"description": "Item id from get_insights"
},
"confirm": {
"type": "boolean",
"description": "Set true to put the articles on the calendar (default: dry run)"
}
}
},
"annotations": {
"title": "Plan insight articles",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Put one of your Content Ideas on the calendar as a planned article. Pass its queryText from get_content_ideas. The idea's own title and numbers are used; a title is generated only when it has none. Returns created: 1 when it went on the calendar, or 0 when nothing was added, for example when the calendar is full.
The description explains the capability, when to use it, and what to expect.
Inputs78/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "plan_content_idea",
"title": "Plan a content idea",
"description": "Put one of your Content Ideas on the calendar as a planned article. Pass its queryText from get_content_ideas. The idea's own title and numbers are used; a title is generated only when it has none. Returns created: 1 when it went on the calendar, or 0 when nothing was added, for example when the calendar is full.",
"inputSchema": {
"type": "object",
"required": [
"queryText"
],
"properties": {
"queryText": {
"type": "string",
"description": "The idea's keyword/query text"
}
}
},
"annotations": {
"title": "Plan a content idea",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Archive an article: it moves to the Archived tab and RankControl stops refreshing it. The published post stays live on your site; remove it there separately to take it down. It can't be restored. Refused while the article is still being written.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "archive_content",
"title": "Archive content",
"description": "Archive an article: it moves to the Archived tab and RankControl stops refreshing it. The published post stays live on your site; remove it there separately to take it down. It can't be restored. Refused while the article is still being written.",
"inputSchema": {
"type": "object",
"required": [
"contentId"
],
"properties": {
"contentId": {
"type": "string",
"description": "Article id from list_content"
}
}
},
"annotations": {
"title": "Archive content",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Up to four wins from the last 30 days, each with kind (page, query, keyword or backlink), title, detail and stat: the most-cited page, the biggest citation-rate jump for a query, the biggest Google ranking climb and the best new backlink. A win with nothing to show is left out. Null, with a hint, until the Reports screen is turned on (activate_analytics_screen).
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_top_wins",
"title": "Get top wins",
"description": "Up to four wins from the last 30 days, each with kind (page, query, keyword or backlink), title, detail and stat: the most-cited page, the biggest citation-rate jump for a query, the biggest Google ranking climb and the best new backlink. A win with nothing to show is left out. Null, with a hint, until the Reports screen is turned on (activate_analytics_screen).",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get top wins",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Recent runs per agent (radar, forge, recon, outreach, sentinel, amplify, social), each with startedAt, completedAt, status and triggeredBy. perAgent sets runs per agent (default 15, max 50) and sinceDays the window (default 30). Agents with no runs in the window are left out.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
perAgent
Runs per lane, default 15
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sinceDays
Window in days, default 30
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Every backlink row for the workspace, newest first: the linking page (linkingUrl, linkingDomain), targetUrl, anchorText, dofollow, domainAuthority, status and dates, plus its source (index, outreach, managed or network). Filter with status; get_backlink_stats gives the totals.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Backlink and outreach numbers in one call: total rows, discovered and lost links, average domain authority (avgDA), uniqueDomains, your site's indexed backlink and referring-domain totals once measured, outreach counts by stage (identified, contacted, replied, linkPlaced, rejected) and links built by source (outreach, social, network, managed). list_backlinks returns the rows.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Move an outreach prospect through the pipeline. A move to link_placed is confirmed by reading their page now and again tomorrow; the row keeps Placed and shows what was seen.
Describe the returned information so the agent knows whether it will answer the request.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
backlinkId
Prospect id from list_outreach_prospects
Clear enough to supply this argument.
status
The prospect's new stage
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_outreach_status",
"title": "Update outreach status",
"description": "Move an outreach prospect through the pipeline. A move to link_placed is confirmed by reading their page now and again tomorrow; the row keeps Placed and shows what was seen.",
"inputSchema": {
"type": "object",
"required": [
"backlinkId",
"status"
],
"properties": {
"status": {
"enum": [
"identified",
"contacted",
"replied",
"link_placed",
"rejected"
],
"type": "string",
"description": "The prospect's new stage"
},
"backlinkId": {
"type": "string",
"description": "Prospect id from list_outreach_prospects"
}
}
},
"annotations": {
"title": "Update outreach status",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Your Editorial Circle standing: stats (credit balance, earned30d, spent30d, creditValue, optedIn) and placements in two lists, hosted (links on your articles) and received (links to your site). Each placement has partner, page titles, targetUrl, anchorText, credits, status and createdAt, newest first.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_link_network",
"title": "Get Editorial Circle state",
"description": "Your Editorial Circle standing: stats (credit balance, earned30d, spent30d, creditValue, optedIn) and placements in two lists, hosted (links on your articles) and received (links to your site). Each placement has partner, page titles, targetUrl, anchorText, credits, status and createdAt, newest first.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get Editorial Circle state",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Join or leave the Editorial Circle. SIDE EFFECT on partner sites (leaving retires live links): defaults to a DRY RUN. When the person asked for this, call it with confirm=true.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
optIn
true joins the Editorial Circle, false leaves it and retires your live links
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "set_link_network_opt_in",
"title": "Set Editorial Circle opt-in",
"description": "Join or leave the Editorial Circle. SIDE EFFECT on partner sites (leaving retires live links): defaults to a DRY RUN. When the person asked for this, call it with confirm=true.",
"inputSchema": {
"type": "object",
"required": [
"optIn"
],
"properties": {
"optIn": {
"type": "boolean",
"description": "true joins the Editorial Circle, false leaves it and retires your live links"
},
"confirm": {
"type": "boolean",
"description": "Set true to apply the change (default: dry run)"
}
}
},
"annotations": {
"title": "Set Editorial Circle opt-in",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
Align the title with the capability actually described by this tool.
Description92/100
Remove one Editorial Circle link from an article on your site. RankControl republishes that article without the link, and the partner loses it. A link you received stays until the site that hosts it removes it. Dry run unless confirm is true; a confirmed call waits for the workspace owner to approve it in RankControl. Placement ids come from get_link_network.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_network_placement",
"title": "Remove Editorial Circle placement",
"description": "Remove one Editorial Circle link from an article on your site. RankControl republishes that article without the link, and the partner loses it. A link you received stays until the site that hosts it removes it. Dry run unless confirm is true; a confirmed call waits for the workspace owner to approve it in RankControl. Placement ids come from get_link_network.",
"inputSchema": {
"type": "object",
"required": [
"placementId"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "Set true to remove the link (default: dry run)"
},
"placementId": {
"type": "string",
"description": "Placement id from get_link_network"
}
}
},
"annotations": {
"title": "Remove Editorial Circle placement",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Counts of the Social tab's Reddit and X threads: total, by stage (identified, replyDrafted, engaged for posted, skipped), by platform (reddit, twitter) and by age (ranked, new), plus replies drafted in the last 30 days with and without a product mention (mention30d, helpful30d). All zeros until threads are found; list_social_threads returns the threads.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_social_stats",
"title": "Get social stats",
"description": "Counts of the Social tab's Reddit and X threads: total, by stage (identified, replyDrafted, engaged for posted, skipped), by platform (reddit, twitter) and by age (ranked, new), plus replies drafted in the last 30 days with and without a product mention (mention30d, helpful30d). All zeros until threads are found; list_social_threads returns the threads.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Get social stats",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_social_thread_status",
"title": "Update social thread status",
"description": "Skip a social thread so it leaves the queue (the only manual status; Posted is set automatically once your reply is found in the thread).",
"inputSchema": {
"type": "object",
"required": [
"threadId",
"status"
],
"properties": {
"status": {
"type": "string",
"description": "skipped, the only status you can set"
},
"threadId": {
"type": "string",
"description": "Thread id from list_social_threads"
}
}
},
"annotations": {
"title": "Update social thread status",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Open a drafted social thread to post the reply yourself: returns the thread URL (for X, a link that opens X's composer with the reply filled in) and starts four checks over 72 hours that mark the thread Posted once your reply is found there. Pass text to use an edited reply; X replies must be 280 characters or fewer.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "open_social_thread",
"title": "Open social thread",
"description": "Open a drafted social thread to post the reply yourself: returns the thread URL (for X, a link that opens X's composer with the reply filled in) and starts four checks over 72 hours that mark the thread Posted once your reply is found there. Pass text to use an edited reply; X replies must be 280 characters or fewer.",
"inputSchema": {
"type": "object",
"required": [
"threadId"
],
"properties": {
"text": {
"type": "string",
"description": "Your edited reply. Leave it out to use the draft."
},
"threadId": {
"type": "string",
"description": "Thread id from list_social_threads"
}
}
},
"annotations": {
"title": "Open social thread",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Save the X handle used to recognise your posted replies (optional; text matching covers the rest). Pass an empty handle to clear it.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
handle
Your X handle, with or without @. An empty string clears it.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Set social x handle",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "set_social_x_handle",
"title": "Set social x handle",
"description": "Save the X handle used to recognise your posted replies (optional; text matching covers the rest). Pass an empty handle to clear it.",
"inputSchema": {
"type": "object",
"required": [
"handle"
],
"properties": {
"handle": {
"type": "string",
"description": "Your X handle, with or without @. An empty string clears it."
}
}
},
"annotations": {
"title": "Set social x handle",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Save the Reddit account the Social tab drafts for: username (optional), comment karma, account age (under1mo, 1to6mo, 6moto2yr or over2yr), goal, founderStory and tone. Karma and age decide whether drafts may mention your product; the reply returns the readiness tier (warmup or ready). Replaces the stored profile — send every field.
The description explains the capability, when to use it, and what to expect.
Inputs79/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
username
Your Reddit username, with or without u/
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
karma
Your comment karma (0 or more)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
accountAge
under1mo | 1to6mo | 6moto2yr | over2yr
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
goal
What you want from Reddit
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
founderStory
Your real backstory. Drafts draw on it, in the first person, when it fits.
Clear enough to supply this argument.
tone
How your drafts sound
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
AI-draft a reply for a social thread. Nothing posts — the draft lands on the thread for human review. Subject to the same warm-up/pacing guards as the dashboard.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
threadId
Thread id from list_social_threads
Clear enough to supply this argument.
mentionMode
Brand-mention mode; warm-up accounts are clamped to none
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "draft_social_reply",
"title": "Draft social reply",
"description": "AI-draft a reply for a social thread. Nothing posts — the draft lands on the thread for human review. Subject to the same warm-up/pacing guards as the dashboard.",
"inputSchema": {
"type": "object",
"required": [
"threadId"
],
"properties": {
"threadId": {
"type": "string",
"description": "Thread id from list_social_threads"
},
"mentionMode": {
"enum": [
"none",
"natural",
"founderOpen"
],
"type": "string",
"description": "Brand-mention mode; warm-up accounts are clamped to none"
}
}
},
"annotations": {
"title": "Draft social reply",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Send a message or bug report to the RankControl team (emails support with the workspace identified; the org owner is set as reply-to). Use when an API call errors unexpectedly or data looks wrong — include the failing request, ids, and what you expected. Capped at 3/min.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
subject
A one-line summary
Clear enough to supply this argument.
message
Details: what happened, errors, ids, steps to reproduce
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "contact_support",
"title": "Contact support",
"description": "Send a message or bug report to the RankControl team (emails support with the workspace identified; the org owner is set as reply-to). Use when an API call errors unexpectedly or data looks wrong — include the failing request, ids, and what you expected. Capped at 3/min.",
"inputSchema": {
"type": "object",
"required": [
"subject",
"message"
],
"properties": {
"message": {
"type": "string",
"description": "Details: what happened, errors, ids, steps to reproduce"
},
"pageUrl": {
"type": "string",
"description": "Related dashboard or API URL"
},
"subject": {
"type": "string",
"description": "A one-line summary"
}
}
},
"annotations": {
"title": "Contact support",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
RankControl's help pages: setup guides for each publishing destination, the crawler and its IP address, AI crawler access, the API, CLI and MCP, getting started, and the plan and pricing. Without a page, lists the pages.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
page
Page slug, such as nextjs, bot, wordpress or plan-and-pricing
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_help_page",
"title": "Get help page",
"description": "RankControl's help pages: setup guides for each publishing destination, the crawler and its IP address, AI crawler access, the API, CLI and MCP, getting started, and the plan and pricing. Without a page, lists the pages.",
"inputSchema": {
"type": "object",
"properties": {
"page": {
"type": "string",
"description": "Page slug, such as nextjs, bot, wordpress or plan-and-pricing"
}
}
},
"annotations": {
"title": "Get help page",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
This workspace's billing as Settings, Billing shows it: status (trial, active or cancelling), billing cycle, next charge, add-ons, usage against the plan's limits and recent payments. Read-only; changes are made in Settings, Billing.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
The workspace's brand data in one read: brand profile (voice, colors, meta), links/CTAs, products, buyer profiles (ICPs) and brand guidelines. This is the context RankControl's writers use.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Mark your brand as reviewed, as the Overview's Mark reviewed button does. It completes the Confirm your brand step of Expedition I and can't be undone; marking it again changes nothing.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "confirm_brand_reviewed",
"title": "Confirm brand reviewed",
"description": "Mark your brand as reviewed, as the Overview's Mark reviewed button does. It completes the Confirm your brand step of Expedition I and can't be undone; marking it again changes nothing.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "Confirm brand reviewed",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Add a brand guideline, as Brand Control, Writing, Brand Guidelines does: a rule the writer follows in every article from now on, with its type, what to avoid and what to write instead (300 characters each). It starts switched on; set_brand_guideline_active turns it off. Returns the new guidelineId.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
type
What the guideline covers: tone, terminology, topic, style or factual
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
avoid
What the writer should avoid (300 characters max)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
instead
What to write instead (300 characters max)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Patch brand voice/style fields: tone, colors, defaultLocale, flexibleScheduling. They steer all future article generation. Also Brand Profile's Local business switch: localBusiness, and serviceArea (the area the business serves, like "Austin, Texas"; 100 characters at most, empty clears it). Only provided fields change.
The description explains the capability, when to use it, and what to expect.
Inputs71/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
tone
One of: professional, conversational, technical, friendly, journalistic, persuasive
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
primaryColor
Hex color, like #0F172A
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
secondaryColor
Hex color, like #F59E0B
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
defaultLocale
BCP-47 tag from the supported registry
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
flexibleScheduling
true allows 1 to 5 articles a day and lets you move planned articles by hand
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
localBusiness
Brand Profile's Local business switch
Explain the meaning of this value, not just its name.
serviceArea
The area the business serves, like "Austin, Texas". 100 characters at most; empty clears it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Update workspace identity: name, industry and subIndustry (values from the dashboard's industry list; a new industry without a subIndustry clears the old one), productDescription, authors (EEAT bylines used in article JSON-LD), styleReferenceUrls (articles whose writing style the writer imitates), brandAliases (other spellings and short forms of the brand; pages using them count as brand mentions) and brandExclusions (same-name companies or products whose pages are skipped). Every array REPLACES the stored list — call get_brand first and send the full updated list. Saving a name change runs the brand-mention search once a day at most. websiteUrl is immutable and cannot be changed.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Explain what happens when this optional value is omitted.
name
Brand name
Clear enough to supply this argument.
industry
Your industry, from the dashboard's list
Clear enough to supply this argument.
subIndustry
Specialty within the industry, from the same list
Explain what happens when this optional value is omitted.
productDescription
What you sell, in a sentence or two
Clear enough to supply this argument.
authors › items › name
Author's full name
Clear enough to supply this argument.
authors › items › bio
Short author bio
Clear enough to supply this argument.
authors › items › linkedinUrl
Person sameAs URL for article JSON-LD
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
styleReferenceUrls
Articles whose writing style your articles follow. Replaces the stored list.
Clear enough to supply this argument.
brandAliases
Other spellings and short forms of your brand name. Replaces the stored list.
Clear enough to supply this argument.
brandExclusions
Same-name companies or products to leave out of brand mentions. Replaces the stored list.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_brand_identity",
"title": "Update brand identity",
"description": "Update workspace identity: name, industry and subIndustry (values from the dashboard's industry list; a new industry without a subIndustry clears the old one), productDescription, authors (EEAT bylines used in article JSON-LD), styleReferenceUrls (articles whose writing style the writer imitates), brandAliases (other spellings and short forms of the brand; pages using them count as brand mentions) and brandExclusions (same-name companies or products whose pages are skipped). Every array REPLACES the stored list — call get_brand first and send the full updated list. Saving a name change runs the brand-mention search once a day at most. websiteUrl is immutable and cannot be changed.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Brand name"
},
"authors": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"bio": {
"type": "string",
"description": "Short author bio"
},
"name": {
"type": "string",
"description": "Author's full name"
},
"linkedinUrl": {
"type": "string",
"description": "Person sameAs URL for article JSON-LD"
}
}
},
"description": "Article bylines. Replaces the stored list."
},
"industry": {
"type": "string",
"description": "Your industry, from the dashboard's list"
},
"subIndustry": {
"type": "string",
"description": "Specialty within the industry, from the same list"
},
"brandAliases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Other spellings and short forms of your brand name. Replaces the stored list."
},
"brandExclusions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Same-name companies or products to leave out of brand mentions. Replaces the stored list."
},
"productDescription": {
"type": "string",
"description": "What you sell, in a sentence or two"
},
"styleReferenceUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Articles whose writing style your articles follow. Replaces the stored list."
}
}
},
"annotations": {
"title": "Update brand identity",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Expand internal abbreviations and remove technical prefixes from the display title.
Description95/100
Suggest up to 8 audiences for this site from its brand, products, competitors and topics. Saves nothing. Pick one and pass it to draft_brand_icp, or write your own with write_brand_icp.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
exclude
Audience titles already shown, to get different ones
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "suggest_brand_icps",
"title": "Suggest brand ICPs",
"description": "Suggest up to 8 audiences for this site from its brand, products, competitors and topics. Saves nothing. Pick one and pass it to draft_brand_icp, or write your own with write_brand_icp.",
"inputSchema": {
"type": "object",
"properties": {
"exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Audience titles already shown, to get different ones"
}
}
},
"annotations": {
"title": "Suggest brand ICPs",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Draft one buyer profile from a one-sentence description or a suggestion from suggest_brand_icps. Returns the fields to review; nothing is saved until write_brand_icp. Fields passed in given are kept as written.
The description explains the capability, when to use it, and what to expect.
Inputs79/100
Explain the meaning of this value, not just its name.
describe
Who the audience is, in one sentence
Clear enough to supply this argument.
title
Title of a suggestion from suggest_brand_icps
Explain the meaning of this value, not just its name.
who
The suggestion's one-line description
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
given
Fields to keep as written (same keys as write_brand_icp, plus ageRange, seniority, department as strings). A key you pass is kept, empty included; a key you leave out is filled.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "draft_brand_icp",
"title": "Draft brand ICP",
"description": "Draft one buyer profile from a one-sentence description or a suggestion from suggest_brand_icps. Returns the fields to review; nothing is saved until write_brand_icp. Fields passed in given are kept as written.",
"inputSchema": {
"type": "object",
"properties": {
"who": {
"type": "string",
"description": "The suggestion's one-line description"
},
"given": {
"type": "object",
"description": "Fields to keep as written (same keys as write_brand_icp, plus ageRange, seniority, department as strings). A key you pass is kept, empty included; a key you leave out is filled.",
"additionalProperties": true
},
"title": {
"type": "string",
"description": "Title of a suggestion from suggest_brand_icps"
},
"describe": {
"type": "string",
"description": "Who the audience is, in one sentence"
}
}
},
"annotations": {
"title": "Draft brand ICP",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Get help pageRankControl's help pages: setup guides for each publishing destination, the crawler and its IP address, AI crawler access, the API, CLI and MCP, getting star…
02Get traffic overviewTraffic overview from RankControl's own page analytics: total page views, unique visitors, sessions, bounce rate, and average time on page.
03List jobsRecent agent runs (job status feed).
04List contentEvery article in the workspace, archived ones included: id, title, status (planned, draft, published or archived), contentType, slug, wordCount, scheduledAt,…
05Get visibility trendYour AI visibility score by day across the 6 AI engines, oldest first: date, score (percent of checks that cited you), totalChecks and cited.
Want to run these tasks against your MCP server with us?
RankControl setup, tools, quality score, publishing readiness, and alternatives.
How do I add RankControl to Claude, ChatGPT, or Cursor?
Add RankControl to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://api.rctrl.com/mcp.
Is RankControl MCP ready for ChatGPT and Claude?
As of October 15, 2026, RankControl scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is RankControl's MCP tool documentation?
As of October 15, 2026, RankControl scores 82/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 112 of 112 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to RankControl?
As of October 16, 2026, alternatives to RankControl in marketing-seo on the Manufact MCP catalog include Buzzfy, Airefs AI Visibility, TalkGenAI, attentive-mcp-server, and Dreamlit MCP.
How can RankControl improve its MCP documentation?
stop_write_run is the lowest-scoring reviewed tool at 70/100. No output schema is declared. Add one for structured results so clients can interpret returned fields. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.