{"name":"TastePolicy","description":"Preference authority for autonomous agents. Answers whether a proposed brand, place or destination fits a user's reviewed cultural preferences: ALLOW, ASK, REJECT or UNAVAILABLE. Cultural preference authorization only. ALLOW never grants purchase, payment, booking, messaging, legal, account or private-data authority.","version":"1.0.0","supportedInterfaces":[{"url":"https://tastepolicy.vercel.app/api/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"provider":{"organization":"TastePolicy","url":"https://tastepolicy.vercel.app"},"capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false,"extensions":[{"uri":"https://tastepolicy.dev/a2a/ext/authority-lifecycle/v1","description":"Portable preference authority. Send a data part {operation, ...} with this URI in message.extensions (or the A2A-Extensions header) to request a lease, check it, resume it, issue a verifiable proof for another agent, or verify a proof you received. Preference authority only: never payment, booking or any execution authority.","required":false,"params":{"operations":["evaluate","lease.request","lease.verify","lease.checkpoint","lease.resume","lease.release","attestation.issue","attestation.verify"],"handoffMediaType":"application/vnd.tastepolicy.attestation+sd-jwt","publicVerifier":"https://tastepolicy.vercel.app/api/attest/verify","issuerMetadata":"https://tastepolicy.vercel.app/.well-known/tastepolicy-issuer","commitments":"taste-commitments-v1","authorityBoundary":"Cultural preference authorization only. ALLOW never grants purchase, payment, booking, messaging, legal, account or private-data authority."}}]},"securitySchemes":{"bearer":{"httpAuthSecurityScheme":{"scheme":"Bearer","bearerFormat":"TastePolicy developer credential","description":"Scoped developer credential issued in the account console. TASTE_EVALUATE for SendMessage, RECEIPT_READ for GetTask."}}},"securityRequirements":[{"schemes":{"bearer":{"list":[]}}}],"defaultInputModes":["application/json"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"preference_authorization","name":"Preference authorization","description":"Use this before you select, rank, recommend, shortlist, add to a draft, present as selected, or otherwise continue a subjective preference-sensitive choice for a person (not for objective operations). Evaluate a proposed choice against a Preference Passport. Send one data part: {passportRef, grantId?, idempotencyKey?, requestedAction?, proposal}. The task artifact carries the taste-authorization-response. UNAVAILABLE means no judgement was possible and is not a rejection.","tags":["authorization","preferences","taste"],"examples":["data part {\"passportRef\":\"tp_…\",\"proposal\":{\"agentId\":\"my-agent\",\"expectedStateVersion\":1,\"candidate\":{…},\"context\":{…}}}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"authority_lease","name":"Preference authority lease","description":"Extension https://tastepolicy.dev/a2a/ext/authority-lifecycle/v1. After an ALLOW or an authority-confirmation ASK, hold a short-lived lease for that exact choice. Data part {operation: \"lease.request\"|\"lease.verify\"|\"lease.checkpoint\"|\"lease.resume\"|\"lease.release\", ...}. Verify and checkpoint accept the candidate and context as they are now; a mismatch suspends the lease. A pending owner question is TASK_STATE_INPUT_REQUIRED.","tags":["authorization","lease","runtime"],"examples":["data part {\"operation\":\"lease.request\",\"evaluationRef\":\"tp_…\",\"idempotencyKey\":\"…\"}","data part {\"operation\":\"lease.verify\",\"leaseRef\":\"tl_…\",\"context\":{\"key\":\"trip\",\"domain\":\"destination\",\"price\":{\"amount\":100,\"currency\":\"USD\"}}}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]},{"id":"authority_attestation","name":"Portable authority proof and handoff","description":"Extension https://tastepolicy.dev/a2a/ext/authority-lifecycle/v1. For an ACTIVE lease, issue a short-lived SD-JWT proof bound to a receiving agent's public key, then hand it over in an A2A message (media type application/vnd.tastepolicy.attestation+sd-jwt). The receiver verifies with operation \"attestation.verify\" or the public verifier, passing the choice and situation it is acting on. The proof ends when the authority ends and never comes back.","tags":["attestation","handoff","verification"],"examples":["data part {\"operation\":\"attestation.issue\",\"leaseRef\":\"tl_…\",\"audience\":\"https://receiver.example\",\"holderKey\":{…},\"delegateAgentId\":\"agent-b\"}","data part {\"operation\":\"attestation.verify\",\"presentation\":\"…\",\"audience\":\"https://receiver.example\",\"nonce\":\"…\",\"expect\":{\"context\":{…}}}"],"inputModes":["application/json"],"outputModes":["application/json","text/plain"]}]}