{"id":507938,"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.","card_url":"https://tastepolicy.vercel.app/.well-known/agent-card.json","endpoint":"https://tastepolicy.vercel.app/api/a2a","protocol_version":"1.0","first_seen":"2026-10-29T21:14:01.137554+00:00","last_verified":"2026-10-29T21:14:01.137554+00:00","card":{"name":"TastePolicy","skills":[{"id":"preference_authorization","name":"Preference authorization","tags":["authorization","preferences","taste"],"examples":["data part {\"passportRef\":\"tp_…\",\"proposal\":{\"agentId\":\"my-agent\",\"expectedStateVersion\":1,\"candidate\":{…},\"context\":{…}}}"],"inputModes":["application/json"],"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.","outputModes":["application/json","text/plain"]},{"id":"authority_lease","name":"Preference authority lease","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"],"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.","outputModes":["application/json","text/plain"]},{"id":"authority_attestation","name":"Portable authority proof and handoff","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"],"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.","outputModes":["application/json","text/plain"]}],"version":"1.0.0","provider":{"url":"https://tastepolicy.vercel.app","organization":"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.","capabilities":{"streaming":false,"extensions":[{"uri":"https://tastepolicy.dev/a2a/ext/authority-lifecycle/v1","params":{"operations":["evaluate","lease.request","lease.verify","lease.checkpoint","lease.resume","lease.release","attestation.issue","attestation.verify"],"commitments":"taste-commitments-v1","issuerMetadata":"https://tastepolicy.vercel.app/.well-known/tastepolicy-issuer","publicVerifier":"https://tastepolicy.vercel.app/api/attest/verify","handoffMediaType":"application/vnd.tastepolicy.attestation+sd-jwt","authorityBoundary":"Cultural preference authorization only. ALLOW never grants purchase, payment, booking, messaging, legal, account or private-data authority."},"required":false,"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."}],"extendedAgentCard":false,"pushNotifications":false},"securitySchemes":{"bearer":{"httpAuthSecurityScheme":{"scheme":"Bearer","description":"Scoped developer credential issued in the account console. TASTE_EVALUATE for SendMessage, RECEIPT_READ for GetTask.","bearerFormat":"TastePolicy developer credential"}}},"defaultInputModes":["application/json"],"defaultOutputModes":["application/json","text/plain"],"supportedInterfaces":[{"url":"https://tastepolicy.vercel.app/api/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"securityRequirements":[{"schemes":{"bearer":{"list":[]}}}]},"status":"verified","publisher_domain":"tastepolicy.vercel.app","signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-29T21:14:01.137554+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Publisher Agent Card","source_url":"https://tastepolicy.vercel.app/.well-known/agent-card.json","last_check":{"checked_at":"2026-10-29T21:14:01.137554+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"also_published_at":[],"history_urls":["https://tastepolicy.vercel.app/.well-known/agent-card.json"],"skills":[{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":1,"passed":1},"recent_checks":[{"card_url":"https://tastepolicy.vercel.app/.well-known/agent-card.json","checked_at":"2026-10-29T21:14:01.137554+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":{"checked_at":"2026-10-29T21:14:01.137554+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-10-29T21:14:01.137554+00:00","endpoint":"https://tastepolicy.vercel.app/api/a2a","protocol_binding":"JSONRPC","protocol_version":"1.0","state":"auth_required","http_status":401,"detail":"Endpoint requires authentication; A2A response not confirmed","request_diagnostics":{"requests":[{"path":"/api/a2a","allow":[],"method":"POST","status":401,"version_header":"1.0","protocol_method":"GetTask","redirect_followed":false}],"capture_version":1}},"declared_primary_endpoint":"https://tastepolicy.vercel.app/api/a2a","selected_connection_interface":{"url":"https://tastepolicy.vercel.app/api/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"},"protocol_interface_checks":[{"endpoint":"https://tastepolicy.vercel.app/api/a2a","protocol_binding":"JSONRPC","protocol_version":"1.0","selected":true,"state":"auth_required","checked_at":"2026-10-29T21:14:01.137554+00:00","http_status":401,"detail":"Endpoint requires authentication; A2A response not confirmed","binding_recorded":true}],"connection_selection_note":"The selected connection uses an address advertised in the publisher card. Read-only observations do not establish task quality or safety.","x402_price_check":null,"events":[],"relationships":[],"verification":{"agent_card_url":"https://tastepolicy.vercel.app/.well-known/agent-card.json","last_successful_card_check":"2026-10-29T21:14:01.137554+00:00","latest_card_check":{"checked_at":"2026-10-29T21:14:01.137554+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"signature_status":"unsigned","signature_checked_at":"2026-10-29T21:14:01.137554+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-10-29T21:14:01.137554+00:00","endpoint_tls_reachable":true,"protocol_check_state":"auth_required","protocol_checked_at":"2026-10-29T21:14:01.137554+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null},"synthetic_capability_tests":{"agent_id":507938,"status":"not_tested","reason_code":"not_yet_tested","consent_status":"not_confirmed","latest_observation_status":null,"last_checked_at":null,"fixture_version":"1","reference_demonstration":false,"scope":"A publisher-authorized synthetic test of a dedicated free test endpoint. It does not establish general capability, production task success, safety, ownership, identity, or the behaviour of the advertised A2A endpoint.","methodology_url":"https://localmark.ai/capability-tests","history":[]},"repair_links":{"agent_repair_url":"https://localmark.ai/agents/507938/repair","publisher_report_url":"https://localmark.ai/publishers/tastepolicy.vercel.app/repair","diagnostics_json_url":"https://localmark.ai/publishers/tastepolicy.vercel.app/repair/diagnostics.json","diagnostics_csv_url":"https://localmark.ai/publishers/tastepolicy.vercel.app/repair/diagnostics.csv"},"_localmark":{"contribution":{"optional":true,"directory_access":"free","operator_authorization_required":true,"affects_rankings":false,"message":"LocalMark is free. Optional contributions help fund ongoing checks.","support_url":"https://localmark.ai/support","metadata_url":"https://localmark.ai/api/v1/support/contributions"}}}