{"service":"Secretary","about":"Secretary reads a household's incoming mail and knows what matters: events, deadlines, people and organizations, with provenance. It does not send, sort or file mail. Every answer carries `as_of`, the instant it was computed for, and `as_of_day`, that day with its weekday: count 'Friday' or 'next week' from it, and say dates by the `day` / `due_day` fields given, never a weekday you work out. When the user says something that differs from what an answer showed (a date moved, a fact or schedule is wrong, a bill is paid), record it before you reply: tell, correct, routines.add or todo.done. Speak as the user's own assistant: don't name Secretary, tools, ids or field names (proposals, keys).","auth":"Every /agent/* call needs a signed-in session (GET /auth/google) or Authorization: Bearer <token>. MCP clients (Claude, ChatGPT connectors) use OAuth 2.1: discover via /.well-known/oauth-protected-resource/agent/mcp, register (DCR), then the owner approves on a consent page. Send resource=<origin>/agent/mcp (RFC 8707) on /authorize and /token: tokens are bound to that audience.","api":"POST /agent/v1/<capability> with a JSON body of arguments; every response is an envelope {capability, as_of, clock, knowledge, coverage, warnings, data}. `knowledge` says what mail the answer draws on: newest_signal_at bounds it, and live_sync=false means nothing newer will arrive. `coverage` is live poller state, null when no poller feeds the data.","start_here":"POST /agent/v1/capabilities — lists every capability in one line; {\"names\": [...]} for their argument and result schemas.","openapi":"/openapi.json","mcp":"/agent/mcp (MCP streamable HTTP; the same capabilities as tools)","capabilities":["ask","bills","capabilities","correct","deliveries","explain","household","issues.list","issues.report","items.find","legacy.signals.find","legacy.signals.get","legacy.upcoming","legacy.who_is","news","ping","preferences.add","preferences.list","preferences.remove","questions","routines.add","routines.confirm","routines.decline","routines.list","routines.remove","routines.unchanged","signals.find","signals.get","signals.processors","tell","todo","todo.add","todo.dismiss","todo.done","todo.reopen","todo.separate","todo.snooze","upcoming","who_is"],"clock":"real"}