aipozi MCP
The aipozi MCP server integrates AI visibility tracking into Claude, ChatGPT, and Cursor. It provides daily briefings on whether major AI assistants recommend the user's sites, identifies competitors, and offers actionable coding prompts to improve search presence. Users can query specific AI answers, track trends, and implement fixes within their development environment.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://aipozi.com/mcpWhat you can do with it
- Receive daily briefings on AI recommendations for specific sites
- Query exact answers from ChatGPT, Claude, Gemini, and Perplexity
- Identify competitors recommended instead of the user's site
- Implement coding fixes for top visibility moves in Claude Code or Cursor
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- aipozi 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 14 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- 3 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
14 advertised
briefing — Today's briefing
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"date": {
"type": "string",
"description": "Today (YYYY-MM-DD)."
},
"view": {
"enum": [
"briefing",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"sites": {
"type": "array",
"items": {
"type": "object",
"properties": {
"dr": {
"type": [
"number",
"null"
],
"description": "The site's Ahrefs Domain Rating."
},
"date": {
"type": [
"string",
"null"
],
"description": "The check's day, YYYY-MM-DD ."
},
"lost": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Questions named yesterday and not today: { promptId, question, ais }."
},
"plan": {
"type": "string",
"description": "owner, pro (paid, $29 a month) or free."
},
"delta": {
"type": [
"number",
"null"
],
"description": "Named, change since the day before; null without a day before."
},
"named": {
"type": [
"number",
"null"
],
"description": "Answers that named the site."
},
"domain": {
"type": "string",
"description": "The site."
},
"linked": {
"type": [
"number",
"null"
],
"description": "Answers that gave its address."
},
"market": {
"type": [
"string",
"null"
],
"description": "Where its questions are asked from, or null for worldwide."
},
"siteId": {
"type": "string",
"description": "The site id."
},
"answers": {
"type": [
"number",
"null"
],
"description": "Answers in the check (questions x 4 AIs)."
},
"engines": {
"type": "object",
"properties": {},
"description": "Per AI, one tick per question: 2 named with address, 1 named, 0 not named.",
"additionalProperties": true
},
"bestMove": {
"type": "object",
"properties": {},
"description": "Today's best move: { id, rank, title, kind }, or null.",
"additionalProperties": true
},
"namedFor": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Questions named for today: { promptId, question, ais }."
},
"checkedAt": {
"type": [
"string",
"null"
],
"description": "When the check finished (ISO)."
},
"freshness": {
"type": "object",
"properties": {},
"description": "{ state, stamp, line }: when the data is from and when the next check runs.",
"additionalProperties": true
},
"newRivals": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Young rivals: { domain, name, ageDays, dr, whatTheyDo, engines, questions, locked }."
},
"perEngine": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Per AI: { ai, label, named, linked, answers }."
},
"sinceShipped": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Moves marked done and what changed since: { moveId, title, day, url, delta, line }."
}
},
"description": "One site's day.",
"additionalProperties": true
},
"description": "One per site."
},
"totals": {
"type": "object",
"properties": {},
"description": "All sites: { named, answers, delta }.",
"additionalProperties": true
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"drCredit": {
"type": "string",
"description": "Domain Rating by Ahrefs (ahrefs.com)."
}
},
"description": "The briefing.",
"additionalProperties": true
}{
"title": "Today's briefing",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}list_my_sites — My sites
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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"view"
],
"properties": {
"view": {
"enum": [
"sites",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"sites": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ siteId, domain, brand, plan, market, lastCheck, named, linked, answers, perEngine, dr, trend7, freshness }."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
}
},
"description": "The sites.",
"additionalProperties": true
}{
"title": "My sites",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}questions — My questions and results
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"date": {
"type": "string",
"description": "The check day."
},
"view": {
"enum": [
"questions",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"stamp": {
"type": "string",
"description": "\"Checked 05:01 GMT\"."
},
"domain": {
"type": "string",
"description": "The site."
},
"siteId": {
"type": "string",
"description": "The site id."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"questions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ promptId, question, results: { chatgpt, claude, gemini, perplexity }, namedBy, last7, namedInstead }."
}
},
"description": "Questions and results.",
"additionalProperties": true
}{
"title": "My questions and results",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}ai_answer — What the AI said
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?".
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"date": {
"type": "string",
"description": "The check day."
},
"view": {
"enum": [
"answer",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"domain": {
"type": "string",
"description": "The site."
},
"result": {
"type": "string",
"description": "named, with your address | named | your address given, not named | not named."
},
"aiLabel": {
"type": "string",
"description": "ChatGPT, Claude, Gemini or Perplexity."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"question": {
"type": "string",
"description": "The question as asked."
},
"citations": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ url, title, domain }."
},
"answerText": {
"type": "string",
"description": "The answer, word for word."
}
},
"description": "One stored answer.",
"additionalProperties": true
}{
"title": "What the AI said",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}rivals — Who the AIs recommend instead
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?".
{
"type": "object",
"properties": {
"site": {
"type": "string",
"description": "One of your sites (domain, id or name). Leave it out for all of them."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"view"
],
"properties": {
"view": {
"enum": [
"rivals",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"sites": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ siteId, domain, you: { domain, dr, named, answers }, date, rivals: [{ name, domain, whatTheyDo, ageDays, dr, isNew, namedCount, perEngine, questionsWon, firstSeen, trend }] }."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"drCredit": {
"type": "string",
"description": "Domain Rating by Ahrefs (ahrefs.com)."
}
},
"description": "Rivals.",
"additionalProperties": true
}{
"title": "Who the AIs recommend instead",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}rival_detail — One rival up close
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"view": {
"enum": [
"rival",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"rival": {
"type": "object",
"properties": {},
"description": "{ name, domain, whatTheyDo, ageDays, registeredAt, registrar, dr, namedCount, perEngine, questionsWon, namedOverYou: [{ question, aiLabel, quotes }] }.",
"additionalProperties": true
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"drCredit": {
"type": "string",
"description": "Domain Rating by Ahrefs (ahrefs.com)."
}
},
"description": "One rival.",
"additionalProperties": true
}{
"title": "One rival up close",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}trend — How I've moved
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?".
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"days": {
"type": "number",
"description": "The window."
},
"view": {
"enum": [
"trend",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"sites": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ siteId, domain, series: [{ date, named, linked, answers, perEngine }], moves, sinceShipped }."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
}
},
"description": "The trend.",
"additionalProperties": true
}{
"title": "How I've moved",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}domain_rating — Domain Rating
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"view": {
"enum": [
"dr",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"results": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ domain, dr } (dr null when Ahrefs has no rating)."
},
"drCredit": {
"type": "string",
"description": "Domain Rating by Ahrefs (ahrefs.com)."
}
},
"description": "Domain Ratings.",
"additionalProperties": true
}{
"title": "Domain Rating",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}action_plan — What to improve
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"why": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ ai, label, why }."
},
"date": {
"type": "string",
"description": "The check the plan comes from."
},
"view": {
"enum": [
"plan",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"moves": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ id, rank, kind, title, locked, detail, impact, targets, rival, evidence, hasBuildPrompt, done }."
},
"domain": {
"type": "string",
"description": "The site."
},
"locked": {
"type": "boolean",
"description": "True on a free site: move 1 in full, the rest locked."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
}
},
"description": "The plan.",
"additionalProperties": true
}{
"title": "What to improve",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}build_prompt — Hand a move to my coding session
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"move": {
"type": "object",
"properties": {},
"description": "{ id, rank, title, kind, targets }.",
"additionalProperties": true
},
"view": {
"enum": [
"move",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"domain": {
"type": "string",
"description": "The site."
},
"prompt": {
"type": "string",
"description": "The brief, ready to paste or act on."
},
"measure": {
"type": "string",
"description": "How aipozi measures it and the mark_move_done call to make."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
}
},
"description": "A build prompt.",
"additionalProperties": true
}{
"title": "Hand a move to my coding session",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}mark_move_done — I've shipped it
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"day": {
"type": "string",
"description": "The day it was marked."
},
"url": {
"type": [
"string",
"null"
],
"description": "The page."
},
"done": {
"type": "boolean",
"description": "Marked done (false after an undo)."
},
"move": {
"type": "object",
"properties": {},
"description": "{ id, title }.",
"additionalProperties": true
},
"view": {
"enum": [
"done",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"domain": {
"type": "string",
"description": "The site."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
}
},
"description": "The record.",
"additionalProperties": true
}{
"title": "I've shipped it",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}check_domain — Check domain availability
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.
{
"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
}{
"type": "object",
"required": [
"view"
],
"properties": {
"view": {
"enum": [
"domains",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"label": {
"type": "string",
"description": "The name searched."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"results": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ domain, tld, status: available|premium|unregistered|unavailable|taken|unknown, price, registeredAt, ageDays, registerUrl, checkedAt }."
}
},
"description": "Availability per extension.",
"additionalProperties": true
}{
"title": "Check domain availability",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}domain_age — WHOIS lookup: how old is a website
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".
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "A domain or a link, e.g. \"heya.page\"."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"view"
],
"properties": {
"dr": {
"type": [
"number",
"null"
],
"description": "Ahrefs Domain Rating."
},
"view": {
"enum": [
"age",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"found": {
"type": "boolean",
"description": "The registry has a record."
},
"domain": {
"type": "string",
"description": "The registrable domain."
},
"ageDays": {
"type": [
"number",
"null"
],
"description": "Days since registration."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"drCredit": {
"type": "string",
"description": "Domain Rating by Ahrefs (ahrefs.com)."
},
"expiresAt": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD."
},
"registrar": {
"type": [
"string",
"null"
],
"description": "The registrar."
},
"nameservers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Name servers."
},
"registeredAt": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD."
}
},
"description": "The registry record.",
"additionalProperties": true
}{
"title": "WHOIS lookup: how old is a website",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}ai_crawler_access — Can AI read this site
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.
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "A domain or a link, e.g. \"biotree.bio\"."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"view"
],
"properties": {
"fix": {
"type": [
"string",
"null"
],
"description": "The robots.txt lines to add."
},
"bots": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "{ bot, company, engine, purpose, status: allowed|blocked|partial|unknown, blockedPaths }."
},
"view": {
"enum": [
"crawlers",
"none"
],
"type": "string",
"description": "What this answer is; \"none\" for a question back, a plain no, or nothing there yet (see message)."
},
"domain": {
"type": "string",
"description": "The site."
},
"finding": {
"type": [
"string",
"null"
],
"description": "What is blocked, in plain words."
},
"message": {
"type": "string",
"description": "When view is \"none\": what to tell the person."
},
"robotsFound": {
"type": "boolean",
"description": "A robots.txt exists."
},
"blocksSearch": {
"type": "boolean",
"description": "A search or user bot is blocked."
}
},
"description": "The robots.txt audit.",
"additionalProperties": true
}{
"title": "Can AI read this site",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
3 advertised
daily_briefing — Daily aipozi briefing
Today's briefing for all your sites, then the one move to make today.
fix_top_move — Fix the top move
Fetch the top move's build prompt for a site, implement it in this repo, then mark it done.
- site
- The site, e.g. biotree.bio. (required)
rival_watch — Rival watch
Which new sites are taking your questions, how old they are, and their DR.
Resources
1 advertised
aipozi — aipozi
aipozi's card: the briefing, questions, rivals, a move's build prompt, domain results.
ui://aipozi/app.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1766 ms
- 95th percentile latency
- 1766 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1766 ms · metadata changed · 14 tool(s), 1 resource(s), 0 resource template(s), 3 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http aipozi-mcp https://aipozi.com/mcpCodex
codex mcp add aipozi-mcp --url https://aipozi.com/mcpCursor
{
"mcpServers": {
"aipozi-mcp": {
"url": "https://aipozi.com/mcp"
}
}
}Cline
{
"mcpServers": {
"aipozi-mcp": {
"type": "streamableHttp",
"url": "https://aipozi.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"aipozi-mcp": {
"type": "http",
"url": "https://aipozi.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http aipozi-mcp https://aipozi.com/mcpClaude Desktop
{
"mcpServers": {
"aipozi-mcp": {
"url": "https://aipozi.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"aipozi-mcp": {
"serverUrl": "https://aipozi.com/mcp"
}
}
}Let your agent find its tools
Find servers like aipozi MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other crm, sales, and marketing servers
Do you run aipozi MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.