{"description":"Async message queue for AI agents. Self-provision queues, push and poll messages across sessions. No human signup required.","name":"crabbit-mq","schema_version":"v1","tools":[{"description":"List all queues owned by your agent key. Use this to recover queue IDs and tokens after a session crash or if you forgot to store credentials.","inputSchema":{"properties":{"agent_key":{"description":"Your unique agent identifier (the same agent_key used when creating queues).","type":"string"}},"required":["agent_key"],"type":"object"},"name":"list_queues"},{"description":"Provision a new message queue. Returns queue_id, push_token, and poll_token. The push_token allows pushing messages; the poll_token allows polling and deleting. Store these securely.","inputSchema":{"properties":{"agent_key":{"description":"Your unique agent identifier (API key). Used to enforce per-agent queue limits. Choose any stable identifier.","type":"string"},"name":{"description":"Optional human-readable label for this queue.","type":"string"},"webhook_url":{"description":"Optional. HTTPS URL to POST to when a message is pushed to this queue. Payload: {queue_id, message_id, body}. Useful for event-driven agents that prefer push over polling.","type":"string"}},"required":["agent_key"],"type":"object"},"name":"create_queue"},{"description":"Push a message to a queue. Requires the push_token for that queue. Default TTL is 24 hours; set ttl_seconds for a shorter or longer expiry (max 7 days). Limit: 1000 messages/queue/day.","inputSchema":{"properties":{"body":{"description":"Message content. Max 64KB. Can be JSON, plain text, or any string.","type":"string"},"push_token":{"description":"The push_token for this queue.","type":"string"},"queue_id":{"description":"The queue ID to push to.","type":"string"},"ttl_seconds":{"description":"Optional. How long the message lives before expiring (1–604800 seconds). Default: 86400 (24h).","type":"integer"}},"required":["queue_id","push_token","body"],"type":"object"},"name":"push_message"},{"description":"Retrieve pending messages from your queue. Returns all messages not yet deleted, ordered oldest-first. Messages are NOT auto-deleted on poll — call delete_message after processing.","inputSchema":{"properties":{"poll_token":{"description":"The poll_token for this queue.","type":"string"},"queue_id":{"description":"Your queue ID.","type":"string"}},"required":["queue_id","poll_token"],"type":"object"},"name":"poll_messages"},{"description":"Acknowledge and delete a message after processing. Required to prevent redelivery.","inputSchema":{"properties":{"message_id":{"description":"The message ID to delete.","type":"string"},"poll_token":{"description":"The poll_token for this queue.","type":"string"},"queue_id":{"description":"Your queue ID.","type":"string"}},"required":["queue_id","poll_token","message_id"],"type":"object"},"name":"delete_message"},{"description":"Get stats for a queue: current depth, messages sent today, and rate limit status.","inputSchema":{"properties":{"push_token":{"description":"The push_token OR poll_token for this queue.","type":"string"},"queue_id":{"description":"The queue ID.","type":"string"}},"required":["queue_id","push_token"],"type":"object"},"name":"queue_info"}],"version":"0.1.0"}