turva-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@turva-mcplist turva.dev's services and pricing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
turva-mcp
Public, read-only Model Context Protocol (MCP) server for turva.dev, an agent-readiness audit and advisory service. It lets AI agents query turva.dev's service catalog, its own agent-readiness scores, the public web-security scan results for its domain, and its engagement principles, as structured JSON instead of scraped HTML.
The server is public on purpose: anyone can read exactly what it exposes before deciding anything.
MCP endpoint
https://mcp.turva.dev/mcpListed in the official MCP registry as dev.turva/turva-mcp, and in the Glama MCP directory (domain verified at /.well-known/glama.json).
Implements MCP protocol revision 2026-07-28. The SDK's legacy lane is left at its default, so a client on an older revision still works at the same endpoint. Transport is Streamable HTTP and the MCP endpoint is POST /mcp. The deprecated standalone SSE transport is not served.
Revision 2026-07-28 removed protocol sessions and the initialize handshake, so there is no session id and nothing to tear down. Each request carries the protocol revision and the client's capabilities in params._meta, and on the 2026-07-28 lane two headers are required, MCP-Protocol-Version naming the revision and Mcp-Method naming the same method as the body, with a third, Mcp-Name, on a tools/call to name the tool. server/discover reports what this server supports. A minimal discovery document carrying the name, transport and endpoint is published at GET / and GET /.well-known/mcp; the full signed MCP server card is at https://turva.dev/.well-known/mcp/server-card.json.
CORS differs by path on purpose. /mcp allows the browser origin https://turva.dev only, and answers 403 to any other origin; agents send no Origin header at all, so this restricts browser clients rather than agents. The card and discovery paths keep open CORS (Access-Control-Allow-Origin: *), because directories read them.
No authentication and no API key are required. All exposed data is public and read-only. Requests are rate limited to 100 per 60 seconds per client IP at the edge, answered with 429 and a Retry-After header past that, and the limiter fails open if it errors.
Related MCP server: fedramp-docs-mcp
Tools
Four read-only tools. There are no write tools and no transaction tools. Each returns JSON as text content.
get_services: the service catalog (audit, advisory, implementation, agent operations, MCP server design), the engagement model, and pricing (fixed list prices for audit, advisory and implementation, others on request).get_agent_readiness: turva.dev's own agent-readiness score from an independent scanner, with category sub-scores, the measurement date, and verification links.get_security_evidence: public web-security scan results for turva.dev's own domain (Hardenize, Internet.nl), with the scan date.get_principles: the engagement principles, namely async-only, least access, results measured in scanner numbers, open and verifiable.
Data is served from static TypeScript objects bundled with the Worker, so every response is deterministic and depends on no external state. Scores carry a measured_at date and verification links, so any reader can compare a stored snapshot against a fresh scan.
Evidence
The scores these tools return are turva.dev's own, measured by independent public scanners on 2026-08-01: 100/100 and Level 5 (Agent-Native) on isitagentready.com, Hardenize passing all 13 categories, and 98/100 on Internet.nl. Every response carries a measured_at date and a verification link, so a stored snapshot can be compared against a fresh scan. Re-run any scan yourself from the links in Verify below.
Endpoints
Method and path | Response |
| MCP over Streamable HTTP |
|
|
| Discovery JSON ( |
| Discovery JSON |
| Glama MCP directory domain verification |
|
|
|
|
|
|
GET and DELETE on /mcp answer 405: the GET stream and session termination went away with sessions in revision 2026-07-28. On the 2026-07-28 lane a request is refused with 400 and error code -32020 if a required header is absent, if Mcp-Method and the body name different methods, or if Mcp-Name and params.name name different tools, and a method this server does not declare, such as resources/list, answers 404 with -32601 rather than an empty success. A request carrying no MCP-Protocol-Version reaches the legacy lane instead, where that same undeclared method answers 200 carrying -32601 in the body. The discovery paths respond to any method.
Connect
Point any MCP client that supports Streamable HTTP at the endpoint. Example client config:
{
"mcpServers": {
"turva": {
"url": "https://mcp.turva.dev/mcp"
}
}
}Quick reachability check (returns the server card):
curl https://mcp.turva.dev/On Windows PowerShell use curl.exe, since curl is an alias for Invoke-WebRequest.
Verify
Everything the tools return is publicly auditable. Re-run the scans and open the records yourself:
isitagentready scanner: https://isitagentready.com/
Hardenize report: https://www.hardenize.com/report/turva.dev
Internet.nl report: https://internet.nl/site/turva.dev/
Company (Finnish Business Information System): https://tietopalvelu.ytj.fi/yritys/3600281-7
How it works
A single Cloudflare Worker built on the Cloudflare Agents SDK serves the MCP endpoint through createMcpHandler. There is no Durable Object: the stateful implementation needed one, and it was deleted with the 2026-07-28 migration because the protocol no longer has sessions. Tool data lives in static TypeScript objects in the bundle. The server keeps no request log and never writes a request body, a client identity or tool input anywhere. Errors are returned as MCP protocol error responses. One console.error records a rate-limiter failure, so the fail-open path is diagnosable rather than silent; it carries no request data. Cloudflare Workers observability is switched off in wrangler.jsonc, so the platform does not collect invocation logs either.
The Worker is independent from the main turva.dev site, so an MCP change cannot affect the website.
Deploy
Requires a Cloudflare account and the wrangler CLI.
cd turva-mcp
npm install
npx wrangler deployRoute the Worker to mcp.turva.dev under Workers & Pages, your-worker, Settings, Domains & Routes.
Use it for your own site
MIT licensed. Fork it, replace the static data objects with your own, then deploy.
If you want an agent-readiness audit of your own domain, see turva.dev or Erik Rekola on LinkedIn.
Security
Responsible disclosure: see SECURITY.md. Contact: info@turva.dev
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA read-only MCP server for AI coding agents to inspect repositories, audit code quality, route engineering skills, and plan safe issue/PR workflows.1MIT
- FlicenseAqualityCmaintenanceAn unofficial MCP server that exposes public FedRAMP 20x documentation as deterministic, citable lookup tools for AI assistants, with every response citing the exact upstream source.7
- AlicenseAqualityBmaintenanceRead-only MCP server for the RareCloud API, enabling AI agents to list servers, browse the catalog, check billing, and plan deployments.10010MIT
- AlicenseCqualityAmaintenanceRead-only MCP server that exposes public TokenLab model catalog tools for agents to discover models, inspect request contracts, and compare pricing.31223MIT
Related MCP Connectors
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Hosted MCP server for agent governance: MCP config audits, injection scans, scope-policy checks.
Read-only Remote MCP for externally grounded AI agent trust receipts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/erekola/turva-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server