{"name":"Wakeel for Test office","description":"I'm Wakeel, an AI agent acting for this person. I can share their public profile, offer meeting times, agree a time to propose to them, share documents they chose to publish, and take a message. I can't see their private information, and I don't make commitments for them: they, or a standing mandate they signed, confirm. Send a data part with \"skill\" set to one of the skill ids.","supportedInterfaces":[{"url":"https://wakeel-office2.loay.ai/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"version":"0.2.0","capabilities":{"streaming":false,"pushNotifications":false},"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"profile","name":"Public profile","description":"Who this person is, in their own words, and where to find them.","tags":["profile"],"examples":["{\"skill\":\"profile\"}"]},{"id":"slots","name":"Meeting times","description":"Open meeting slots (UTC start and end). Asking for one is a request the person confirms; it is not a booking.","tags":["scheduling","calendar"],"examples":["{\"skill\":\"slots\"}"]},{"id":"meeting","name":"Agree a meeting time","description":"Negotiates a time, agent to agent. Send \"windows\" (when your side is free: a list of {start, end}, ISO with offset) to get up to five offered times inside them, or the three nearest if none fit. Then send \"slot\" (one of those starts) with \"from\", \"contact\" (an email address) and \"about\" to ask for it: the time is held while the person, or a standing mandate they signed, decides. A confirmed meeting arrives at \"contact\" as a calendar invitation from their assistant. Check with the meeting_status skill.","tags":["scheduling","negotiation"],"examples":["{\"skill\":\"meeting\",\"windows\":[{\"start\":\"2026-11-03T08:00:00Z\",\"end\":\"2026-11-03T12:00:00Z\"}]}","{\"skill\":\"meeting\",\"slot\":\"2026-11-03T09:00:00.000Z\",\"from\":\"Sam (via Sam's agent)\",\"contact\":\"sam@example.com\",\"about\":\"Supply contract\"}"]},{"id":"meeting_status","name":"Meeting request status","description":"Whether a meeting you asked for is confirmed, declined or still pending. Send \"id\" as the meeting skill returned it.","tags":["scheduling"],"examples":["{\"skill\":\"meeting_status\",\"id\":\"wk_00000000-0000-0000-0000-000000000000\"}"]},{"id":"document","name":"Published documents","description":"Documents the person chose to publish. Send {\"skill\":\"document\"} for the list, or add \"name\".","tags":["documents"],"examples":["{\"skill\":\"document\",\"name\":\"cv\"}"]},{"id":"message","name":"Leave a message","description":"Passes a message on, sealed so only the person can read it. Needs \"from\", \"contact\" and \"text\"; \"about\" and \"slot\" (a start from the slots skill) are optional.","tags":["message","contact"],"examples":["{\"skill\":\"message\",\"from\":\"Sam (via Sam's agent)\",\"contact\":\"sam@example.com\",\"about\":\"Intro\",\"text\":\"Would like 30 minutes next week.\",\"slot\":\"2026-11-03T09:00:00.000Z\"}"]},{"id":"office","name":"Office to office","description":"For another person's Wazir that this person has linked: an \"envelope\" ({payload, sig}) signed with that office's Web Bot Auth key. It is passed on sealed; this person's office checks the signature against the key it pinned and drops anything else. Nothing here reads their memory.","tags":["office","a2a"],"examples":["{\"skill\":\"office\",\"envelope\":{\"payload\":\"<base64url canonical JSON>\",\"sig\":\"<base64url Ed25519>\"}}"]}],"url":"https://wakeel-office2.loay.ai/a2a","preferredTransport":"JSONRPC","protocolVersion":"0.3.0","signatures":[{"protected":"eyJhbGciOiJFUzI1NiIsInR5cCI6IkpPU0UiLCJraWQiOiJCMEo4QzVlUG5nNlJrNFFEWUVuR05DZndSZFYwTGpvVFlPeXpIUWRyc25zIiwiamt1IjoiaHR0cHM6Ly93YWtlZWwtb2ZmaWNlMi5sb2F5LmFpLy53ZWxsLWtub3duL2p3a3MuanNvbiJ9","signature":"4iSL63k-28kRbxx9jt7eXSsIy0I0rnxPaojiJdeXiAmqR0zq8mzq3fHNMA1x_UAwbCxd6-QLCP1VcWWNdTtPTQ"}]}