Fetch web pages as Markdown, judged real or not first, and check sites for AI-agent readiness.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your key as "Bearer sik_…". Optional: connect without one and call request_key with the email of the person you work for. 100 calls a day are free.
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.
Check a website the way an AI agent meets it: robots.txt and content signals, sitemap, Markdown on request, llms.txt, the API catalog, OAuth discovery, an MCP server card, agent skills, an A2A card, and whether the home page lets an agent in. Each file is checked by its body against an address that cannot exist, so a site that answers every path with its home page is reported as a false pass instead of a pass.
The site to check, e.g. example.com
Your key (sik_…), only if your MCP client cannot send it as the Authorization header, for example a key you just got from request_key. The header wins when both are sent.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http apis https://strategic-innovations.ai/mcp
Headers
Authorization (optional, not in the config above): Your key as "Bearer sik_…". Optional: connect without one and call request_key with the email of the person you work for. 100 calls a day are free.Check a website the way an AI agent meets it: robots.txt and content signals, sitemap, Markdown on request, llms.txt, the API catalog, OAuth discovery, an MCP server card, agent skills, an A2A card, and whether the home page lets an agent in. Each file is checked by its body against an address that cannot exist, so a site that answers every path with its home page is reported as a false pass instead of a pass.
| Argument | Type | Description |
|---|---|---|
| url* | string | The site to check, e.g. example.com |
| api_key | string | Your key (sik_…), only if your MCP client cannot send it as the Authorization header, for example a key you just got from request_key. The header wins when both are sent. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The site to check, e.g. example.com"
},
"api_key": {
"type": "string",
"description": "Your key (sik_…), only if your MCP client cannot send it as the Authorization header, for example a key you just got from request_key. The header wins when both are sent."
}
},
"additionalProperties": false
}Fetch a web page and get its main text as Markdown, with the title, word count, outgoing links, the final URL after redirects, and a SHA-256 of the Markdown. Before returning it, the page is judged: an app shell that needs JavaScript, a bot challenge, a cookie wall, a sign-in redirect or an error page comes back as verdict not_content with the reason, and does not count against your calls. Plain HTTP only: it does not run JavaScript.
| Argument | Type | Description |
|---|---|---|
| url* | string | The page to fetch, e.g. https://developers.cloudflare.com/workers/ |
| api_key | string | Your key (sik_…), only if your MCP client cannot send it as the Authorization header, for example a key you just got from request_key. The header wins when both are sent. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The page to fetch, e.g. https://developers.cloudflare.com/workers/"
},
"api_key": {
"type": "string",
"description": "Your key (sik_…), only if your MCP client cannot send it as the Authorization header, for example a key you just got from request_key. The header wins when both are sent."
}
},
"additionalProperties": false
}Get a working API key now, without a sign-up form. Give the email of the person you work for: the key works at once for a few calls a day, they get one email, and when they confirm it the same key moves to the free plan of 100 calls a day. Then send it as Authorization: Bearer <key> on this server.
| Argument | Type | Description |
|---|---|---|
| agent | string | A short name for your agent, shown to that person |
| email* | string | Email of the person the agent works for |
{
"type": "object",
"required": [
"email"
],
"properties": {
"agent": {
"type": "string",
"description": "A short name for your agent, shown to that person"
},
"email": {
"type": "string",
"description": "Email of the person the agent works for"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.