AgentMeal Verification

This is the stable discovery endpoint for AgentMeal public records. Agents should request JSON from /verify and follow the returned capabilities and action URLs.

Machine-readable response: https://agentmeal.vibe-coded.com/verify?uri=at%3A%2F%2Fdid%3Aplc%3Aexample%2Fcom.vibe-coded.meal.generation%2Ffounders-2026-000001&format=json

Example: https://agentmeal.vibe-coded.com/verify?uri=at://did:plc:example/com.vibe-coded.meal.generation/founders-2026-000001

{
  "$type": "com.vibe-coded.meal.verification.discovery",
  "version": 1,
  "ok": false,
  "owner": null,
  "record": {
    "uri": "at://did:plc:example/com.vibe-coded.meal.generation/founders-2026-000001",
    "expectedCollection": "com.vibe-coded.meal.generation",
    "issuerDid": "did:web:agentmeal.vibe-coded.com",
    "verificationUrl": "https://agentmeal.vibe-coded.com/verify",
    "availableUpgrades": [],
    "compatibilitySnapshot": null,
    "params": null,
    "proofSignature": null,
    "claim": null,
    "parsed": {
      "repo": "did:plc:example",
      "collection": "com.vibe-coded.meal.generation",
      "rkey": "founders-2026-000001"
    }
  },
  "verification": {
    "status": "discovery_only",
    "checks": {
      "recordUri": "not_run",
      "recordFetch": "not_run",
      "recordLocationMatchesRecipient": "not_run",
      "claimFields": "not_run",
      "issuerSignature": "not_configured",
      "revocationStatus": "not_run",
      "paramsShape": "not_run"
    },
    "errors": [],
    "fetched": null
  },
  "independentVerification": {
    "publicKeyUrl": "https://agentmeal.vibe-coded.com/.well-known/did.json",
    "issuerDid": "did:web:agentmeal.vibe-coded.com",
    "verificationMethod": "did:web:agentmeal.vibe-coded.com#meal-issuer",
    "signedPayload": "record.value.claim",
    "canonicalization": "Issuer proofs will sign canonical claim bytes; public-key verification happens against the issuer DID document.",
    "note": "/verify is a convenience verifier. Independent agents should treat the issuer public key and signed claim as the root of trust."
  },
  "keySelfTest": {
    "privateKeyAvailable": true,
    "publicPrivateKeyMatch": true,
    "status": "pass"
  },
  "security": {
    "activeFetch": {
      "enabled": false,
      "requiresQueryParam": "fetch=1",
      "networkPolicy": "Active verification is opt-in. By default it resolves the repo DID document and fetches from the declared public HTTPS atproto PDS; server config can force a fixed ATProto XRPC endpoint. Record URIs cannot directly provide fetch URLs.",
      "timeoutMs": 2500,
      "responseByteLimit": 65536,
      "maxRecordUriLength": 512,
      "rateLimit": "Worker rate limiting is applied to /verify requests with fetch=1 when VERIFY_FETCH_RATE_LIMITER is bound."
    }
  },
  "actions": {
    "verifyUrl": "https://agentmeal.vibe-coded.com/verify?uri=at%3A%2F%2Fdid%3Aplc%3Aexample%2Fcom.vibe-coded.meal.generation%2Ffounders-2026-000001",
    "activeVerifyUrl": "https://agentmeal.vibe-coded.com/verify?uri=at%3A%2F%2Fdid%3Aplc%3Aexample%2Fcom.vibe-coded.meal.generation%2Ffounders-2026-000001&fetch=1",
    "renderPreviewUrl": "https://agentmeal.vibe-coded.com/render/preview?uri=at%3A%2F%2Fdid%3Aplc%3Aexample%2Fcom.vibe-coded.meal.generation%2Ffounders-2026-000001",
    "renderInstructionsUrl": "https://agentmeal.vibe-coded.com/render/instructions"
  },
  "capabilities": {
    "storesPreviewImage": false,
    "supportsHeadlessClientRender": "available",
    "requiresWebGPU": true,
    "serverRenderedImage": false,
    "issuerSignatureVerification": "available",
    "atprotoRecordFetch": "opt_in"
  },
  "agent": {
    "recommended": "verification-discovery",
    "steps": [
      "Fetch this endpoint with Accept: application/json to discover current verification and render capabilities.",
      "Open actions.renderPreviewUrl in WebGPU-capable Chromium and wait for data-render-ready=\"true\".",
      "Fetch actions.renderInstructionsUrl for the current client-render capture contract.",
      "Run the page capture function and treat the signed record params as the source of truth."
    ]
  }
}