Early access

DoLoop API

Read and drive your tasks and loops from your own scripts, integrations and AI assistants.

Using Claude, Cursor or another AI assistant? Set up MCP ↓

1. Create a key

  1. 1Log in and open My Profile.
  2. 2Under API keys, name your key, choose read only or read and write, and pick an expiry if you want one.
  3. 3Copy the key straight away. It starts with dl_ and is shown only once.
Manage my API keys

2. Make a request

Send the key as a bearer token in the Authorization header. This lists your loops:

curl -H "Authorization: Bearer dl_…" \
  https://api.getdoloop.com/api/v1/loops

Requests and responses are JSON, over HTTPS.

Connect an AI assistant (MCP)

DoLoop's MCP server lets Claude, Cursor or any other MCP client read and manage your tasks and loops for you. It uses the same API keys and shares their limit of 60 requests per minute, and it can do nothing your key cannot already do.

Server URL:

https://api.getdoloop.com/mcp

Create a key as in step 1. With a read-only key the assistant gets 5 tools to look at your tasks and loops; with a read-and-write key it gets all 16, so it can also create, edit, check, abort and delete. Create one key per assistant so you can revoke each one on its own.

Claude Code

Run this in a terminal, with your key in place of dl_…:

claude mcp add --transport http doloop https://api.getdoloop.com/mcp \
  --header "Authorization: Bearer dl_…"

Claude Desktop

Claude Desktop's built-in connectors need a sign-in flow that DoLoop does not offer yet. Until then, connect through the mcp-remote bridge (requires Node.js): add this to claude_desktop_config.json, put your key in place of dl_…, then restart Claude Desktop.

{
  "mcpServers": {
    "doloop": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.getdoloop.com/mcp",
        "--header",
        "Authorization:${DOLOOP_AUTH}"
      ],
      "env": {
        "DOLOOP_AUTH": "Bearer dl_…"
      }
    }
  }
}

Cursor

Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project), with your key in place of dl_…:

{
  "mcpServers": {
    "doloop": {
      "url": "https://api.getdoloop.com/mcp",
      "headers": {
        "Authorization": "Bearer dl_…"
      }
    }
  }
}
  • Any other MCP client: use the Streamable HTTP transport with the URL above and the same Authorization header.
  • Then ask your assistant something like β€œWhat’s due today?” or β€œCreate a loop for my weekly chores.”
  • Your key is a password: keep config files that contain it out of git and shared folders.

Read or write

Read only

Lists and reads your tasks and loops. GET requests only.

Read and write

Everything a read-only key can do, plus creating, editing, checking, aborting and deleting tasks and loops.

What a key can reach

Paths are relative to the base URL in the example above.

Tasks

  • GET /tasks
  • GET /tasks/armed
  • GET /tasks/{id}
  • POST /tasks
  • PATCH /tasks/{id}
  • DELETE /tasks/{id}
  • POST /tasks/{id}/check
  • POST /tasks/{id}/abort
  • POST /tasks/arm_all

Loops

  • GET /loops
  • GET /loops/{id}
  • POST /loops
  • PATCH /loops/{id}
  • DELETE /loops/{id}
  • POST /loops/{id}/enqueue
  • DELETE /loops/{id}/dequeue

A key cannot touch your account, your password or your other keys: those stay behind your login.

Limits and errors

  • 60 requests per minute per key. Beyond that the API answers 429 with a Retry-After header: wait that many seconds, then try again.
  • A key stops working immediately when you revoke it, when it expires, when you change or reset your password, or when you delete your account.

Errors are JSON, with a stable code in the error field:

  • 401 invalid_api_key β€” the key is malformed or unknown
  • 401 api_key_revoked β€” the key was revoked
  • 401 api_key_expired β€” the key is past its expiry date
  • 403 insufficient_scope β€” a read-only key tried to change something
  • 403 api_key_not_allowed β€” a key was used on an account or key route
  • 429 rate_limited β€” too many requests: wait for Retry-After

How we store API keys and their usage