Recommendations MCP tool
cite42_recommendations
Turn an earlier visibility result into page-level next steps for one prompt, comparing your page with the pages AI surfaces cited. It never runs automatically and is billed separately.
Overview
Give your assistant your page URL for a free technical check with suggested buyer questions. For content advice, add a buyer question: the report runs a citations check (priced like cite42_citations) and then compares your page with the pages AI answers cite, charging $0.25 only when it finds verified page-comparison advice. It can also reuse an earlier result, a tracker run or caller-supplied results. It does not run automatically, and no host conversation memory is read.
Example
# you say
What can I improve on https://acme.example/guide for AI visibility? Start with the free check.# your AI replies
Both cited pages include a pricing comparison, and none of "pricing" or "per seat" appear in your guide's HTML. A suggested next step is a short pricing section with the details you can verify. You can later recheck citations for the same prompt, but a change would not prove causation.View tool JSON
{
"mode": "evidence",
"status": "complete",
"source": "ai",
"message": "Page-level recommendations for “best startup CRM”, from 3 inspected pages.",
"scope": {
"query": "best startup CRM",
"brand": "Acme CRM",
"otherQueries": []
},
"inspection": {
"query": "best startup CRM",
"ownPage": {
"discovery": "input_url",
"note": "The page you supplied."
},
"pages": [
{
"id": "own",
"role": "own",
"url": "https://acme.example/guides/startup-crm",
"requestedUrl": "https://acme.example/guides/startup-crm",
"status": "inspected",
"method": "http",
"fetchedAt": "2026-09-29T10:00:03.000Z",
"httpStatus": 200,
"title": "The startup CRM guide",
"wordCount": 1180,
"headingCount": 9
},
{
"id": "cited-1",
"role": "cited",
"url": "https://reviews.example/best-startup-crm",
"requestedUrl": "https://reviews.example/best-startup-crm",
"status": "inspected",
"method": "http",
"fetchedAt": "2026-09-29T10:00:03.000Z",
"httpStatus": 200,
"citedBy": [
"chatgpt",
"perplexity"
],
"title": "Best CRM for startups",
"wordCount": 2410,
"headingCount": 14
},
{
"id": "cited-2",
"role": "cited",
"url": "https://saas-notes.example/crm-pricing",
"requestedUrl": "https://saas-notes.example/crm-pricing",
"status": "inspected",
"method": "http",
"fetchedAt": "2026-09-29T10:00:03.000Z",
"httpStatus": 200,
"citedBy": [
"gemini"
],
"title": "CRM pricing compared",
"wordCount": 1630,
"headingCount": 11
}
],
"robots": {
"url": "https://acme.example/robots.txt",
"status": "parsed",
"httpStatus": 200,
"fetchedAt": "2026-09-29T10:00:03.000Z",
"path": "/guides/startup-crm",
"crawlers": [
{
"token": "OAI-SearchBot",
"vendor": "OpenAI",
"purpose": "search",
"allowed": false,
"rule": "Disallow: /guides/"
},
{
"token": "PerplexityBot",
"vendor": "Perplexity",
"purpose": "search",
"allowed": true
},
{
"token": "GPTBot",
"vendor": "OpenAI",
"purpose": "training",
"allowed": false,
"rule": "Disallow: /"
}
]
},
"requests": {
"used": 5,
"limit": 15
},
"notes": []
},
"recommendations": [
{
"id": "access-1",
"kind": "crawler_access",
"priority": 1,
"effort": "small",
"fact": "https://acme.example/robots.txt disallows OAI-SearchBot (ChatGPT search) for /guides/startup-crm.",
"action": "If you want /guides/startup-crm to appear in those AI answers, allow these crawlers for that path in robots.txt, then re-check the file. Vendors can take about a day to pick up changes.",
"evidence": [
{
"id": "robots",
"kind": "inspected",
"measuredAt": "2026-09-29T10:00:03.000Z",
"url": "https://acme.example/robots.txt",
"detail": "OAI-SearchBot: Disallow: /guides/. OpenAI says sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers, though they can still appear as navigational links."
}
],
"followUp": {
"primitive": "citations",
"input": {
"query": "best startup CRM",
"url": "https://acme.example/guides/startup-crm",
"models": [
"chatgpt",
"perplexity",
"gemini"
]
},
"metric": "watched URL citation presence",
"trackerDraft": {
"name": "Track AI citations",
"primitive": "citations",
"prompts": [
"best startup CRM"
],
"models": [
"chatgpt",
"perplexity",
"gemini"
],
"url": "https://acme.example/guides/startup-crm"
},
"instruction": "Recheck with the same prompt and surfaces. To create a tracker draft, choose a cadence and timezone first. Activation and paid runs require separate approval. Movement does not prove causation."
}
},
{
"id": "content-1",
"kind": "content_gap",
"priority": 2,
"effort": "medium",
"fact": "reviews.example (cited by ChatGPT, Perplexity) includes “Pricing starts at $12 per seat per month, billed annually”. Your page's returned HTML does not cover this: none of “pricing”, “per seat” appear, and a coverage check of the page found no passage on the topic.",
"action": "Compare the quoted pricing comparison coverage with your page and decide whether it belongs there.",
"suggestion": {
"kind": "inferred",
"text": "Pricing comparison: Add a \"Pricing\" section after the feature overview listing plan names, per-seat prices and billing terms you can verify, with a link to your pricing page. Check: Every listed price matches the current pricing page."
},
"evidence": [
{
"id": "cited-1-s4",
"kind": "inspected",
"measuredAt": "2026-09-29T10:00:03.000Z",
"url": "https://reviews.example/best-startup-crm",
"detail": "“Pricing starts at $12 per seat per month, billed annually” (section “Pricing”)"
},
{
"id": "own-text",
"kind": "inspected",
"measuredAt": "2026-09-29T10:00:03.000Z",
"url": "https://acme.example/guides/startup-crm",
"detail": "Searched the returned HTML text for: pricing, per seat."
}
],
"followUp": {
"primitive": "citations",
"input": {
"query": "best startup CRM",
"url": "https://acme.example/guides/startup-crm",
"models": [
"chatgpt",
"perplexity",
"gemini"
]
},
"metric": "watched URL citation presence",
"trackerDraft": {
"name": "Track AI citations",
"primitive": "citations",
"prompts": [
"best startup CRM"
],
"models": [
"chatgpt",
"perplexity",
"gemini"
],
"url": "https://acme.example/guides/startup-crm"
},
"instruction": "Recheck with the same prompt and surfaces. To create a tracker draft, choose a cadence and timezone first. Activation and paid runs require separate approval. Movement does not prove causation."
}
}
],
"metrics": [],
"omittedEvidence": 0,
"limitations": [
"Each report covers one prompt. Other measured prompts are listed in scope.otherQueries.",
"Pages were inspected as returned HTML without running JavaScript. Google renders JavaScript, so this is not every engine's view.",
"What a cited page contains does not show why it was cited, and matching it does not guarantee visibility."
],
"requestId": "…",
"billing": {
"cost": {
"microCredits": 25000,
"usd": "0.25"
},
"balance": {
"microCredits": 1336000,
"usd": "13.36"
}
}
}Full schema: POST /v1/recommendations.