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/check | Signed facts through REST |
POST /api/v1/signed-assessment | Same signed response contract |
POST /api/a2a | JSON-RPC message/send |
POST /api/x402/analyze | Paid x402 v2 analysis |
POST /api/v1/verify | Signature validity and freshness |
GET /.well-known/jwks.json | Ed25519 public keys |
GET /api/clause-registry | Source-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.