Permission grant schema
The shape of one entry in the passport — what an app actually gets, and for how long.
{
"grant_id": "grt_8f2a1c",
"issued_to": { "agent_id": "tripbot_v2", "agent_name": "TripBot", "developer": "Voyage Labs" },
"issued_by": "passport:erin.mcgurk",
"purpose": "Book one round-trip flight for the requested dates",
"scope": {
"action": "book_flight",
"fields_readable": ["travel_dates", "departure_city", "seat_preference"],
"constraints": { "max_amount": 600, "currency": "USD", "single_use": true }
},
"duration": { "granted_at": "2026-08-10T09:14:00Z", "expires_at": "2026-08-11T09:14:00Z" },
"status": "active", // active | consumed | expired | revoked
"receipts": [
{ "ts": "2026-08-10T09:14:00Z", "type": "grant", "detail": "Grant approved by user" },
{ "ts": "2026-08-10T09:41:12Z", "type": "action", "detail": "Read: travel_dates, departure_city" },
{ "ts": "2026-08-10T09:42:03Z", "type": "action", "detail": "Booked flight VY341, $540 — within cap" }
]
}