resolve_messages
Permanently acknowledge selected messages to remove them from the pending queue after partial handling, preventing already-handled mail from reappearing in new sessions.
Instructions
Permanently resolve (ack) specific messages so they leave your pending queue for good (v2.12.0).
When to use: PARTIAL handling — you've actioned some of your mail but not all ("I did these, not those"). For the common "I've handled everything I just drained" path, prefer get_messages(status='pending', ack=true) which drains AND resolves in one call. Resolving is the durable, session-INDEPENDENT counterpart to reading: read is a per-session observation (a fresh terminal re-sees prior-session-read mail so handovers don't drop unfinished work); resolved is a permanent "handled, archive it" that the pending filter honors, so an already-handled message never re-floods a new session.
Behavior: sets resolved_at=now() for the eligible ids, in one transaction. Does NOT mark messages read (orthogonal plane) and does NOT delete them — they remain in status='all'/'history'/'resolved'. Idempotent: re-resolving, unknown ids, or ineligible ids are silently skipped (reflected in the returned counts). Scope: you can resolve mail addressed to YOU (recipient-resolve), OR an obligation/message YOU sent to a recipient that is NOT a registered agent (sender-resolve) — a human (e.g. a person you owe an answer) has no token, so without this such mail could never be cleared and the pending-on-a-human lane would be write-only. You can NEVER resolve mail addressed to a real agent — that stays the recipient's to clear. The dispatcher binds your token to agent_name, so there is no impersonation path. Edge: the non-agent check is evaluated at resolve time, so if a human recipient later REGISTERS as an agent the sender can no longer resolve it — note names that case so a legitimate zero doesn't read as a failure.
Returns: { success: true, agent, resolved_ids: string[], resolved_count, requested_count, blocked_by_recipient_registration: {id,to_agent}[], note }. resolved_count < requested_count when some ids were already resolved, unknown, not yours, or (per blocked_by_recipient_registration) sent by you to a recipient that has since become a registered agent.
Errors: AUTH_FAILED (token missing/mismatched), VALIDATION (empty/oversized id list), RATE_LIMITED.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | Yes | Your agent name — you can resolve mail addressed to you, or an obligation you sent to a non-agent recipient | |
| agent_token | No | Your agent token (from register_agent response). Optional here — also resolvable from RELAY_AGENT_TOKEN env or X-Agent-Token header. | |
| message_ids | Yes | The message ids to permanently resolve (ack). Only ids addressed to you are affected; unknown/foreign ids are silently skipped. |