Read-only AI search visibility: brand mentions, competitors and citations in AI answers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check how ready one web page is to be read and cited by AI assistants: whether robots.txt lets the AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended and others) in, llms.txt, the sitemap, structured data, headings, trust signals, meta tags and a Wikidata entry. Returns a 0-100 score, an A-F grade, the score per category, the main issues and the raw signals. Use this tool when the user asks whether a website is ready for AI search, why AI might not cite a page, or what to fix on it -- phrases like 'audit our homepage for AI', 'can ChatGPT crawl our site', 'GEO check of example.com'. It checks the page itself. It does not measure what AI assistants answer about the brand; that needs a Refora workspace. Example question: 'Is kassaro.se ready for AI search?'
The page to check: a full URL or a bare domain such as example.com.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http refora https://mcp.refora.ai/mcp
Check how ready one web page is to be read and cited by AI assistants: whether robots.txt lets the AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended and others) in, llms.txt, the sitemap, structured data, headings, trust signals, meta tags and a Wikidata entry. Returns a 0-100 score, an A-F grade, the score per category, the main issues and the raw signals. Use this tool when the user asks whether a website is ready for AI search, why AI might not cite a page, or what to fix on it -- phrases like 'audit our homepage for AI', 'can ChatGPT crawl our site', 'GEO check of example.com'. It checks the page itself. It does not measure what AI assistants answer about the brand; that needs a Refora workspace. Example question: 'Is kassaro.se ready for AI search?'
| Argument | Type | Description |
|---|---|---|
| url* | string | The page to check: a full URL or a bare domain such as example.com. |
{
"type": "object",
"title": "audit_pageArguments",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"maxLength": 500,
"minLength": 4,
"description": "The page to check: a full URL or a bare domain such as example.com."
}
}
}What the connected Refora organization's plan includes (workspaces, tracked questions, AI models, how often they run) and what each workspace is measured with: its own tracking, a market snapshot, or nothing yet. Includes a link to set up tracking and one to the plans. Use this tool when the user asks what their plan covers, why a number comes from market data, or how to track their own questions -- phrases like 'what's included', 'can you track this weekly', 'how do I add my own questions'. Example question: 'What does my Refora plan include?'
No arguments.
{
"type": "object",
"title": "get_accountArguments",
"properties": {}
}The answers themselves: what ChatGPT, Perplexity, Gemini, Claude, Mistral and Google AI Overviews said to this workspace's prompts, each with the brands it mentions and the URLs it cites. Use this tool when the user wants to read or quote what an AI said -- phrases like 'what does ChatGPT say about us', 'show me the answers to the prompt about X', 'how do AI models describe our competitor', 'show answers where we are not mentioned' -- or to explain a number another Refora tool returned. For numbers (visibility, share of voice, trends, sentiment, sources), use those tools: they count every answer, this one returns a page. Filter by prompt (its text or a distinctive part of it), model, brand (brand_mentioned=true for answers that mention it, false for answers that don't; without brand_name it is the workspace's own brand) and window. Answers come newest first, 10 per page; when next_offset is set, call again with offset=next_offset. An answer longer than 2,000 characters is cut (truncated: true); to read it whole, call again with its prompt_text, model, its date as start_date and end_date, and full_text=true. Example: 'What did Perplexity say when asked for the best CRM?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| limit | integer | Answers per page. Default 10, max 25. A page can hold fewer when its answers are long. |
| model | any | Optional: only this AI model's answers. openai = ChatGPT, anthropic = Claude, mistral = Le Chat, google-aio = Google AI Overviews. Omit for every model. |
The domains and URLs that AI models cite in their answers for this workspace's prompts, each marked as the brand's own site, a competitor's, or other. Each URL also says what kind of page it is and how often each model cited it. Use this tool when the user asks which websites or sources AI references -- phrases like 'what sources does AI cite', 'which websites does ChatGPT reference', 'top cited domains', 'which comparison pages does AI cite', or 'where does AI get its information about us'. Prefer it to paging through get_ai_answers for any question about cited pages. With brand_name, only answers that mention that brand count. Without it, every answer in the workspace counts. model, page_type, owner and last_runs narrow what counts, in one call: e.g. model=["openai", "google-aio"], page_type=["comparison", "listicle"], owner="competitor" and last_runs=3 for the competitor comparison and best-of pages ChatGPT and Google AI Overviews cited in the last 3 runs. Every URL carries its page_type and citations_by_model, and per_model gives each model's runs and citations, so a count reads as 'N citations in M runs'. A URL is a page: tracking tags (utm_*) and #fragments are dropped, so a page two models cite is one row. For one topic, use get_top_cited_urls_for_topic. Across every workspace in the organization, use get_top_cited_domains. Example: 'What sources does AI cite most when talking about Kassaro?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| model | any | Optional: count only citations in these AI models' answers. One model, or a list such as ["openai", "google-aio"] to compare ChatGPT with Google AI Overviews. openai = ChatGPT, anthropic = Claude, mistral = Le Chat, google-aio = Google AI Overviews. Omit for every model. Each URL's count per model is returned either way. |
Rank the workspace's own brand against the competitors the user tracks, by visibility: the share of AI answers that mention each brand. Use this tool when the user asks about competitive position -- phrases like 'how do we compare', 'who's winning', 'where do we rank', or 'vs competitors'. Do NOT use for the own score alone (use get_visibility_score), trends (use get_visibility_trend), or every brand the AI mentions, tracked or not (use get_share_of_voice). Returns: tracked brands ranked by visibility, the own brand among them. Brands with nothing to measure get no rank. To see WHY a competitor leads, follow up with get_competitor_visibility_gap. Example: 'How does Kassaro compare to its competitors?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
| competitor_limit | integer | How many competitors to list. Default 5, max 20. |
The prompts where one tracked competitor is mentioned in AI answers more often than the workspace's own brand. Use this tool as a follow-up to get_competitor_comparison when the user wants to understand WHY a competitor is winning -- phrases like 'why is X beating us', 'where are we losing to X', 'what sources does AI cite for X', or 'how do we beat X'. Returns: prompts where the competitor leads by at least min_gap_percent percentage points, each with the gap, the AI models that favor the competitor, and the URLs AI cites in those answers (the brand's own pages left out). Use this data for content briefs. Example: 'Why is Sitoo beating Kassaro, and what sources does AI cite for them?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| prompt_limit | integer | How many prompts to return. Default 10, max 50. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
A market snapshot of the workspace's website from an external index of AI answers: ChatGPT's and Gemini's answers to the brand's buyer questions as users see them in its country (share of answers naming the brand and each competitor, who else they name, which sources they cite), and how often Google's AI Overviews cite the site next to its competitors, month by month, with the questions where a competitor is cited and the site is not. Use this tool when the user asks how visible they are in AI before their own questions are tracked, or wants the wider market picture next to their own tracking -- phrases like 'does ChatGPT recommend us', 'who does AI recommend instead of us', 'how do we compare in Google's AI answers'. The snapshot is built once, when the account is created; status 'building' means it is not ready yet. Its numbers are not the workspace's own tracking: read each section's about. Example question: 'Does ChatGPT recommend Kassaro?'
| Argument | Type | Description |
|---|---|---|
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
{
"type": "object",
"title": "get_market_ai_presenceArguments",
"required": [
"workspace_id"
],
"properties": {
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
}
}
}Detailed performance for one prompt (one question Refora asks the AI models on a schedule): visibility over time, per-model visibility and answers, and the URLs cited in its answers. Use this tool when the user asks about a specific prompt -- phrases like 'how are we doing on the prompt about X', 'details on this prompt', or as drill-down after seeing prompts from get_competitor_visibility_gap. Name the prompt by its text: the full text as another Refora tool returned it, or a distinctive part of it. Prompts with the same text are one question and are measured together. If several prompts match, the response lists them so the user can pick. Example: 'How are we doing on the prompt about enterprise CRM?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| prompt_text* | string | The prompt's text, exactly as another Refora tool returned it, or a distinctive part of it. Matched case-insensitively. |
| workspace_id* |
How AI models talk about a brand: sentiment scores overall and per model, with example excerpts showing tone and framing. Use when the user asks how AI talks about their brand -- phrases like 'how does AI describe us', 'what's the sentiment', 'is ChatGPT positive or negative about us', or 'how do AI engines talk about [brand]'. Returns: overall sentiment score (0-100, 50 is neutral), per-model breakdown, and up to 3 examples per label (positive/neutral/negative), each a short excerpt around the mention. Example: 'How does ChatGPT describe Kassaro -- positively or negatively?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| brand_name | any | Optional brand to analyse, e.g. a tracked competitor. Omit for the workspace's own brand. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
The workspace's own brand's share of ALL brand mentions in AI answers, and which brands hold the rest -- every brand the models named, each marked as a tracked competitor or not. Use this tool when the user asks who the AI talks about -- phrases like 'share of voice', 'who gets mentioned most', 'which brands does AI recommend in our space', or 'who else shows up'. Do NOT use to rank against the competitors the user tracks (use get_competitor_comparison, which measures the share of answers that mention each tracked brand). Returns: own share in percent, own rank, and the top brands with their shares. Example: 'Which brands does AI mention most when people ask about our category?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
| competitor_limit | integer | How many other brands to list. Default 5, max 20. |
The domains AI models cite most across ALL workspaces in the organization. Aggregate view for multi-workspace orgs. Use when the user wants org-level source analysis -- phrases like 'across all workspaces', 'org-wide sources', 'top domains overall', or 'which sites dominate'. For one workspace, use get_citation_sources. Example: 'Which domains are cited most across all our brands?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| domain_limit | integer | How many domains to list. Default 15, max 50. |
{
"type": "object",
"title": "get_top_cited_domainsArguments",
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"domain_limit": {
"type": "integer",
"title": "Domain Limit",
"default": 15,
"maximum": 50,
"minimum": 1,
"description": "How many domains to list. Default 15, max 50."
}
}
}The URLs that AI models cite most for the workspace's prompts in one topic. Use this for content briefs -- it shows which sources AI treats as authoritative for that topic. Use when the user asks about sources for a topic -- phrases like 'what does AI cite for X topic', 'sources on X', 'content research for X', or 'authority sources for X'. Topics are the workspace's own; most are one of PROBLEM_AWARENESS, SOLUTION_COMPARISON, COMPETITOR_COMPARISON, EVALUATION, CATEGORY_DEEP_DIVE, HOW_TO. If the topic is not found, the response lists the topics that exist. model, page_type, owner and last_runs narrow what counts, in one call: e.g. model=["openai", "google-aio"], page_type=["comparison", "listicle"], owner="competitor" and last_runs=3 for the competitor comparison and best-of pages ChatGPT and Google AI Overviews cited in the last 3 runs. Every URL carries its page_type and citations_by_model, and per_model gives each model's runs and citations, so a count reads as 'N citations in M runs'. A URL is a page: tracking tags (utm_*) and #fragments are dropped, so a page two models cite is one row. Example: 'What sources does AI cite for our EVALUATION prompts?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| model | any | Optional: count only citations in these AI models' answers. One model, or a list such as ["openai", "google-aio"] to compare ChatGPT with Google AI Overviews. openai = ChatGPT, anthropic = Claude, mistral = Le Chat, google-aio = Google AI Overviews. Omit for every model. Each URL's count per model is returned either way. |
| owner | any |
How visible the workspace's own brand is in AI answers: the share of AI answers that mention it, overall and per AI model (ChatGPT, Perplexity, Gemini, Claude, Mistral, Google AI Overviews), and the change from the window before. Use this tool when the user asks about current performance -- phrases like 'how are we doing', 'what's our score', 'how visible are we in AI', or 'current visibility'. Do NOT use for trends over time (use get_visibility_trend) or competitors (use get_competitor_comparison). Returns: visibility in percent (null means no answers to measure, not zero), the change in percentage points, one row per model with its visibility and number of answers, and a summary. Example: 'How is Kassaro doing in AI search right now?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
{
"type": "object",
"title": "get_visibility_scoreArguments",
"required": [
"workspace_id"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
}
}
}Visibility over time for the workspace's own brand. Use this tool when the user asks about changes over time -- phrases like 'how has it changed', 'trending', 'are we improving', 'show the trend', or 'over the last month'. Do NOT use for the current snapshot (use get_visibility_score) or competitors (use get_competitor_comparison). Returns one data point per period and a trend summary. A period with no AI answers has a null visibility, not 0. Max 90 days. Example: 'How has our AI visibility changed over the last 30 days?'
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| resolution | string | Length of each period. Default 'week': prompts run on a schedule, so 'day' leaves empty periods. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
List the workspaces in the connected Refora organization. Call this first: every other workspace tool needs a workspace_id from here. Use this tool when the user asks about their workspaces, projects, or brands they're monitoring -- phrases like 'what am I tracking', 'list my projects', 'show me my brands', or 'which workspaces do I have'. Returns: workspace ID, name, primary brand domain, active prompt count, creation date, website, data_source (own_tracking, market_data or none) and a one-line summary for each workspace. Example question: 'What workspaces do I have set up in Refora?'
No arguments.
{
"type": "object",
"title": "list_workspacesArguments",
"properties": {}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 15, 2026.
| offset |
| integer |
| How many matching answers to skip. Pass the previous page's next_offset. Default 0. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| full_text | boolean | true to return answers whole (up to 20,000 characters each) instead of cut at 2,000. Narrow the filters first: meant for reading one or a few answers. Default false. |
| brand_name | any | Optional: a brand to filter on. Alone, it keeps the answers that mention it; with brand_mentioned=false, the ones that don't. Omit it and set brand_mentioned to filter on the workspace's own brand. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| prompt_text | any | Optional: only answers to this prompt. Its text as another Refora tool returned it, or a distinctive part of it, matched case-insensitively. If several prompts match, the response lists them so the user can pick. Omit for every prompt. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
| brand_mentioned | any | Optional: true for only answers that mention the brand, false for only answers that don't. The brand is brand_name, or the workspace's own brand. Omit for answers either way. |
{
"type": "object",
"title": "get_ai_answersArguments",
"required": [
"workspace_id"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Answers per page. Default 10, max 25. A page can hold fewer when its answers are long."
},
"model": {
"anyOf": [
{
"enum": [
"openai",
"perplexity",
"gemini",
"anthropic",
"mistral",
"google-aio"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Model",
"default": null,
"description": "Optional: only this AI model's answers. openai = ChatGPT, anthropic = Claude, mistral = Le Chat, google-aio = Google AI Overviews. Omit for every model."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "How many matching answers to skip. Pass the previous page's next_offset. Default 0."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"full_text": {
"type": "boolean",
"title": "Full Text",
"default": false,
"description": "true to return answers whole (up to 20,000 characters each) instead of cut at 2,000. Narrow the filters first: meant for reading one or a few answers. Default false."
},
"brand_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand Name",
"default": null,
"description": "Optional: a brand to filter on. Alone, it keeps the answers that mention it; with brand_mentioned=false, the ones that don't. Omit it and set brand_mentioned to filter on the workspace's own brand."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"prompt_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Text",
"default": null,
"description": "Optional: only answers to this prompt. Its text as another Refora tool returned it, or a distinctive part of it, matched case-insensitively. If several prompts match, the response lists them so the user can pick. Omit for every prompt."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
},
"brand_mentioned": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Brand Mentioned",
"default": null,
"description": "Optional: true for only answers that mention the brand, false for only answers that don't. The brand is brand_name, or the workspace's own brand. Omit for answers either way."
}
}
}| owner | any | Optional: count only pages on these sites. own = the workspace's own site, competitor = a tracked competitor's site, other = everyone else (media, forums, comparison sites). One value or a list. Omit for every site. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| last_runs | any | Optional: count only the newest N runs of each prompt on each model inside the window, e.g. 3 for 'the last 3 runs'. A prompt with fewer runs in the window counts the ones it has; widen days to reach older runs. per_model says how many runs were counted. Omit to count every run in the window. |
| page_type | any | Optional: count only cited pages of this type, or a list of types. comparison = comparison and 'X vs Y' pages, listicle = best-of and top-X lists, plus article, how_to_guide, product_page, category_page, homepage, other. There is no review type: ask for comparison and listicle for review-style pages. A page not classified yet (page_type null) never matches. Omit for every page. |
| url_limit | integer | How many URLs to list. Default 15, max 50. |
| brand_name | any | Optional brand name: count only answers that mention this brand. Omit for all answers. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| domain_limit | integer | How many domains to list. Default 10, max 50. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
{
"type": "object",
"title": "get_citation_sourcesArguments",
"required": [
"workspace_id"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"model": {
"anyOf": [
{
"enum": [
"openai",
"perplexity",
"gemini",
"anthropic",
"mistral",
"google-aio"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"openai",
"perplexity",
"gemini",
"anthropic",
"mistral",
"google-aio"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Model",
"default": null,
"description": "Optional: count only citations in these AI models' answers. One model, or a list such as [\"openai\", \"google-aio\"] to compare ChatGPT with Google AI Overviews. openai = ChatGPT, anthropic = Claude, mistral = Le Chat, google-aio = Google AI Overviews. Omit for every model. Each URL's count per model is returned either way."
},
"owner": {
"anyOf": [
{
"enum": [
"own",
"competitor",
"other"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"own",
"competitor",
"other"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Owner",
"default": null,
"description": "Optional: count only pages on these sites. own = the workspace's own site, competitor = a tracked competitor's site, other = everyone else (media, forums, comparison sites). One value or a list. Omit for every site."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"last_runs": {
"anyOf": [
{
"type": "integer",
"maximum": 50,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Last Runs",
"default": null,
"description": "Optional: count only the newest N runs of each prompt on each model inside the window, e.g. 3 for 'the last 3 runs'. A prompt with fewer runs in the window counts the ones it has; widen days to reach older runs. per_model says how many runs were counted. Omit to count every run in the window."
},
"page_type": {
"anyOf": [
{
"enum": [
"homepage",
"product_page",
"category_page",
"article",
"how_to_guide",
"listicle",
"comparison",
"other"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"homepage",
"product_page",
"category_page",
"article",
"how_to_guide",
"listicle",
"comparison",
"other"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Page Type",
"default": null,
"description": "Optional: count only cited pages of this type, or a list of types. comparison = comparison and 'X vs Y' pages, listicle = best-of and top-X lists, plus article, how_to_guide, product_page, category_page, homepage, other. There is no review type: ask for comparison and listicle for review-style pages. A page not classified yet (page_type null) never matches. Omit for every page."
},
"url_limit": {
"type": "integer",
"title": "Url Limit",
"default": 15,
"maximum": 50,
"minimum": 1,
"description": "How many URLs to list. Default 15, max 50."
},
"brand_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand Name",
"default": null,
"description": "Optional brand name: count only answers that mention this brand. Omit for all answers."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"domain_limit": {
"type": "integer",
"title": "Domain Limit",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "How many domains to list. Default 10, max 50."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
}
}
}{
"type": "object",
"title": "get_competitor_comparisonArguments",
"required": [
"workspace_id"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
},
"competitor_limit": {
"type": "integer",
"title": "Competitor Limit",
"default": 5,
"maximum": 20,
"minimum": 1,
"description": "How many competitors to list. Default 5, max 20."
}
}
}| competitor_name* | string | A tracked competitor's name, as get_competitor_comparison lists it. Case does not matter. |
| min_gap_percent | number | Smallest lead to report, in percentage points (0-100). Default 5, meaning the competitor appears in at least 5 points more of the answers. |
{
"type": "object",
"title": "get_competitor_visibility_gapArguments",
"required": [
"workspace_id",
"competitor_name"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"prompt_limit": {
"type": "integer",
"title": "Prompt Limit",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "How many prompts to return. Default 10, max 50."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
},
"competitor_name": {
"type": "string",
"title": "Competitor Name",
"minLength": 1,
"description": "A tracked competitor's name, as get_competitor_comparison lists it. Case does not matter."
},
"min_gap_percent": {
"type": "number",
"title": "Min Gap Percent",
"default": 5,
"maximum": 100,
"minimum": 0,
"description": "Smallest lead to report, in percentage points (0-100). Default 5, meaning the competitor appears in at least 5 points more of the answers."
}
}
}| integer |
| The workspace's numeric id, as returned by list_workspaces. |
{
"type": "object",
"title": "get_prompt_performanceArguments",
"required": [
"workspace_id",
"prompt_text"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"prompt_text": {
"type": "string",
"title": "Prompt Text",
"minLength": 1,
"description": "The prompt's text, exactly as another Refora tool returned it, or a distinctive part of it. Matched case-insensitively."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
}
}
}{
"type": "object",
"title": "get_sentiment_breakdownArguments",
"required": [
"workspace_id"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"brand_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand Name",
"default": null,
"description": "Optional brand to analyse, e.g. a tracked competitor. Omit for the workspace's own brand."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
}
}
}{
"type": "object",
"title": "get_share_of_voiceArguments",
"required": [
"workspace_id"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
},
"competitor_limit": {
"type": "integer",
"title": "Competitor Limit",
"default": 5,
"maximum": 20,
"minimum": 1,
"description": "How many other brands to list. Default 5, max 20."
}
}
}| Optional: count only pages on these sites. own = the workspace's own site, competitor = a tracked competitor's site, other = everyone else (media, forums, comparison sites). One value or a list. Omit for every site. |
| topic* | string | The topic, e.g. EVALUATION. Case does not matter. An unknown topic returns the list of topics that exist. |
| end_date | any | Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future. |
| last_runs | any | Optional: count only the newest N runs of each prompt on each model inside the window, e.g. 3 for 'the last 3 runs'. A prompt with fewer runs in the window counts the ones it has; widen days to reach older runs. per_model says how many runs were counted. Omit to count every run in the window. |
| page_type | any | Optional: count only cited pages of this type, or a list of types. comparison = comparison and 'X vs Y' pages, listicle = best-of and top-X lists, plus article, how_to_guide, product_page, category_page, homepage, other. There is no review type: ask for comparison and listicle for review-style pages. A page not classified yet (page_type null) never matches. Omit for every page. |
| url_limit | integer | How many URLs to list. Default 15, max 50. |
| start_date | any | Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days. |
| workspace_id* | integer | The workspace's numeric id, as returned by list_workspaces. |
{
"type": "object",
"title": "get_top_cited_urls_for_topicArguments",
"required": [
"workspace_id",
"topic"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"model": {
"anyOf": [
{
"enum": [
"openai",
"perplexity",
"gemini",
"anthropic",
"mistral",
"google-aio"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"openai",
"perplexity",
"gemini",
"anthropic",
"mistral",
"google-aio"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Model",
"default": null,
"description": "Optional: count only citations in these AI models' answers. One model, or a list such as [\"openai\", \"google-aio\"] to compare ChatGPT with Google AI Overviews. openai = ChatGPT, anthropic = Claude, mistral = Le Chat, google-aio = Google AI Overviews. Omit for every model. Each URL's count per model is returned either way."
},
"owner": {
"anyOf": [
{
"enum": [
"own",
"competitor",
"other"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"own",
"competitor",
"other"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Owner",
"default": null,
"description": "Optional: count only pages on these sites. own = the workspace's own site, competitor = a tracked competitor's site, other = everyone else (media, forums, comparison sites). One value or a list. Omit for every site."
},
"topic": {
"type": "string",
"title": "Topic",
"minLength": 1,
"description": "The topic, e.g. EVALUATION. Case does not matter. An unknown topic returns the list of topics that exist."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"last_runs": {
"anyOf": [
{
"type": "integer",
"maximum": 50,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Last Runs",
"default": null,
"description": "Optional: count only the newest N runs of each prompt on each model inside the window, e.g. 3 for 'the last 3 runs'. A prompt with fewer runs in the window counts the ones it has; widen days to reach older runs. per_model says how many runs were counted. Omit to count every run in the window."
},
"page_type": {
"anyOf": [
{
"enum": [
"homepage",
"product_page",
"category_page",
"article",
"how_to_guide",
"listicle",
"comparison",
"other"
],
"type": "string"
},
{
"type": "array",
"items": {
"enum": [
"homepage",
"product_page",
"category_page",
"article",
"how_to_guide",
"listicle",
"comparison",
"other"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Page Type",
"default": null,
"description": "Optional: count only cited pages of this type, or a list of types. comparison = comparison and 'X vs Y' pages, listicle = best-of and top-X lists, plus article, how_to_guide, product_page, category_page, homepage, other. There is no review type: ask for comparison and listicle for review-style pages. A page not classified yet (page_type null) never matches. Omit for every page."
},
"url_limit": {
"type": "integer",
"title": "Url Limit",
"default": 15,
"maximum": 50,
"minimum": 1,
"description": "How many URLs to list. Default 15, max 50."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
}
}
}{
"type": "object",
"title": "get_visibility_trendArguments",
"required": [
"workspace_id"
],
"properties": {
"days": {
"type": "integer",
"title": "Days",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back to look, counted back from end_date (default today). Default 30, max 90. Ignored when start_date is given. Prompts are re-run on a schedule, so a window shorter than a week can be empty."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Optional end of the window, as an ISO date (YYYY-MM-DD). Default today. Cannot be in the future."
},
"resolution": {
"enum": [
"day",
"week",
"month"
],
"type": "string",
"title": "Resolution",
"default": "week",
"description": "Length of each period. Default 'week': prompts run on a schedule, so 'day' leaves empty periods."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null,
"description": "Optional explicit start of the window, as an ISO date (YYYY-MM-DD). A full ISO datetime is accepted and its date is used. Overrides days."
},
"workspace_id": {
"type": "integer",
"title": "Workspace Id",
"minimum": 1,
"description": "The workspace's numeric id, as returned by list_workspaces."
}
}
}