Agent Ready MCP
A hosted MCP server operated by WorkPods that enables AI agents to perform SEO, GEO, and AXO checks on web pages, crawl sites for broken links, read AI answers, and draft configuration files like llms.txt and robots.txt without requiring user authentication.
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://mcp.workpods.ai/mcpWhat its tools do
12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (11)
Can change data (1)
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 workpods.ai ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Check a URL for SEO and agent accessibility issues
- Crawl a site to find broken links and duplicates
- Draft llms.txt and robots.txt rules for a domain
- Read AI answers from current browser tabs
Source and maintenance
Protocol and capabilities
- Server
- agent-ready-by-workpods 0.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 12 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- 3 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
12 advertised
seo_audit_page — SEO audit of one page
SEO audit of one web page, covering technical SEO and AI search readiness: how search engines, AI answer engines (ChatGPT, Perplexity, Google AI Overviews) and AI agents read it. It checks indexing (status, robots, canonical), title and meta description, headings and copy, schema markup (JSON-LD), links, image alt text and AI readiness. Use it when the person asks for an SEO or website audit of a page, how a page does in search or AI answers, or what to fix first. result has url (where the page landed), status, scores (passed and judged checks per layer: seo, geo, axo), problems (each with check id, status fail or partial, severity, a one-line summary and evidence), passed and notApplicable (check ids). Results are cached for 15 minutes. These are deterministic checks of public pages fetched by Agent Ready Website Audit, with no AI model and no account. They do not cover rankings, keyword volumes, backlinks or how AI answers mention the brand. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The page to check: an absolute http or https URL, such as https://example.com/pricing."
},
"brandName": {
"type": "string",
"maxLength": 100,
"description": "The brand name as people search for it, such as \"Acme Running\". When given, the organization identity check compares the page schema with it. Defaults to none."
}
}
}{
"title": "SEO audit of one page",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}check_robots_sitemap_llms_txt — Check robots.txt, sitemaps and llms.txt
Checks a site's robots.txt, sitemaps and llms.txt: robots.txt with the verdict for each AI crawler (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Google-Extended and more), Content-Signal lines, the sitemaps, llms.txt, the agent files under /.well-known (AI catalog, MCP server cards, A2A agent card) and whether the home page has a Markdown version. Use it to see whether AI crawlers may read the site, whether its sitemap and llms.txt are in place, and what it offers agents. Only the origin of the URL is used. result has robotsTxt (url, status, contentSignals), aiCrawlers (token, operator, role, allowed), sitemaps (URL count, a sample, files), agentFiles (each with outcome ok, not_found, blocked or failed), markdownVersion and findings. A status of null means the site gave no answer. Cached for 1 hour. These are deterministic checks of public pages fetched by Agent Ready Website Audit, with no AI model and no account. They do not cover rankings, keyword volumes, backlinks or how AI answers mention the brand. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "Any page on the site: an absolute http or https URL, such as https://example.com/pricing."
}
}
}{
"title": "Check robots.txt, sitemaps and llms.txt",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}check_ai_crawler_access — Check AI crawler access
Checks whether AI crawlers such as GPTBot, ClaudeBot and PerplexityBot may read one page, from robots.txt, the robots meta tags (including ones naming the crawler), the X-Robots-Tag header and the HTTP status. Use it when the person asks whether ChatGPT, Claude, Perplexity or Google can see a page, or whether blocked crawlers explain why the site is missing from AI answers. result.bots lists each crawler with verdict: readable, readable_not_for_index (it may fetch the page but is asked not to index it), blocked_by_robots_txt or page_unavailable, plus robotsTxtAllows and the pageDirectives found. Firewalls that block crawlers by user agent or IP are not visible from here. These are deterministic checks of public pages fetched by Agent Ready Website Audit, with no AI model and no account. They do not cover rankings, keyword volumes, backlinks or how AI answers mention the brand. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"bot": {
"type": "string",
"maxLength": 60,
"description": "One robots.txt product token, such as GPTBot, ClaudeBot or PerplexityBot. Defaults to every AI crawler Agent Ready tracks."
},
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The page to ask about: an absolute http or https URL, such as https://example.com/pricing."
}
}
}{
"title": "Check AI crawler access",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}check_agent_readiness — Check AI agent readiness
Checks whether AI agents can use a page and its site: labelled forms and buttons, declared WebMCP tools, a Markdown version (content negotiation or a Link header), the agent files and MCP server cards under /.well-known, and whether the domain has an MCP server listed in the official MCP Registry. Use it when the person asks whether agents can complete tasks on the site or find its MCP server. result has checks (the agent checks with status and summary), webMcpTools, markdownVersion, agentFiles and mcpRegistry (listings by name, website or endpoint; null when the registry could not be read, an empty list when nothing is listed). Registry lookups are cached 6 hours. These are deterministic checks of public pages fetched by Agent Ready Website Audit, with no AI model and no account. They do not cover rankings, keyword volumes, backlinks or how AI answers mention the brand. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The page to check, usually the home page or a task page: an absolute http or https URL, such as https://example.com/pricing."
}
}
}{
"title": "Check AI agent readiness",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}compare_with_competitor_page — Compare with a competitor's page
Runs the seo_audit_page checks on the person's page and a competitor's page that targets the same search or task, and lists the checks where they differ. Use it when the person asks why a competitor ranks or shows up in AI answers and they do not. result has mine and theirs (status, scores, problem count, word count, headings, schema types) and differences (check id with each side's status and summary). These are deterministic checks of public pages fetched by Agent Ready Website Audit, with no AI model and no account. They do not cover rankings, keyword volumes, backlinks or how AI answers mention the brand. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"competitorUrl"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The person's own page: an absolute http or https URL, such as https://example.com/pricing."
},
"competitorUrl": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The competitor's page for the same search or task: an absolute http or https URL, such as https://example.com/pricing."
}
}
}{
"title": "Compare with a competitor's page",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}check_local_seo_details — Check local SEO details
Local SEO check of a business's website: whether the page states the business name, address and phone the person gives (NAP consistency), and whether it has LocalBusiness schema, click-to-call links and an embedded Google map. Use it for local SEO questions about a shop, clinic, restaurant or office's website. result has name, address and phone, each with status match, mismatch, not_found or profile_missing (no value given) and what the site states, localSchema (types and missing fields; null when there is none), telLinks and embeddedMap. It does not read the Google Business Profile itself. These are deterministic checks of public pages fetched by Agent Ready Website Audit, with no AI model and no account. They do not cover rankings, keyword volumes, backlinks or how AI answers mention the brand. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"name"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The business's page, usually its home or contact page: an absolute http or https URL, such as https://example.com/pricing."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The business name, as on its signage."
},
"phone": {
"type": "string",
"maxLength": 40,
"description": "The phone number in any format, such as \"+1 217 555 0100\". Defaults to none, which leaves the phone unchecked."
},
"address": {
"type": "string",
"maxLength": 300,
"description": "The street address on one line, such as \"12 Main St, Springfield, IL 62701\". Defaults to none, which leaves the address unchecked."
}
}
}{
"title": "Check local SEO details",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}draft_llms_txt — Draft an llms.txt file
Drafts a starter llms.txt (llmstxt.org) for a site from its home page and sitemap: an H1 with the site name, its description as the summary, and links to its main pages grouped by section, titled from the pages where they were fetched. Use it when the site has no llms.txt or a broken one. result has llmsTxt (the file text), saveAs (where it goes), links, sitemapUrls and existingLlmsTxt (the outcome of the current one). The person should edit it before publishing. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "Any page on the site; only its origin is used: an absolute http or https URL, such as https://example.com/pricing."
},
"maxLinks": {
"type": "integer",
"maximum": 50,
"minimum": 5,
"description": "The most page links to include, 5 to 50. Defaults to 25."
}
}
}{
"title": "Draft an llms.txt file",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}draft_robots_txt_for_ai_crawlers — Draft robots.txt rules for AI crawlers
Drafts robots.txt groups for the AI crawlers Agent Ready tracks, and a Content-Signal line, from what the site owner wants: crawlers that index for AI search, crawlers that fetch a page because a user asked, and crawlers that collect training data, each allowed or blocked, with per-crawler overrides. It fetches nothing. Use it after check_robots_sitemap_llms_txt or check_ai_crawler_access shows crawlers blocked or allowed against the owner's wishes. result has robotsTxt (the lines to merge), contentSignal, decisions (each crawler with its role and choice) and unknownOverrides (tokens not recognised). Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"search": {
"enum": [
"allow",
"block"
],
"type": "string",
"description": "Whether AI search crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) may read the site: allow or block. Defaults to allow."
},
"training": {
"enum": [
"allow",
"block"
],
"type": "string",
"description": "Whether training crawlers (GPTBot, ClaudeBot, Google-Extended, CCBot) may read it: allow or block. Defaults to allow."
},
"overrides": {
"type": "object",
"description": "Per-crawler choices that win over the role choices, by robots.txt token, such as {\"GPTBot\": \"block\"}. Defaults to none.",
"propertyNames": {
"type": "string",
"maxLength": 60
},
"additionalProperties": {
"enum": [
"allow",
"block"
],
"type": "string"
}
},
"userFetch": {
"enum": [
"allow",
"block"
],
"type": "string",
"description": "Whether crawlers fetching for a user (ChatGPT-User, Claude-User) may read it: allow or block. Defaults to allow."
}
}
}{
"title": "Draft robots.txt rules for AI crawlers",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}draft_schema_markup — Draft schema markup (JSON-LD)
Drafts schema markup (schema.org JSON-LD structured data) for a page: Organization, WebSite, FAQPage (questions read from headings that end in a question mark, with the text under them) or LocalBusiness. Values the person gives win over values read from the page. Use it when seo_audit_page reports missing or incomplete structured data. result has jsonLd, scriptTag (ready to paste into the <head>), filledFrom (each field: input or page), missing (fields to fill in) and existingTypes (schema types the page already declares). Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"type"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The page the markup describes: an absolute http or https URL, such as https://example.com/pricing."
},
"name": {
"type": "string",
"maxLength": 200,
"description": "The organization or site name. Defaults to the page's."
},
"type": {
"enum": [
"Organization",
"WebSite",
"FAQPage",
"LocalBusiness"
],
"type": "string",
"description": "The schema.org type to draft."
},
"phone": {
"type": "string",
"maxLength": 40,
"description": "LocalBusiness only: the phone. Defaults to the page's first tel: link."
},
"sameAs": {
"type": "array",
"items": {
"type": "string",
"format": "uri",
"maxLength": 2000
},
"maxItems": 10,
"description": "Official profile URLs (LinkedIn, X, YouTube). Defaults to the social links on the page."
},
"address": {
"type": "string",
"maxLength": 300,
"description": "LocalBusiness only: the street address on one line."
},
"logoUrl": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "An absolute logo image URL. Defaults to the page icon."
}
}
}{
"title": "Draft schema markup (JSON-LD)",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}start_site_crawl — Start a site-wide SEO crawl
Starts a site-wide SEO crawl of up to 50 pages, in the background, for the problems one page cannot show: broken links, duplicate titles and descriptions, orphan and deep pages, noindex and sitemap mismatches and soft 404s. Use it when the person wants the whole site checked. It returns at once with jobId; call get_site_crawl with it every 20 to 30 seconds until status is done. Crawls honour robots.txt and pause between pages, so 50 pages take a few minutes. Results are kept 24 hours. These are deterministic checks of public pages fetched by Agent Ready Website Audit, with no AI model and no account. They do not cover rankings, keyword volumes, backlinks or how AI answers mention the brand. Recorded: the checked domain and path (never the query string), the tool, which checks failed and the app name; never an IP address or page text.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "Where the crawl starts, usually the home page: an absolute http or https URL, such as https://example.com/pricing."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "The most pages to fetch, 1 to 50. Defaults to 50."
},
"pinned": {
"type": "array",
"items": {
"type": "string",
"format": "uri",
"maxLength": 2000
},
"maxItems": 10,
"description": "Up to 10 money pages (pricing, product, contact) to crawl first, as absolute URLs on the same site. Defaults to none."
}
}
}{
"title": "Start a site-wide SEO crawl",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}get_site_crawl — Get the site crawl results
Reads a crawl started by start_site_crawl. While it runs, result has status (queued or running) and pagesDone; call again in 20 to 30 seconds. Once done, result has the site-wide findings and the crawled pages with their problems, 10 pages per call: pass nextCursor back as cursor for the next 10; nextCursor is null on the last page. A failed crawl has status failed and error. An unknown or expired job id is an error. Returns JSON: summary (one sentence), reportUrl (a shareable report page for the person, kept 30 days; null for tools that keep none) and result (the details below). Errors come back as one plain sentence.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "The jobId from start_site_crawl."
},
"cursor": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Where the page list starts, from nextCursor. Defaults to 0."
}
}
}{
"title": "Get the site crawl results",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}request_full_audit — Request a full WorkPods audit
Files a request for a full WorkPods audit of a site: how AI answers (ChatGPT, Gemini, Perplexity, Google AI Overviews) mention the brand and its competitors, search rankings and a prioritised fix list, done by WorkPods with paid data. Use it only when the person asks for it and gives their own work email. There is no charge. A WorkPods operator reviews the request and emails the report to that address within 3 working days. result has requested, domain and next (what to tell the person). The email goes to WorkPods and is not stored by this service.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"website"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "The person's own work email address."
},
"website": {
"type": "string",
"maxLength": 300,
"minLength": 3,
"description": "The site to audit, as a domain or URL, such as example.com."
}
}
}{
"title": "Request a full WorkPods audit",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}Prompts
3 advertised
audit_site_for_ai_agents — Audit my site for AI agents
Checks a site for search engines, AI answers and AI agents, and ranks the fixes.
- url
- The site or page, such as https://example.com/. (required)
fix_ai_crawler_access — Fix my AI crawler access
Shows which AI crawlers can read a site and drafts the robots.txt to change it.
- url
- The site or page, such as https://example.com/. (required)
compare_with_competitor — Compare me with a competitor
Compares a page with a competitor's page for the same search or task.
- url
- My page, such as https://example.com/pricing. (required)
- competitorUrl
- The competitor's page for the same search or task. (required)
Resources
Not advertised
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
- 632 ms
- 95th percentile latency
- 632 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 632 ms · metadata changed · 12 tool(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 agent-ready-mcp-workpods https://mcp.workpods.ai/mcpCodex
codex mcp add agent-ready-mcp-workpods --url https://mcp.workpods.ai/mcpCursor
{
"mcpServers": {
"agent-ready-mcp-workpods": {
"url": "https://mcp.workpods.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"agent-ready-mcp-workpods": {
"type": "streamableHttp",
"url": "https://mcp.workpods.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"agent-ready-mcp-workpods": {
"type": "http",
"url": "https://mcp.workpods.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http agent-ready-mcp-workpods https://mcp.workpods.ai/mcpClaude Desktop
https://mcp.workpods.ai/mcpWindsurf
{
"mcpServers": {
"agent-ready-mcp-workpods": {
"serverUrl": "https://mcp.workpods.ai/mcp"
}
}
}Let your agent find its tools
Find servers like Agent Ready 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 Agent Ready 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.