Probe V0
Experimental MCP server for current empirical verification of explicit public HTTPS endpoint claims.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (1)
- LOWin probe.history
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"probe": {
"url": "https://probe-evidence.probe-lab.workers.dev/mcp"
}
}
}Remote-Endpunkte
https://probe-evidence.probe-lab.workers.dev/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (2)
🟢verify_http_claim(url, method, assertions, freshness_seconds, follow_redirects)
Use this to verify a current public HTTPS claim by direct observation rather than web search, documentation, browser inference, or shell/curl. Use for explicit assertions that a GET/HEAD currently returns an expected HTTP status, exact header value, JSON value at a JSON Pointer, or body substring. It evaluates assertions, persists bounded evidence, reuses sufficiently fresh matching evidence, and summarizes recent observations. follow_redirects defaults to false; when true, Probe manually follows at most 3 validated HTTPS redirects. Every fetch uses redirect: manual. V0 supports only public HTTPS URLs without credentials, query strings, fragments, IP literals, or non-443 ports. Redirect validation is hostname/policy based; the Worker cannot guarantee protection against DNS rebinding between validation and platform DNS resolution.
Eingabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public HTTPS URL to observe. V0 forbids credentials, query strings, fragments, IP literals, private or local destinations, and non-443 ports."
},
"method": {
"default": "GET",
"description": "HTTP method to observe. Use HEAD only when response headers and status are sufficient.",
"type": "string",
"enum": [
"GET",
"HEAD"
]
},
"assertions": {
"minItems": 1,
"maxItems": 8,
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "status",
"description": "Assert the HTTP response status code."
},
"expected": {
"type": "integer",
"minimum": 100,
"maximum": 599,
"description": "Expected HTTP status code from 100 through 599."
}
},
"required": [
"kind",
"expected"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "header_equals",
"description": "Assert an exact response header value."
},
"key": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Response header name to compare case-insensitively."
},
"expected": {
"type": "string",
"maxLength": 1024,
"description": "Exact expected response header value."
}
},
"required": [
"kind",
"key",
"expected"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "json_equals",
"description": "Assert an exact JSON value at a JSON Pointer."
},
"key": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "JSON Pointer identifying the response value to compare, for example /status."
},
"expected": {
"description": "Exact JSON value expected at the JSON Pointer."
}
},
"required": [
"kind",
"key",
"expected"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "body_contains",
"description": "Assert that the response body contains a literal substring."
},
"expected": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Literal case-sensitive substring expected in the bounded response body."
}
},
"required": [
"kind",
"expected"
]
}
]
},
"description": "One to eight explicit assertions evaluated against the same HTTP response."
},
"freshness_seconds": {
"default": 300,
"description": "Maximum acceptable age of reusable matching evidence, in seconds. Public Probe V0 requires exactly 300.",
"type": "integer",
"minimum": 300,
"maximum": 86400
},
"follow_redirects": {
"default": false,
"description": "Whether to follow up to three validated HTTPS redirects. Defaults to false.",
"type": "boolean"
}
},
"required": [
"url",
"assertions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"protocol": {
"type": "string",
"const": "probe.check.v0"
},
"evidence_source": {
"type": "string",
"enum": [
"cached",
"fresh_execution"
]
},
"evidence_age_seconds": {
"type": "number"
},
"result": {
"type": "object",
"properties": {
"protocol": {
"type": "string",
"const": "probe.evidence.v0"
},
"probe_id": {
"type": "string"
},
"observed_at": {
"type": "string"
},
"verdict": {
"type": "string",
"enum": [
"PASS",
"FAIL",
"ERROR"
]
},
"target": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"GET",
"HEAD"
]
}
},
"required": [
"host",
"method"
],
"additionalProperties": false
},
"status_code": {
"type": [
"number",
"null"
]
},
"latency_ms": {
"type": [
"number",
"null"
]
},
"body_sha256": {
"type": [
"string",
"null"
]
},
"bytes_observed": {
"type": "number"
},
"body_truncated": {
"type": "boolean"
},
"assertion_results": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "status"
},
"expected": {
"type": "number"
},
"actual": {
"type": "number"
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"expected",
"actual",
"passed"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "header_equals"
},
"key": {
"type": "string"
},
"expected": {
"type": "string"
},
"actual_fingerprint": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"sha256": {
"type": "string"
}
},
"required": [
"type",
"sha256"
],
"additionalProperties": false
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"key",
"expected",
"actual_fingerprint",
"passed"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "header_equals"
},
"key": {
"type": "string"
},
"expected": {
"type": "string"
},
"passed": {
"type": "boolean",
"const": false
},
"error_code": {
"type": "string"
}
},
"required": [
"kind",
"key",
"expected",
"passed",
"error_code"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "json_equals"
},
"key": {
"type": "string"
},
"expected": {},
"actual_fingerprint": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"sha256": {
"type": "string"
}
},
"required": [
"type",
"sha256"
],
"additionalProperties": false
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"key",
"expected",
"actual_fingerprint",
"passed"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "json_equals"
},
"key": {
"type": "string"
},
"expected": {},
"passed": {
"type": "boolean",
"const": false
},
"error_code": {
"type": "string"
}
},
"required": [
"kind",
"key",
"expected",
"passed",
"error_code"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "body_contains"
},
"expected": {
"type": "string"
},
"contains": {
"type": "boolean"
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"expected",
"contains",
"passed"
],
"additionalProperties": false
}
]
}
},
"redirects_followed": {
"type": "boolean"
},
"redirect_count": {
"type": "number"
},
"final_url": {
"type": "string"
},
"redirect_chain": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hop": {
"type": "number"
},
"from_url": {
"type": "string"
},
"status_code": {
"type": "number"
},
"location": {
"type": "string"
},
"resolved_url": {
"type": "string"
},
"validated": {
"type": "boolean"
},
"rejection": {
"type": "string"
}
},
"required": [
"hop",
"from_url",
"status_code",
"validated"
],
"additionalProperties": false
}
},
"termination": {
"type": "string"
},
"error_code": {
"type": "string"
}
},
"required": [
"protocol",
"probe_id",
"observed_at",
"verdict",
"target",
"status_code",
"latency_ms",
"body_sha256",
"bytes_observed",
"body_truncated",
"assertion_results",
"redirects_followed",
"redirect_count",
"final_url",
"redirect_chain",
"termination"
],
"additionalProperties": false
},
"summary": {
"type": "object",
"properties": {
"observations": {
"type": "number"
},
"counts": {
"type": "object",
"properties": {
"PASS": {
"type": "number"
},
"FAIL": {
"type": "number"
},
"ERROR": {
"type": "number"
}
},
"required": [
"PASS",
"FAIL",
"ERROR"
],
"additionalProperties": false
},
"dominant_verdict": {
"anyOf": [
{
"type": "string",
"enum": [
"PASS",
"FAIL"
]
},
{
"type": "null"
}
]
},
"agreement": {
"type": [
"number",
"null"
]
},
"changed_since_previous": {
"type": "boolean"
}
},
"required": [
"observations",
"counts",
"dominant_verdict",
"agreement",
"changed_since_previous"
],
"additionalProperties": false
}
},
"required": [
"protocol",
"evidence_source",
"evidence_age_seconds",
"result",
"summary"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢probe.history(probe_id, limit)
Retrieve up to 20 persisted observations for an existing Probe experiment ID without making a new HTTP request. Use after verify_http_claim to inspect repeated results, PASS/FAIL/ERROR counts, agreement, or whether the observed verdict changed between the two latest decisive observations. This is historical evidence lookup, not a current live verification; use verify_http_claim when freshness or present endpoint behavior matters.
Eingabe-Schema
{
"type": "object",
"properties": {
"probe_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "The 64-character lowercase hexadecimal Probe experiment ID returned by verify_http_claim."
},
"limit": {
"default": 10,
"description": "Maximum number of newest stored observations to return, from 1 through 20.",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"probe_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"protocol": {
"type": "string",
"const": "probe.history.v0"
},
"probe_id": {
"type": "string"
},
"observations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"protocol": {
"type": "string",
"const": "probe.evidence.v0"
},
"probe_id": {
"type": "string"
},
"observed_at": {
"type": "string"
},
"verdict": {
"type": "string",
"enum": [
"PASS",
"FAIL",
"ERROR"
]
},
"target": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"GET",
"HEAD"
]
}
},
"required": [
"host",
"method"
],
"additionalProperties": false
},
"status_code": {
"type": [
"number",
"null"
]
},
"latency_ms": {
"type": [
"number",
"null"
]
},
"body_sha256": {
"type": [
"string",
"null"
]
},
"bytes_observed": {
"type": "number"
},
"body_truncated": {
"type": "boolean"
},
"assertion_results": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "status"
},
"expected": {
"type": "number"
},
"actual": {
"type": "number"
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"expected",
"actual",
"passed"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "header_equals"
},
"key": {
"type": "string"
},
"expected": {
"type": "string"
},
"actual_fingerprint": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"sha256": {
"type": "string"
}
},
"required": [
"type",
"sha256"
],
"additionalProperties": false
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"key",
"expected",
"actual_fingerprint",
"passed"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "header_equals"
},
"key": {
"type": "string"
},
"expected": {
"type": "string"
},
"passed": {
"type": "boolean",
"const": false
},
"error_code": {
"type": "string"
}
},
"required": [
"kind",
"key",
"expected",
"passed",
"error_code"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "json_equals"
},
"key": {
"type": "string"
},
"expected": {},
"actual_fingerprint": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"sha256": {
"type": "string"
}
},
"required": [
"type",
"sha256"
],
"additionalProperties": false
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"key",
"expected",
"actual_fingerprint",
"passed"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "json_equals"
},
"key": {
"type": "string"
},
"expected": {},
"passed": {
"type": "boolean",
"const": false
},
"error_code": {
"type": "string"
}
},
"required": [
"kind",
"key",
"expected",
"passed",
"error_code"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "body_contains"
},
"expected": {
"type": "string"
},
"contains": {
"type": "boolean"
},
"passed": {
"type": "boolean"
}
},
"required": [
"kind",
"expected",
"contains",
"passed"
],
"additionalProperties": false
}
]
}
},
"redirects_followed": {
"type": "boolean"
},
"redirect_count": {
"type": "number"
},
"final_url": {
"type": "string"
},
"redirect_chain": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hop": {
"type": "number"
},
"from_url": {
"type": "string"
},
"status_code": {
"type": "number"
},
"location": {
"type": "string"
},
"resolved_url": {
"type": "string"
},
"validated": {
"type": "boolean"
},
"rejection": {
"type": "string"
}
},
"required": [
"hop",
"from_url",
"status_code",
"validated"
],
"additionalProperties": false
}
},
"termination": {
"type": "string"
},
"error_code": {
"type": "string"
}
},
"required": [
"protocol",
"probe_id",
"observed_at",
"verdict",
"target",
"status_code",
"latency_ms",
"body_sha256",
"bytes_observed",
"body_truncated",
"assertion_results",
"redirects_followed",
"redirect_count",
"final_url",
"redirect_chain",
"termination"
],
"additionalProperties": false
}
},
"summary": {
"type": "object",
"properties": {
"observations": {
"type": "number"
},
"counts": {
"type": "object",
"properties": {
"PASS": {
"type": "number"
},
"FAIL": {
"type": "number"
},
"ERROR": {
"type": "number"
}
},
"required": [
"PASS",
"FAIL",
"ERROR"
],
"additionalProperties": false
},
"dominant_verdict": {
"anyOf": [
{
"type": "string",
"enum": [
"PASS",
"FAIL"
]
},
{
"type": "null"
}
]
},
"agreement": {
"type": [
"number",
"null"
]
},
"changed_since_previous": {
"type": "boolean"
}
},
"required": [
"observations",
"counts",
"dominant_verdict",
"agreement",
"changed_since_previous"
],
"additionalProperties": false
}
},
"required": [
"protocol",
"probe_id",
"observations",
"summary"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Nachweis