Python Code Validator
REMOTE · API.STATEMIND.AI · SCANNED SEP 23
Proves AI-generated Python does what you asked: lint, types, security, sandbox run, exact fixes.
Available components
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 Security74
- 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
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability55
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2095 tokens (~698/item across 3 items; 3 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
- 100% of tool parameters carry a description.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
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 4 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the Python Code Validator MCP server?
Python Code Validator is a hosted endpoint at https://api.statemind.ai/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 · api.statemind.ai
claude mcp add --transport http ai-statemind-python-code-validator 'https://api.statemind.ai/mcp'
{
"mcpServers": {
"ai-statemind-python-code-validator": {
"url": "https://api.statemind.ai/mcp"
}
}
} {
"servers": {
"ai-statemind-python-code-validator": {
"type": "http",
"url": "https://api.statemind.ai/mcp"
}
}
} [mcp_servers.ai-statemind-python-code-validator] url = "https://api.statemind.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-statemind-python-code-validator": {
"type": "remote",
"url": "https://api.statemind.ai/mcp",
"enabled": true
}
}
} openclaw mcp add ai-statemind-python-code-validator --url 'https://api.statemind.ai/mcp' --transport streamable-http
mcp_servers:
ai-statemind-python-code-validator:
url: "https://api.statemind.ai/mcp" {
"McpServers": {
"ai-statemind-python-code-validator": {
"Transport": "http",
"Url": "https://api.statemind.ai/mcp"
}
}
} assistant mcp add ai-statemind-python-code-validator -t streamable-http -u 'https://api.statemind.ai/mcp'
{
"mcpServers": {
"ai-statemind-python-code-validator": {
"type": "http",
"url": "https://api.statemind.ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
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.
- 9 Sept 26 +2
- Stability: fail → pass ▲ security
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83.
- 6 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 77.
- 4 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70.
- 2 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63.
- 31 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57.
- 29 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50.
- 26 Aug 26 +3
- 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 23 Sept 2026 · Probed https://api.statemind.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.statemind.ai | CN=YE1,O=Let's Encrypt,C=US | 5 Aug 2026 | 3 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 643c1bc349e7cfb563219b2d9ceb51fa794 |
| SANs: api.statemind.ai | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.statemind.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| statemind.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
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 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.statemind.ai/mcp | Verified | 200 | |
| http (plaintext) | http://api.statemind.ai/mcp | HTTPS enforced | 301 | https://api.statemind.ai/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 →
execute_python Execute Python ~830
Everything repair does, and then RUNS the code in a throwaway container — no network, read-only filesystem, killed at options.timeout_s — reporting exit code, stdout and stderr. Any '>>>' examples in the code are run too, and one that does not print what it says is an error the other tools cannot see. This is a side effect: do not submit code you do not want executed. Use it when you need proof that the code runs, or that it does what it says. Alternatives: validate_python for the diagnosis and repair_python for the fix, neither of which runs anything. Auth: a key is required. This call needs a paid key and answers HTTP 402 without one. Credits are bought without an account, 10 per call: GET /v1/pricing says where to send the xDAI. Or pay for this one call with no key at all: call it without one and the result carries x402 payment requirements ($0.1 in USD Coin on eip155:8453); sign them and repeat the call with the payment in _meta['x402/payment']. Arguments: code: the whole file, 1..200000 bytes of UTF-8 measured after encoding (empty is refused with 400, larger with 413); a fragment is fine, but line and column numbers in the answer count from 1 in what you sent. language: must be 'python'; anything else is 400, and the field may be omitted. options.max_iterations (1..10, default 3) caps the fix/verify rounds: raise it for a file with several independent faults, leave it for a snippet. options.optimize (default false) additionally folds constants and drops dead code, and is only worth setting when you asked for a rewrite anyway. options.transpile_to (e.g. 'javascript') returns a translation of the *repaired* source in transpiled, not of what you sent. fixed_code is null when nothing could be proven safe to change, so treat null as 'no fix', not as an error. options.timeout_s (seconds, default 5) is the wall clock for the run; the schema allows up to 60 but this deployment caps it at 30 and refuses a larger value with 400. options.expected_output compares stdout…
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The source to check, as a whole file where possible: diagnostics carry the line and column of the text you send, and a fragment hides the imports and definitions the type check needs. A deployment ma… |
| language | – | – | The language of the code. A service that does not handle it refuses the request rather than guessing; the enum is shared across services, so it lists more than any one of them accepts. |
| options | – | – | Tuning knobs. Most of them only take effect in the mode that does the corresponding work; see each field. |
| Name | Type | Req | Description |
|---|---|---|---|
| diagnostics | array | – | – |
| fixed_code | – | – | – |
| fixes | array | – | – |
| meta | – | yes | – |
| runtime | – | – | – |
| score | number | yes | – |
| security | array | – | – |
| transpiled | – | – | – |
| valid | boolean | yes | – |
No examples provided.
repair_python Repair Python ~587
Everything validation does, plus deterministic fixes: the corrected source comes back in fixed_code, and the original is kept whenever the fix cannot be proven safe. The code is still never run. Use it when validation failed and you want the fix rather than the diagnosis. Alternatives: validate_python when the diagnosis is enough; execute_python when the fix has to be proven to run. Auth: a key is required. This call needs a paid key and answers HTTP 402 without one. Credits are bought without an account, 3 per call: GET /v1/pricing says where to send the xDAI. Or pay for this one call with no key at all: call it without one and the result carries x402 payment requirements ($0.03 in USD Coin on eip155:8453); sign them and repeat the call with the payment in _meta['x402/payment']. Arguments: code: the whole file, 1..200000 bytes of UTF-8 measured after encoding (empty is refused with 400, larger with 413); a fragment is fine, but line and column numbers in the answer count from 1 in what you sent. language: must be 'python'; anything else is 400, and the field may be omitted. options.max_iterations (1..10, default 3) caps the fix/verify rounds: raise it for a file with several independent faults, leave it for a snippet. options.optimize (default false) additionally folds constants and drops dead code, and is only worth setting when you asked for a rewrite anyway. options.transpile_to (e.g. 'javascript') returns a translation of the *repaired* source in transpiled, not of what you sent. fixed_code is null when nothing could be proven safe to change, so treat null as 'no fix', not as an error. options.timeout_s, options.examples and options.expected_output do nothing here: nothing is run, so there is no clock, no stdout, and no way to check an example. Returns valid, score 0..1, diagnostics (rule, message, line, column), security findings, fixes, fixed_code and runtime; see outputSchema. The code and its verdict are retained to improve the service.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The source to check, as a whole file where possible: diagnostics carry the line and column of the text you send, and a fragment hides the imports and definitions the type check needs. A deployment ma… |
| language | – | – | The language of the code. A service that does not handle it refuses the request rather than guessing; the enum is shared across services, so it lists more than any one of them accepts. |
| options | – | – | Tuning knobs. Most of them only take effect in the mode that does the corresponding work; see each field. |
| Name | Type | Req | Description |
|---|---|---|---|
| diagnostics | array | – | – |
| fixed_code | – | – | – |
| fixes | array | – | – |
| meta | – | yes | – |
| runtime | – | – | – |
| score | number | yes | – |
| security | array | – | – |
| transpiled | – | – | – |
| valid | boolean | yes | – |
No examples provided.
validate_python Validate Python ~541
Check Python source without running it: parse, lint (ruff), type-check (mypy), AST security policy, credential scan. Safe on code you do not trust. Use it on every Python file you generated or edited, before writing it to disk. Alternatives: repair_python to get the corrected source instead of the diagnosis; execute_python to prove the code runs. Auth: a key is required. A free key covers this call, 25 per day, then HTTP 429; get one with POST /v1/keys. Credits are bought without an account, 1 per call: GET /v1/pricing says where to send the xDAI. Or pay for this one call with no key at all: call it without one and the result carries x402 payment requirements ($0.01 in USD Coin on eip155:8453); sign them and repeat the call with the payment in _meta['x402/payment']. Arguments: code: the whole file, 1..200000 bytes of UTF-8 measured after encoding (empty is refused with 400, larger with 413); a fragment is fine, but line and column numbers in the answer count from 1 in what you sent. language: must be 'python'; anything else is 400, and the field may be omitted. Of options only transpile_to (e.g. 'javascript', which returns a translated copy in transpiled) acts here; timeout_s, max_iterations, optimize, examples and expected_output need a pass that rewrites or runs the code, so send code alone. Ignored options are not refused, so a call that sets them looks like it worked; and code that does not parse is answered rather than refused: valid=false with the syntax error located, which is the point. Returns valid, score 0..1, diagnostics (rule, message, line, column), security findings, fixes, fixed_code and runtime; see outputSchema. The code and its verdict are retained to improve the service.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The source to check, as a whole file where possible: diagnostics carry the line and column of the text you send, and a fragment hides the imports and definitions the type check needs. A deployment ma… |
| language | – | – | The language of the code. A service that does not handle it refuses the request rather than guessing; the enum is shared across services, so it lists more than any one of them accepts. |
| options | – | – | Tuning knobs. Most of them only take effect in the mode that does the corresponding work; see each field. |
| Name | Type | Req | Description |
|---|---|---|---|
| diagnostics | array | – | – |
| fixed_code | – | – | – |
| fixes | array | – | – |
| meta | – | yes | – |
| runtime | – | – | – |
| score | number | yes | – |
| security | array | – | – |
| transpiled | – | – | – |
| valid | boolean | yes | – |
No examples provided.
What is the Python Code Validator MCP server?
Python Code Validator is an MCP server listed in the public MCP registry as ai.statemind/python-code-validator. Proves AI-generated Python does what you asked: lint, types, security, sandbox run, exact fixes. This page covers its hosted endpoint (https://api.statemind.ai/mcp).
Is the Python Code Validator MCP server safe to use?
Python Code Validator scores 80 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 Python Code Validator MCP server expose?
Python Code Validator exposes 3 tools: validate_python, repair_python, execute_python. Their descriptions and schemas cost roughly 1,958 tokens of context every time the server is loaded.
Does the Python Code Validator MCP server require authentication?
No. We connected to Python Code Validator without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Python Code Validator MCP server still maintained?
Python Code Validator is still listed as active in the MCP registry. We last reached this channel on 23 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.