# Agent Tools > Open infrastructure for AI agents — tasks, webhooks, inboxes, artifacts, and scheduled messages, exposed over a REST API and an MCP server. API key auth is optional: without a key, resources are created public (reachable by ID) and can be claimed later; with an `agt_…` key, resources are owned by the key's organization. Agent Tools exposes the same resources two ways — a standard HTTP + JSON REST API and a Model Context Protocol (MCP) endpoint. All timestamps are Unix seconds; lists use cursor pagination (`limit`, `after`). Errors use a shared envelope. See docs/API_CONVENTIONS for the full rules. Base URL: `https://agtls.dev`. For the complete reference of every endpoint and tool in one file, see [llms-full.txt](https://agtls.dev/llms-full.txt). ## Docs - [Documentation home](https://agtls.dev/docs): Overview and getting started. - [REST API overview](https://agtls.dev/docs/api): Base URL, auth, pagination, error envelope. - [MCP server overview](https://agtls.dev/docs/mcp): Connect an MCP client and call resources as tools. - [OpenAPI specification](https://agtls.dev/api/openapi.json): Machine-readable OpenAPI 3.1 (append `?format=yaml` for YAML). ## REST API - [GET /api/tasks — List tasks](https://agtls.dev/docs/api/list-tasks) (no auth required): Lists tasks scoped to the caller's organizations, optionally filtered by `label`. - [POST /api/tasks — Create a task](https://agtls.dev/docs/api/create-task) (no auth required): Creates a task. - [GET /api/tasks/{id} — Get a task](https://agtls.dev/docs/api/get-task) (no auth required): Get a task - [PATCH /api/tasks/{id} — Update a task](https://agtls.dev/docs/api/update-task) (no auth required): Update a task - [DELETE /api/tasks/{id} — Delete a task](https://agtls.dev/docs/api/delete-task) (no auth required): Delete a task - [GET /api/webhooks — List webhook endpoints](https://agtls.dev/docs/api/list-webhook-endpoints) (no auth required): List webhook endpoints - [POST /api/webhooks — Create a webhook endpoint](https://agtls.dev/docs/api/create-webhook-endpoint) (no auth required): Creates a webhook endpoint with a capture URL. - [GET /api/webhooks/{id} — Get a webhook endpoint](https://agtls.dev/docs/api/get-webhook-endpoint) (no auth required): Get a webhook endpoint - [PATCH /api/webhooks/{id} — Update a webhook endpoint](https://agtls.dev/docs/api/update-webhook-endpoint) (no auth required): Update a webhook endpoint - [DELETE /api/webhooks/{id} — Delete a webhook endpoint](https://agtls.dev/docs/api/delete-webhook-endpoint) (no auth required): Delete a webhook endpoint - [GET /api/webhooks/{id}/events — List captured events for an endpoint](https://agtls.dev/docs/api/list-webhook-events) (no auth required): List captured events for an endpoint - [DELETE /api/webhooks/{id}/events — Delete all events for an endpoint](https://agtls.dev/docs/api/delete-all-webhook-events) (no auth required): Delete all events for an endpoint - [GET /api/webhooks/{id}/events/{eventId} — Get a captured event](https://agtls.dev/docs/api/get-webhook-event) (no auth required): Get a captured event - [DELETE /api/webhooks/{id}/events/{eventId} — Delete a captured event](https://agtls.dev/docs/api/delete-webhook-event) (no auth required): Delete a captured event - [GET /api/catch/{id} — Capture an inbound GET request](https://agtls.dev/docs/api/capture-request-get) (no auth required): Records the inbound request (method, headers, query, body) as a webhook event. - [POST /api/catch/{id} — Capture an inbound POST request](https://agtls.dev/docs/api/capture-request-post) (no auth required): Records the inbound request (method, headers, query, body) as a webhook event. - [PUT /api/catch/{id} — Capture an inbound PUT request](https://agtls.dev/docs/api/capture-request-put) (no auth required): Records the inbound request (method, headers, query, body) as a webhook event. - [PATCH /api/catch/{id} — Capture an inbound PATCH request](https://agtls.dev/docs/api/capture-request-patch) (no auth required): Records the inbound request (method, headers, query, body) as a webhook event. - [DELETE /api/catch/{id} — Capture an inbound DELETE request](https://agtls.dev/docs/api/capture-request-delete) (no auth required): Records the inbound request (method, headers, query, body) as a webhook event. - [GET /api/inboxes — List inboxes](https://agtls.dev/docs/api/list-inboxes) (no auth required): Lists inboxes scoped to the caller's organizations. - [POST /api/inboxes — Create an inbox](https://agtls.dev/docs/api/create-inbox) (no auth required): Creates an inbox — a durable work queue with its own ingest URL. - [GET /api/inboxes/{id} — Get an inbox](https://agtls.dev/docs/api/get-inbox) (no auth required): Includes `event_count` — the number of pending (non-expired) events. - [PATCH /api/inboxes/{id} — Update an inbox](https://agtls.dev/docs/api/update-inbox) (no auth required): Update an inbox - [DELETE /api/inboxes/{id} — Delete an inbox](https://agtls.dev/docs/api/delete-inbox) (no auth required): Deletes the inbox and cascades to its events. - [GET /api/inboxes/{id}/events — List pending events](https://agtls.dev/docs/api/list-inbox-events) (no auth required): Lists pending (non-expired) events for the inbox, newest first, cursor paginated. - [POST /api/inboxes/{id}/events — Ingest an event](https://agtls.dev/docs/api/ingest-inbox-event) (no auth required): Ingests an event into the inbox. - [DELETE /api/inboxes/{id}/events — Clear all events](https://agtls.dev/docs/api/delete-all-inbox-events) (no auth required): Clear all events - [GET /api/inboxes/{id}/events/{eventId} — Get an event](https://agtls.dev/docs/api/get-inbox-event) (no auth required): An expired event returns 404, the same as an unknown ID. - [DELETE /api/inboxes/{id}/events/{eventId} — Ack: delete the event once processed](https://agtls.dev/docs/api/ack-inbox-event) (no auth required): An expired event returns 404, the same as an unknown ID. - [POST /api/inboxes/purge — Purge expired events](https://agtls.dev/docs/api/purge-inbox-events) (no auth required): Deletes every expired inbox event across all inboxes. - [GET /api/artifacts — List artifacts](https://agtls.dev/docs/api/list-artifacts) (no auth required): Lists artifacts scoped to the caller's organizations. - [POST /api/artifacts — Create an artifact](https://agtls.dev/docs/api/create-artifact) (no auth required): Creates an artifact (markdown or html content). - [GET /api/artifacts/{id} — Get an artifact](https://agtls.dev/docs/api/get-artifact) (no auth required): Get an artifact - [PATCH /api/artifacts/{id} — Update an artifact](https://agtls.dev/docs/api/update-artifact) (no auth required): Update an artifact - [DELETE /api/artifacts/{id} — Delete an artifact](https://agtls.dev/docs/api/delete-artifact) (no auth required): Delete an artifact - [GET /api/artifacts/{id}/raw — Get an artifact's raw content](https://agtls.dev/docs/api/get-artifact-raw) (no auth required): Serves the artifact content directly with the content type matching its format — `text/html` for html artifacts, `text/markdown` for markdown. - [GET /api/messages — List scheduled messages](https://agtls.dev/docs/api/list-messages) (no auth required): Lists scheduled messages scoped to the caller's organizations. - [POST /api/messages — Schedule a message](https://agtls.dev/docs/api/schedule-message) (no auth required): Schedules an HTTP request to fire at a later time. - [GET /api/messages/{id} — Get a scheduled message](https://agtls.dev/docs/api/get-message) (no auth required): Get a scheduled message - [PATCH /api/messages/{id} — Reschedule or edit a message](https://agtls.dev/docs/api/update-message) (no auth required): Updates a message that hasn't fired yet (status `scheduled`). - [DELETE /api/messages/{id} — Cancel and delete a message](https://agtls.dev/docs/api/delete-message) (no auth required): Deletes the message. - [POST /api/messages/dispatch — Dispatch due messages](https://agtls.dev/docs/api/dispatch-messages) (no auth required): Delivers every scheduled message whose time has come. - [POST /api/claim/{id} — Claim a public resource](https://agtls.dev/docs/api/claim-resource): Assigns a publicly-created resource to the caller's organization using its one-time `claim_token`. ## MCP Tools Connect at `https://agtls.dev/api/mcp`. - [agent_auth](https://agtls.dev/docs/mcp/agent_auth): Manage your agtls credential. - [tasks_read](https://agtls.dev/docs/mcp/tasks_read): Read tasks. - [tasks_write](https://agtls.dev/docs/mcp/tasks_write): Create, update, or delete a task. - [webhooks_read](https://agtls.dev/docs/mcp/webhooks_read): Read webhook endpoints and their captured events. - [webhooks_write](https://agtls.dev/docs/mcp/webhooks_write): Manage webhook endpoints and their captured events. - [inboxes_read](https://agtls.dev/docs/mcp/inboxes_read): Read inboxes — durable work queues for agents — and their pending events. - [inboxes_write](https://agtls.dev/docs/mcp/inboxes_write): Manage inboxes and deposit or consume their events. - [artifact_read](https://agtls.dev/docs/mcp/artifact_read): Read artifacts. - [artifact_write](https://agtls.dev/docs/mcp/artifact_write): Create, update, or delete a file artifact. - [messages_read](https://agtls.dev/docs/mcp/messages_read): Read scheduled messages. - [messages_write](https://agtls.dev/docs/mcp/messages_write): Schedule or cancel a message. - [claim](https://agtls.dev/docs/mcp/claim): Claim a publicly-created resource (task, webhook endpoint, inbox, artifact, or scheduled message) for your organization using the claim_token returned when it was created. ## Authentication - [Get an API key](https://agtls.dev/keys): Create an `agt_…` key owned by an organization. - [Agent auth & claiming](https://agtls.dev/auth.md): How an agent self-issues a credential and binds it to a user. ## Optional - [Sitemap](https://agtls.dev/sitemap.xml): All crawlable pages.