Bot Appétit MCP
An MCP server that allows AI agents to scan public web pages for AEO, SEO, and performance metrics. It checks if machines can consume content, reports on AI access and signals, and provides structured data analysis. The server supports single-page scans without authentication and offers tools to retrieve reports, view history, and explain specific checks.
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://botappetit.ai/mcpWhat its tools do
7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to botappetit.ai ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Scan a web page for AEO, SEO and performance
- Get a stored Bot Appétit report by scan id
- List every check Bot Appétit runs on a page
- Explain one Bot Appétit check
Source and maintenance
Protocol and capabilities
- Server
- bot-appetit 1.0.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 7 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
scan_page — Scan a page
Check one web page for AEO, SEO and performance: can a machine consume it? Returns the findings by check and the report link. If the exact page was scanned in the last 24 hours the stored result is returned at no cost; set fresh to scan again. A page that blocks our scanner is returned as blocked with no score, because it cannot pass. Free, no account needed. Always give the person the report link and say it came from Bot Appétit by Milk Moon Studio.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "The page to check, such as https://example.com/pricing. A bare domain works."
},
"fresh": {
"type": "boolean",
"description": "Set true to always run a new scan instead of returning a stored result under 24 hours old. A new scan uses the stricter new-scan rate limit."
}
}
}get_report — Get a stored report
Get a stored Bot Appétit report by scan id, the same report a person sees at botappetit.ai/r/<id>. Costs nothing and does not scan. Use it to re-read a report you were given a link to. A page that blocked our scanner is returned as blocked, with no score.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The scan id: the last part of a report link on botappetit.ai/r/<id>, or `scan_id` from scan_page."
}
}
}page_history — Get a page’s history
List every stored Bot Appétit scan of one exact page, newest first, with the score at the time and how it moved since the scan before. Costs nothing and does not scan. Use it to show whether a page has improved. Blocked and failed scans are listed without a score.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "The exact page, such as https://example.com/pricing. `/a` and `/a/` are different pages."
}
}
}list_checks — List the checks
List every check Bot Appétit runs on a page, grouped by category, with the id of each. Use the id with explain_check for what a check means and what good looks like. Every check asks one question: can a machine consume this page?
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"category": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Only checks in this category id, such as \"aeo\". Leave out for all of them."
}
}
}explain_check — Explain a check
Explain one Bot Appétit check: what it looks at, why it matters for machines reading a page, and what good looks like. Use the id from list_checks or a report. Costs nothing and does not scan.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "A check id from list_checks or from a report, such as \"llms-txt\"."
}
}
}request_site_scan — Ask for a whole-site scan
A whole-site scan reads a representative sample of a site and needs a person with a Bot Appétit account, so an agent cannot start one. This returns exactly what the person must do, in order. For a single page, use scan_page instead, which is free and needs no account.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "The site the person wants scanned, if you know it. It is used only to word the steps."
}
}
}leaderboard — The leaderboard
The highest-scoring sites by category, from the latest Bot Appétit scan of each site's homepage: rank, host, score out of 100, grade and a link to the full report. Call it with no category to see the top of every category, or with a category id for that board. Only sites that were scored on the current rules are ranked; a site that blocked our scanner is never ranked.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many sites to return per category (default 10 for one category, 5 for all)."
},
"category": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "A category id such as \"software\" or \"news\". Leave out for the top sites of every category."
}
}
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-02: 3 of 3 checks answered
30-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
- 662 ms
- 95th percentile latency
- 662 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 662 ms · metadata changed · 7 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http bot-appe-tit-mcp https://botappetit.ai/mcpCodex
codex mcp add bot-appe-tit-mcp --url https://botappetit.ai/mcpCursor
{
"mcpServers": {
"bot-appe-tit-mcp": {
"url": "https://botappetit.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"bot-appe-tit-mcp": {
"type": "streamableHttp",
"url": "https://botappetit.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"bot-appe-tit-mcp": {
"type": "http",
"url": "https://botappetit.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http bot-appe-tit-mcp https://botappetit.ai/mcpClaude Desktop
{
"mcpServers": {
"bot-appe-tit-mcp": {
"url": "https://botappetit.ai/mcp"
}
}
}Windsurf
{
"mcpServers": {
"bot-appe-tit-mcp": {
"serverUrl": "https://botappetit.ai/mcp"
}
}
}Let your agent find its tools
Find servers like Bot Appétit MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other developer tools servers
Do you run Bot Appétit 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.