PolicyCheck

Policy facts your agent can inspect

PolicyCheck extracts seller policies independently and returns signed facts with source excerpts. Your agent applies the buyer's purchase criteria.

Quick start

POST JSON to https://policycheck.tools/api/v1/signed-assessment:

{
  "seller_url": "https://example.com",
  "agent_id": "shopping-agent",
  "transaction_ref": "order-123"
}

Use seller_url for discovery, url for exactly one policy page, or policy_text for supplied text. Text must contain 50–100,000 characters. Links inside supplied text are not followed.

Endpoints

POST /api/checkSigned facts through REST
POST /api/v1/signed-assessmentSame signed response contract
POST /api/a2aJSON-RPC message/send
POST /api/x402/analyzePaid x402 v2 analysis
POST /api/v1/verifySignature validity and freshness
GET /.well-known/jwks.jsonEd25519 public keys
GET /api/clause-registrySource-aware clause definitions

Read the result

signed_assessment contains policies, clauses, source provenance, coverage and limitations. Each non-null fact includes a matching evidence excerpt. Unknown values remain null. Clauses are marked as standard boilerplate only when their known clause type appears in a terms-of-service source.

Statuses: complete, partial, text_provided, no_content, no_facts, extraction_failed. Complete refers to the requested retrieval scope; homepage discovery is limited to common paths. It is not a claim that every applicable policy was found. Supplied text is never labeled independently retrieved.

Evidence is checked for presence in source text. Model-assisted interpretation can still be wrong. Preserve conditions and product exceptions when applying the facts. Confidence is extraction confidence, not merchant trust.

Signatures and freshness

Version 2.1 uses Ed25519 over recursively key-sorted JSON with no whitespace. Verify the envelope, not duplicated convenience fields, against the public keys from PolicyCheck's trusted domain. Compare seller, transaction context and expiry with your request.

The verify endpoint returns signature_valid and fresh separately. valid requires both. A signature can remain authentic after the five-minute freshness period expires. It authenticates the issuer and content; it does not guarantee the merchant's claims.

MCP and A2A

npx -y policycheck-mcp@1.0.3

MCP tools: check_seller_policies, analyze_seller, check_policy_text. The previous tool name remains accepted as a compatibility alias. A2A accepts message/send with a data part containing the same input fields. Results are synchronous.

Paid access

Use an x402 v2 client and the live 402 payment requirements. Evidence-backed partial results are billable and disclose limitations. No settlement occurs for no content, no extracted facts, extraction failure, or failure to prepare a signed result. Failed settlement never reports a successful payment.

Audit records

Supply a private, high-entropy X-API-Key of at least 24 characters to partition your audit records. Keep it secret: it is a bearer credential for that partition. The response's audit_recorded field reports whether persistence succeeded. Anonymous records cannot be retrieved through the public audit endpoints. Records are retained for 90 days; audit storage failure does not invalidate a signature.

Agent instructions · OpenAPI schema · WebMCP demo