Probe V0

Experimental MCP server for current empirical verification of explicit public HTTPS endpoint claims.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
100%
命名の品質
75%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(1)

  • LOWTool 'probe.history' doesn't follow camelCase/snake_caseprobe.history 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,821トークン数(ツール定義)
~16.5 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.20%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "probe": {
      "url": "https://probe-evidence.probe-lab.workers.dev/mcp"
    }
  }
}

リモートエンドポイント

https://probe-evidence.probe-lab.workers.dev/mcpstreamable-http

できること

ツール一覧

ツール(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.

入力スキーマ

{
  "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"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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"
}

出力スキーマ

{
  "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
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 2 件
検証済みバージョンは記録されていませんツール 2 件