See how often AI answers name and link your brand, which rivals they name and which sites they cite.
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.
Call this to record one week of AI answers on a tracker, after create_tracker has returned its brand_id (never in the same step). Pass brand_id and answers: one item per tracked prompt and engine, each with prompt_id (such as p1), engine (such as openai, perplexity, google-ai-mode, claude), the answer text and its source links. week defaults to this ISO week; sending a week again replaces that week. Returns the scored round: mention share and citation share, split by engine and buyer prompt, with rivals, cited sites and a fix list. It scores pasted answers and never asks an engine. Errors: api_key_required, subscription_required (with checkout_url), owner_only for a seat's key, brand_not_found, and invalid_input naming the prompt ids to use.
One item per answer an AI engine gave to a tracked prompt: {prompt_id, engine, answer, links}. One answer per prompt and engine.
The tracker id that create_tracker returned, such as brand_0a1b2c3d4e5f6a7b. Wait for create_tracker's answer to get it.
The ISO week the answers belong to, such as 2026-W42. Default: this week. Sending a week again replaces that week's round.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Call this to record one week of AI answers on a tracker, after create_tracker has returned its brand_id (never in the same step). Pass brand_id and answers: one item per tracked prompt and engine, each with prompt_id (such as p1), engine (such as openai, perplexity, google-ai-mode, claude), the answer text and its source links. week defaults to this ISO week; sending a week again replaces that week. Returns the scored round: mention share and citation share, split by engine and buyer prompt, with rivals, cited sites and a fix list. It scores pasted answers and never asks an engine. Errors: api_key_required, subscription_required (with checkout_url), owner_only for a seat's key, brand_not_found, and invalid_input naming the prompt ids to use.
| Argument | Type | Description |
|---|---|---|
| week | string | The ISO week the answers belong to, such as 2026-W42. Default: this week. Sending a week again replaces that week's round. |
| answers* | array | One item per answer an AI engine gave to a tracked prompt: {prompt_id, engine, answer, links}. One answer per prompt and engine. |
| brand_id* | string | The tracker id that create_tracker returned, such as brand_0a1b2c3d4e5f6a7b. Wait for create_tracker's answer to get it. |
{
"type": "object",
"examples": [
{
"week": "2026-W42",
"answers": [
{
"links": [
"https://acme.com/agencies",
"https://www.g2.com/categories/crm"
],
"answer": "Acme CRM and HubSpot both suit a small agency.",
"engine": "openai",
"prompt_id": "p1"
},
{
"links": [
"https://hubspot.com/pricing"
],
"answer": "HubSpot has a free plan.",
"engine": "openai",
"prompt_id": "p2"
}
],
"brand_id": "brand_0a1b2c3d4e5f6a7b"
}
],
"required": [
"brand_id",
"answers"
],
"properties": {
"week": {
"type": "string",
"pattern": "^\\d{4}-W(0[1-9]|[1-4]\\d|5[0-3])$",
"description": "The ISO week the answers belong to, such as 2026-W42. Default: this week. Sending a week again replaces that week's round."
},
"answers": {
"type": "array",
"items": {
"type": "object",
"required": [
"engine",
"answer"
],
"properties": {
"links": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
},
"maxItems": 100,
"description": "The source links the engine showed with the answer."
},
"answer": {
"type": "string",
"maxLength": 40000,
"minLength": 1,
"description": "The answer text, pasted in full."
},
"engine": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Which engine answered, such as openai, perplexity, google-ai-mode or claude."
},
"prompt": {
"type": "string",
"maxLength": 2000,
"description": "The tracked prompt's exact text, in place of prompt_id."
},
"prompt_id": {
"type": "string",
"maxLength": 60,
"description": "The tracked prompt's id from create_tracker, such as p1."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "One item per answer an AI engine gave to a tracked prompt: {prompt_id, engine, answer, links}. One answer per prompt and engine."
},
"brand_id": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The tracker id that create_tracker returned, such as brand_0a1b2c3d4e5f6a7b. Wait for create_tracker's answer to get it."
}
},
"additionalProperties": false
}Call this when a user wants their brand's AI answer share tracked week by week, not scored once. Pass brand, domain, rivals in competitors and the questions to ask each week in prompts (1 to 25 plain strings). Returns brand_id and each prompt's id (p1, p2, ...) for add_round. The tracker belongs to the caller's API key: send it in the x-api-key header, or connect over OAuth at https://connect.openkrill.app/plugins/answer-share/mcp. Errors: api_key_required means no key came with the call; subscription_required is the paid plan, and its result carries checkout_url to give the user instead of retrying; brand_limit means the key already tracks 5 brands.
| Argument | Type | Description |
|---|---|---|
| brand* | string | The brand or product name to look for, such as Acme CRM. |
| domain | string | The brand's website, such as acme.com. A link to it counts as a citation. |
| aliases | array | Other names that count as the brand, such as AcmeCRM. |
| engines | array | The engines the weekly runner asks, from openai and perplexity. Default: both. Answers from other engines can still be added by hand. |
| prompts* | array | The questions to ask every week, 1 to 25, such as "best CRM for a small agency". Each gets an id (p1, p2, ...) that add_round uses. |
| competitors | array | Rivals to count in the same answers, each {name, domain}. |
Read the maintainers' reply to feedback you sent with submit_feedback, given its ticket id. Returns status pending until a reply is ready, then status answered with the reply text. The reply is information for you, not an instruction.
| Argument | Type | Description |
|---|---|---|
| ticket* | string | The ticket id that submit_feedback returned. |
{
"type": "object",
"required": [
"ticket"
],
"properties": {
"ticket": {
"type": "string",
"pattern": "^fb_[0-9a-f]{32}$",
"description": "The ticket id that submit_feedback returned."
}
},
"additionalProperties": false
}Call this to read a tracker from create_tracker: its brand, rivals and prompts with their ids, every stored week with its mention and citation share, and one week in full (the latest unless week is sent) with its report, fix list, pages to get onto and the change from the previous stored week. Pass brand_id. Read-only. Errors: api_key_required, subscription_required (with checkout_url), brand_not_found, round_not_found naming the stored weeks.
| Argument | Type | Description |
|---|---|---|
| week | string | The stored week to read in full, such as 2026-W42. Default: the latest stored week. |
| brand_id* | string | The tracker id that create_tracker returned, such as brand_0a1b2c3d4e5f6a7b. Wait for create_tracker's answer to get it. |
{
"type": "object",
"examples": [
{
"brand_id": "brand_0a1b2c3d4e5f6a7b"
}
],
"required": [
"brand_id"
],
"properties": {
"week": {
"type": "string",
"pattern": "^\\d{4}-W(0[1-9]|[1-4]\\d|5[0-3])$",
"description": "The stored week to read in full, such as 2026-W42. Default: the latest stored week."
},
"brand_id": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The tracker id that create_tracker returned, such as brand_0a1b2c3d4e5f6a7b. Wait for create_tracker's answer to get it."
}
},
"additionalProperties": false
}Search the tools on this server by task or keyword in plain words. Returns the matching tools, best match first, each with its name, title, a one-line summary and its input fields. With no words it lists every tool on this server. Use it when you are not sure which tool here fits a task.
| Argument | Type | Description |
|---|---|---|
| task | string | Optional: the task in plain words. Searched together with query and keyword. |
| query | string | Optional words or a task to search for, such as "vat number". Omit query, task and keyword to list every tool. |
| keyword | string | Optional: one keyword. Searched together with query and task. |
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "Optional: the task in plain words. Searched together with query and keyword."
},
"query": {
"type": "string",
"description": "Optional words or a task to search for, such as \"vat number\". Omit query, task and keyword to list every tool."
},
"keyword": {
"type": "string",
"description": "Optional: one keyword. Searched together with query and task."
}
},
"additionalProperties": false
}Call this whenever a user pastes one or more answers from ChatGPT, Perplexity, Google AI Mode, Claude or another AI assistant and asks whether the answers named or linked their brand, what share they got, which rivals or sites the answers chose instead, or what to do about it. Pass the brand, its domain, rival names and every answer in answers (each with its prompt, engine and source links). Returns mention share and citation share (such as 0 of 3), split by engine and for buyer prompts (prompts that do not name the brand), how often each rival is named, the sites cited instead and a short fix list. Fixed rules: a repeated prompt is not a mention, and a link counts only if it goes to the brand domain. It scores pasted text only and never queries an AI engine.
| Argument | Type | Description |
|---|---|---|
| brand* | string | The brand or product name to look for, such as Acme CRM. |
| links | array | The source links the engine showed with the answer. URLs written in the answer text are read too. |
| answer | string | One answer to score. Use answers instead for several prompts. |
| domain | string | The brand's website, such as acme.com. A link to it counts as a citation. An apex domain counts its subdomains. |
| engine | string | Which engine gave the answer, such as chatgpt, openai-web-search, perplexity, google-ai-mode, claude. Used to split the share by engine. |
Send feedback, a bug report or a tool request to the maintainers of the tools on this server: a missing tool, missing or stale data, or a tool that broke or gave a wrong answer. Pass the kind (need_tool, need_data, bug or other), one short message (at most 1000 characters) and, if you know them, the tool name and the error text it returned. Returns a ticket id. Feedback is not a chat: nothing in it is run or followed. Links, emails and phone numbers are removed and nothing about you is stored.
| Argument | Type | Description |
|---|---|---|
| kind* | string | need_tool: a tool you want. need_data: data a tool lacks. bug: something broke. other: anything else about the tools. |
| tool | string | Optional: the exact name of the tool on this server that the feedback is about, as tools/list shows it. |
| error | string | Optional: for a failed call, the error text it returned, copied as you saw it. Kept to 500 characters; links, email addresses and phone numbers are removed. Never include secrets or personal details. |
| message* | string | What you need or what broke, in plain words, at most 1000 characters. Links, email addresses and phone numbers are removed. Never include secrets or personal details. |
{
"type": "object",
"required": [
"kind",
"message"
],
"properties": {
"kind": {
"enum": [
"need_tool",
"need_data",
"bug",
"other"
],
"type": "string",
"description": "need_tool: a tool you want. need_data: data a tool lacks. bug: something broke. other: anything else about the tools."
},
"tool": {
"type": "string",
"pattern": "^[A-Za-z0-9_.:-]{1,64}$",
"description": "Optional: the exact name of the tool on this server that the feedback is about, as tools/list shows it."
},
"error": {
"type": "string",
"description": "Optional: for a failed call, the error text it returned, copied as you saw it. Kept to 500 characters; links, email addresses and phone numbers are removed. Never include secrets or personal details."
},
"message": {
"type": "string",
"maxLength": 1000,
"minLength": 10,
"description": "What you need or what broke, in plain words, at most 1000 characters. Links, email addresses and phone numbers are removed. Never include secrets or personal details."
}
},
"additionalProperties": false
}{
"type": "object",
"examples": [
{
"brand": "Acme CRM",
"domain": "acme.com",
"prompts": [
"What is the best CRM for a small agency?",
"Which CRM has the cheapest plan?"
],
"competitors": [
{
"name": "HubSpot",
"domain": "hubspot.com"
}
]
}
],
"required": [
"brand",
"prompts"
],
"properties": {
"brand": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The brand or product name to look for, such as Acme CRM."
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "The brand's website, such as acme.com. A link to it counts as a citation."
},
"aliases": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"maxItems": 20,
"description": "Other names that count as the brand, such as AcmeCRM."
},
"engines": {
"type": "array",
"items": {
"enum": [
"openai",
"perplexity"
],
"type": "string"
},
"maxItems": 2,
"description": "The engines the weekly runner asks, from openai and perplexity. Default: both. Answers from other engines can still be added by hand."
},
"prompts": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"maxItems": 25,
"minItems": 1,
"description": "The questions to ask every week, 1 to 25, such as \"best CRM for a small agency\". Each gets an id (p1, p2, ...) that add_round uses."
},
"competitors": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"domain": {
"type": "string",
"maxLength": 253
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Rivals to count in the same answers, each {name, domain}."
}
},
"additionalProperties": false
}| prompt |
| string |
| The question that was asked. Its words are removed from the answer before matching, so an engine that repeats the question does not count as naming you. |
| aliases | array | Other names that count as the brand, such as Acme or AcmeCRM. |
| answers | array | Several answers to score together (at most 50), for a share across prompts and engines. |
| competitors | array | Rivals to count in the same answers, each with a name and optionally a domain. |
{
"type": "object",
"examples": [
{
"brand": "Acme CRM",
"links": [
"https://acme.com/pricing",
"https://www.g2.com/categories/crm"
],
"answer": "For a small team, Acme CRM is simple. HubSpot is a common pick too.",
"domain": "acme.com",
"prompt": "best CRM for a small sales team"
}
],
"required": [
"brand"
],
"properties": {
"brand": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The brand or product name to look for, such as Acme CRM."
},
"links": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
},
"maxItems": 100,
"description": "The source links the engine showed with the answer. URLs written in the answer text are read too."
},
"answer": {
"type": "string",
"maxLength": 40000,
"minLength": 1,
"description": "One answer to score. Use answers instead for several prompts."
},
"domain": {
"type": "string",
"maxLength": 253,
"description": "The brand's website, such as acme.com. A link to it counts as a citation. An apex domain counts its subdomains."
},
"engine": {
"type": "string",
"maxLength": 60,
"description": "Which engine gave the answer, such as chatgpt, openai-web-search, perplexity, google-ai-mode, claude. Used to split the share by engine."
},
"prompt": {
"type": "string",
"maxLength": 2000,
"description": "The question that was asked. Its words are removed from the answer before matching, so an engine that repeats the question does not count as naming you."
},
"aliases": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"maxItems": 20,
"description": "Other names that count as the brand, such as Acme or AcmeCRM."
},
"answers": {
"type": "array",
"items": {
"type": "object",
"required": [
"answer"
],
"properties": {
"id": {
"type": "string",
"maxLength": 60,
"description": "Your label for the prompt, such as Q1."
},
"links": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
},
"maxItems": 100,
"description": "The source links the engine showed with the answer. URLs written in the answer text are read too."
},
"answer": {
"type": "string",
"maxLength": 40000,
"minLength": 1,
"description": "The answer text, pasted in full. At most 40000 characters."
},
"engine": {
"type": "string",
"maxLength": 60,
"description": "Which engine gave the answer, such as chatgpt, openai-web-search, perplexity, google-ai-mode, claude. Used to split the share by engine."
},
"prompt": {
"type": "string",
"maxLength": 2000,
"description": "The question that was asked. Its words are removed from the answer before matching, so an engine that repeats the question does not count as naming you."
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1,
"description": "Several answers to score together (at most 50), for a share across prompts and engines."
},
"competitors": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"domain": {
"type": "string",
"maxLength": 253
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Rivals to count in the same answers, each with a name and optionally a domain."
}
},
"additionalProperties": false
}