dev.turva/turva-mcp
REMOTE · MCP.TURVA.DEV
Read-only MCP server for turva.dev, an agent-readiness audit and advisory service.
Available components
Last scanned (21 hours ago)
Scores higher than 97% of remote servers
Reachable. Last reached 16 Oct 2026.
Category Security
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability77
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 790 tokens (~158/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 6 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 16 Oct 26 0
- Server version: 1.6.16 → 1.6.18 functional
- 4 Oct 26 0
- Server version: 1.6.14 → 1.6.15 functional
- 3 Oct 26 −1
- Tool “get_agent_readiness” rewrote its description, which is the text the model reads security
- Tool “get_security_evidence” rewrote its description, which is the text the model reads security
- Server version: 1.6.10 → 1.6.14 functional
- 30 Sept 26 0
- Tool “get_services” rewrote its description, which is the text the model reads security
- Server version: 1.6.7 → 1.6.10 functional
- 29 Sept 26 0
- Server version: 1.6.4 → 1.6.7 functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Sept 26 0
- Server version: 1.6.0 → 1.6.1 functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 16 Oct 2026 · Probed https://mcp.turva.dev/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=turva.dev | CN=WE1,O=Google Trust Services,C=US | 19 Sept 2026 | 18 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 89e683686b01040b0e77ec6d148d547f |
| SANs: turva.dev, mcp.turva.dev, *.mcp.turva.dev | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of mcp.turva.dev. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| turva.dev. | present | 2371 | 13 | Verified |
| mcp.turva.dev. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
| content-security-policy | default-src 'none'; frame-ancestors 'none'; base-uri 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | no-referrer |
| permissions-policy | accelerometer=(), autoplay=(), camera=(), display-capture=(), encrypted-media=(), fullscreen=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.turva.dev/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.turva.dev/mcp | HTTPS enforced | 301 | https://mcp.turva.dev/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_agent_readiness Agent-readiness score ~137
Returns turva.dev's own agent-readiness score from an independent public scanner (isitagentready.com), including category sub-scores, with the measurement date and a link to the scanner's start page, where a new check can be run (the link does not open the recorded reading). Use this when a user asks how turva.dev scores, whether its claims are verifiable, or what proof backs the audit service. For web-security scan results, which are a separate measurement, use get_security_evidence instead. Read-only: returns static JSON that is compiled into the Worker, so it changes nothing and updates only on deploy.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The domain the reading is about. |
| measured_at | string | yes | Date of the reading, YYYY-MM-DD. |
| note | string | yes | A caveat that the scores are a point-in-time reading by an independent scanner and that the scan url opens the scanner's start page. |
| scans | array | yes | Readings from independent scanners, one per entry. |
No examples provided.
get_contact Contact and operator details ~124
Returns who runs turva.dev and the official ways to reach it: the operator and business details, the email address, the Signal link, the LinkedIn profile, the correspondence languages, the first-reply time and the access an audit needs. Use this when a user asks who is behind turva.dev, how to contact it, how to start an audit or what access has to be granted. For what is sold and what it costs use get_services instead. Read-only: returns static JSON that is compiled into the Worker, so it changes nothing and updates only on deploy.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | yes | The Finnish business ID of the business. |
| channel_note | string | yes | Which channel suits which kind of message, and that there are no calls. |
| correspondence_languages | array | yes | ISO 639-1 codes of the languages the correspondence is held in. |
| string | yes | The email address for starting an engagement. | |
| engagement | string | yes | How an engagement is communicated, async_only for written exchange with no calls. |
| first_reply | string | yes | How soon the first reply comes and by which channels, and that LinkedIn has no set reply time. |
| how_to_start | array | yes | The steps to start an engagement and the access an audit needs, one per entry. |
| string | yes | The URL of the operator's LinkedIn profile. | |
| location | string | yes | The city and country where the business is based. |
| operator | object | yes | Who runs turva.dev and the registered business behind it. |
| signal | string | yes | A link that opens a Signal chat with the operator. |
No examples provided.
get_principles Engagement principles ~103
Returns turva.dev's engagement principles: async-only, least access, the result shows up in scanner numbers, and open and verifiable. Use this when a user asks how turva.dev works with clients or what rules an engagement follows. For what is sold and what it costs use get_services instead, and for how to start use get_contact. Read-only: returns static JSON that is compiled into the Worker, so it changes nothing and updates only on deploy.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | The service model the principles belong to, agent_readiness_audit for the agent-readiness audit. |
| rules | array | yes | The principles an engagement follows, one per entry. |
No examples provided.
get_security_evidence Web-security scan evidence ~109
Returns the latest public web-security scan results for turva.dev's own domain (Hardenize, Internet.nl site and mail), each with its scan date. Use this when a user asks about turva.dev's own security posture or wants evidence beyond agent-readiness scores. For the agent-readiness score itself, which is a separate measurement, use get_agent_readiness instead. Read-only: returns static JSON that is compiled into the Worker, so it changes nothing and updates only on deploy.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The domain the scans are about. |
| measured_at | string | yes | Date of the scans, YYYY-MM-DD. |
| note | string | yes | Why turva.dev publishes the scan results of its own domain. |
| scans | array | yes | Web-security scan results, one per provider and test. |
No examples provided.
get_services Service catalog and pricing ~178
Returns turva.dev's service catalog: the Shopify agent storefront check, agent-readiness audit, advisory, implementation, agent operations, and MCP server design, plus the engagement model and pricing (fixed list prices for the Shopify agent storefront check, audit, advisory and implementation; agent operations and MCP server design on request), and two implementation add-ons that carry a fixed price and are sold only with the diagnosis they follow, bought with it, with its report, or after the report and before implementation starts. Use this when a user asks what turva.dev offers, what it costs, or how an engagement works. For how to reach turva.dev use get_contact instead, and for the rules an engagement follows use get_principles. Read-only: returns static JSON that is compiled into the Worker, so it changes nothing and updates only on deploy.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| bundled_implementation | array | yes | Implementation add-ons that are sold only with another service. |
| currency | string | yes | ISO 4217 code of every price, EUR. |
| engagement | object | yes | How an engagement is run. |
| pricing_model | string | yes | The pricing model. fixed_list_prices means fixed list prices, apart from the services priced on request. |
| pricing_note | string | yes | The VAT treatment by customer type, the services quoted per engagement and the rule for the add-ons. |
| services | array | yes | The services with their prices. |
| vat_included | boolean | yes | Whether the prices include VAT. False means every price excludes VAT. |
No examples provided.
How do I install the dev.turva/turva-mcp server?
dev.turva/turva-mcp is a hosted endpoint at https://mcp.turva.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.turva.dev
claude mcp add --transport http dev-turva-turva-mcp 'https://mcp.turva.dev/mcp'
What is the dev.turva/turva-mcp server?
dev.turva/turva-mcp is listed in the public MCP registry as dev.turva/turva-mcp. Read-only MCP server for turva.dev, an agent-readiness audit and advisory service. This page covers its hosted endpoint (https://mcp.turva.dev/mcp).
Is the dev.turva/turva-mcp server safe to use?
dev.turva/turva-mcp scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the dev.turva/turva-mcp server expose?
dev.turva/turva-mcp exposes 5 tools: get_services, get_agent_readiness, get_security_evidence, get_principles, get_contact. Their descriptions and schemas cost roughly 651 tokens of context every time the server is loaded.
Does the dev.turva/turva-mcp server require authentication?
No. We connected to dev.turva/turva-mcp without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the dev.turva/turva-mcp server still maintained?
dev.turva/turva-mcp is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.