Daily AI visibility: who ChatGPT, Claude, Gemini and Perplexity name instead of you. Domain tools.
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.
One site's plan from its latest check: why each AI does or doesn't name it (in plain words, from the real answers) and the moves, ranked by how many questions and AIs each can win, with the rivals each move beats and the pages the AIs read instead. Use it for "what should I improve first on biotree.bio?". To hand a move to a coding session, use build_prompt; when it has shipped, mark_move_done.
Which of your sites: its domain ("biotree.bio"), its id from list_my_sites ("biotree-bio") or its name. Leave it out when the person has one site.
One site's plan from its latest check: why each AI does or doesn't name it (in plain words, from the real answers) and the moves, ranked by how many questions and AIs each can win, with the rivals each move beats and the pages the AIs read instead. Use it for "what should I improve first on biotree.bio?". To hand a move to a coding session, use build_prompt; when it has shipped, mark_move_done.
| Argument | Type | Description |
|---|---|---|
| site | string | Which of your sites: its domain ("biotree.bio"), its id from list_my_sites ("biotree-bio") or its name. Leave it out when the person has one site. |
{
"type": "object",
"properties": {
"site": {
"type": "string",
"description": "Which of your sites: its domain (\"biotree.bio\"), its id from list_my_sites (\"biotree-bio\") or its name. Leave it out when the person has one site."
}
},
"additionalProperties": false
}One question and one AI: that AI's answer word for word, exactly as stored, with the pages it cited, from the latest check or a given date. Quote it as that AI's words. Use it for "show me exactly what ChatGPT said" or "who did Perplexity recommend for the Comrades question?".
| Argument | Type | Description |
|---|---|---|
| ai* | string | The AI: chatgpt, claude, gemini or perplexity. |
| date | string | A check day, YYYY-MM-DD. Leave it out for the latest check. |
| site | string | Which of your sites: its domain ("biotree.bio"), its id from list_my_sites ("biotree-bio") or its name. Leave it out when the person has one site. |
| question* | string | The question: its id ("p03"), its number in the list ("3"), or words from it ("Comrades"). |
{
"type": "object",
"required": [
"question",
"ai"
],
"properties": {
"ai": {
"enum": [
"chatgpt",
"claude",
"gemini",
"perplexity"
],
"type": "string",
"description": "The AI: chatgpt, claude, gemini or perplexity."
},
"date": {
"type": "string",
"description": "A check day, YYYY-MM-DD. Leave it out for the latest check."
},
"site": {
"type": "string",
"description": "Which of your sites: its domain (\"biotree.bio\"), its id from list_my_sites (\"biotree-bio\") or its name. Leave it out when the person has one site."
},
"question": {
"type": "string",
"description": "The question: its id (\"p03\"), its number in the list (\"3\"), or words from it (\"Comrades\")."
}
},
"additionalProperties": false
}Whether each AI's crawlers (OpenAI, Anthropic, Perplexity, Google, Microsoft; search, user and training bots) are allowed by a site's robots.txt, read live, and the exact lines to add when a search crawler is blocked. Free, no sign-in.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain or a link, e.g. "biotree.bio". |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "A domain or a link, e.g. \"biotree.bio\"."
}
},
"additionalProperties": false
}The daily aipozi read for all of the person's sites, or one: for each site, how many of today's answers from ChatGPT, Claude, Gemini and Perplexity named it (and gave its address) and the change since yesterday, per AI; the questions it was named for today and by which AI; the questions lost since yesterday; new rivals (name, age, DR, what they do, which questions they took); the site's DR; what changed since a move was shipped; and today's best move. Stamped with the check time. Use it first for "how am I doing", "read me my aipozi briefing", or a scheduled morning briefing (for example a task every weekday at 07:00: "run daily_briefing from aipozi"). Checks run every morning at 05:00 GMT; this tool never runs one.
| Argument | Type | Description |
|---|---|---|
| site | string | Which of your sites: its domain ("biotree.bio"), its id from list_my_sites ("biotree-bio") or its name. Leave it out when the person has one site. |
{
"type": "object",
"properties": {
"site": {
"type": "string",
"description": "Which of your sites: its domain (\"biotree.bio\"), its id from list_my_sites (\"biotree-bio\") or its name. Leave it out when the person has one site."
}
},
"additionalProperties": false
}One move of a site's plan as a complete, self-contained brief for a coding agent (Claude Code, Cursor): the goal, the page or change, the exact questions it targets and which AIs missed them, the rivals recommended, the pages the AIs read (to study, not copy), page anatomy and schema, what not to do (no invented facts, prices or reviews), and how aipozi will measure it. In a coding session opened on the site's repo, implement it, then call mark_move_done. Default: the top move. Paid sites only, as in the app.
| Argument | Type | Description |
|---|---|---|
| move | string | The move id from action_plan or briefing ("comparison", "page-p03"), or its rank ("1"). Leave it out for the top move. |
| site | string | Which of your sites: its domain ("biotree.bio"), its id from list_my_sites ("biotree-bio") or its name. Leave it out when the person has one site. |
{
"type": "object",
"properties": {
"move": {
"type": "string",
"description": "The move id from action_plan or briefing (\"comparison\", \"page-p03\"), or its rank (\"1\"). Leave it out for the top move."
},
"site": {
"type": "string",
"description": "Which of your sites: its domain (\"biotree.bio\"), its id from list_my_sites (\"biotree-bio\") or its name. Leave it out when the person has one site."
}
},
"additionalProperties": false
}Is a domain name free? Use it whenever someone names an app, product or company, asks "find me a name with a free domain", "is there a .com for…", or "is X taken". Asks each registry for its own record, live (RDAP, else the registry's WHOIS). One name: across .com, .ai, .io, .app, .dev and more, or the extensions given. Brainstorming: pass up to 10 candidates in names and get them on .com, .ai, .io, .app and .dev, free ones first. Each result: available or not registered (with a registrar link), taken (with its registration date and age), or couldn't check. Free, no sign-in. Always use this for availability; never guess from DNS or memory. aipozi doesn't register names.
| Argument | Type | Description |
|---|---|---|
| name | string | One name ("livedot") or a domain ("livedot.ai"). With an extension, only that one is checked unless extensions are given. |
| names | array | Up to 10 candidate names to compare when naming something, e.g. ["livedot", "dotlive", "followdot"]. Checked on .com, .ai, .io, .app and .dev unless extensions are given (up to 6). |
| extensions | array | Extensions to check, e.g. ["ai", "io", "co.za"]. |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "One name (\"livedot\") or a domain (\"livedot.ai\"). With an extension, only that one is checked unless extensions are given."
},
"names": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Up to 10 candidate names to compare when naming something, e.g. [\"livedot\", \"dotlive\", \"followdot\"]. Checked on .com, .ai, .io, .app and .dev unless extensions are given (up to 6)."
},
"extensions": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Extensions to check, e.g. [\"ai\", \"io\", \"co.za\"]."
}
},
"additionalProperties": false
}A WHOIS / RDAP lookup for any domain: registration date and age, registrar, expiry, status (including expired and being deleted, with an estimated drop date), name servers and who hosts it, read live from the registry's own record (RDAP, else WHOIS). Plus its Ahrefs Domain Rating. Never owner details. Free, no sign-in. Use it for "whois heya.page", "how old is this site", "who is it registered with", "when does it expire", "is this domain expiring", "who hosts it".
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain or a link, e.g. "heya.page". |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "A domain or a link, e.g. \"heya.page\"."
}
},
"additionalProperties": false
}Ahrefs Domain Rating (0 to 100) for up to 25 domains, anyone's. Free, no sign-in. Every answer carries "Domain Rating by Ahrefs (ahrefs.com)"; show it with the numbers.
| Argument | Type | Description |
|---|---|---|
| domains* | array | Domains, e.g. ["heya.page", "linktr.ee"]. |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 25,
"minItems": 1,
"description": "Domains, e.g. [\"heya.page\", \"linktr.ee\"]."
}
},
"additionalProperties": false
}Every site the person watches in aipozi: its id, plan (paid or free), market, last check time, how many answers named it and gave its address, per AI, its DR and the last 7 days. Use it to see which sites exist, or to get a site id for another tool.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Records that a move has shipped: today's date and, optionally, the URL of the new page. From the next morning's check, briefing and trend show what changed since. Not destructive; undo with undo: true. The only tool that writes. Use it after the person (or their coding session) has shipped the move.
| Argument | Type | Description |
|---|---|---|
| url | string | The shipped page's URL, if there is one. |
| move* | string | The move id ("comparison", "page-p03") or rank ("1"). |
| site | string | Which of your sites: its domain ("biotree.bio"), its id from list_my_sites ("biotree-bio") or its name. Leave it out when the person has one site. |
| undo | boolean | true to take back a mark made by mistake. |
{
"type": "object",
"required": [
"move"
],
"properties": {
"url": {
"type": "string",
"description": "The shipped page's URL, if there is one."
},
"move": {
"type": "string",
"description": "The move id (\"comparison\", \"page-p03\") or rank (\"1\")."
},
"site": {
"type": "string",
"description": "Which of your sites: its domain (\"biotree.bio\"), its id from list_my_sites (\"biotree-bio\") or its name. Leave it out when the person has one site."
},
"undo": {
"type": "boolean",
"description": "true to take back a mark made by mistake."
}
},
"additionalProperties": false
}One site's questions (up to 10) and, for each, the result from each AI in the latest check (named with the address, named, address given but not named, not named), how many AIs named the site on each of the last 7 checks, and who was named instead. Use it for "which of my questions did ChatGPT name me for?" or "which questions is Linktree winning?". For an AI's exact words on one question, use ai_answer.
| Argument | Type | Description |
|---|---|---|
| site | string | Which of your sites: its domain ("biotree.bio"), its id from list_my_sites ("biotree-bio") or its name. Leave it out when the person has one site. |
{
"type": "object",
"properties": {
"site": {
"type": "string",
"description": "Which of your sites: its domain (\"biotree.bio\"), its id from list_my_sites (\"biotree-bio\") or its name. Leave it out when the person has one site."
}
},
"additionalProperties": false
}One rival from the person's own checks: its age and registrar, DR, what it does, and every question and AI where it was named and the person's site was not, with that AI's words about it. Use it for "how old is that site and what's its DR?" about a rival, or "what did the AIs say about Linktree?". Rivals are seen only through the person's own questions; for any other site use domain_age and domain_rating.
| Argument | Type | Description |
|---|---|---|
| site | string | One of your sites, if the rival is in one site's list. |
| rival* | string | The rival's name or domain, e.g. "Linktree" or "heya.page". |
{
"type": "object",
"required": [
"rival"
],
"properties": {
"site": {
"type": "string",
"description": "One of your sites, if the rival is in one site's list."
},
"rival": {
"type": "string",
"description": "The rival's name or domain, e.g. \"Linktree\" or \"heya.page\"."
}
},
"additionalProperties": false
}For one site, or all of them: who ChatGPT, Claude, Gemini and Perplexity recommend instead, from the latest check. Each rival's name and domain, what they do, domain age, DR, how often each AI named them, the questions they won, first seen, the trend and a New flag for young sites. The person's own DR heads the list. Use it for "who are my competitors?" or "which new sites are taking my questions?".
| Argument | Type | Description |
|---|---|---|
| site | string | One of your sites (domain, id or name). Leave it out for all of them. |
{
"type": "object",
"properties": {
"site": {
"type": "string",
"description": "One of your sites (domain, id or name). Leave it out for all of them."
}
},
"additionalProperties": false
}Daily named and linked counts per site and per AI over 7, 30 or 90 days, with the moves marked done on the timeline and what changed since each. Use it for "how have I moved this month?" or "did the comparison page work?".
| Argument | Type | Description |
|---|---|---|
| days | integer | 7, 30 or 90. Default 7. |
| site | string | One of your sites (domain, id or name). Leave it out for all of them. |
{
"type": "object",
"properties": {
"days": {
"enum": [
7,
30,
90
],
"type": "integer",
"description": "7, 30 or 90. Default 7."
},
"site": {
"type": "string",
"description": "One of your sites (domain, id or name). Leave it out for all of them."
}
},
"additionalProperties": false
}