Connect Todoist to Claude via Bindify

Set up once. Never re-authenticate again.

// Setup steps

Step 1: Sign up

Create a Bindify account at app.bindify.dev. You can start with the free 24-hour trial — no credit card required.

Step 2: Connect Todoist

In your Bindify dashboard, click "Add Connection" and select Todoist. You will be redirected to Todoist to authorize Bindify to access your tasks and projects.

Step 3: Copy your secret URL

After authorization, Bindify generates your permanent MCP URL. Copy it from the dashboard. It looks like:

https://api.bindify.dev/s/{connection-id}/{secret}/sse

Step 4: Add to Claude

Follow the instructions below for your Claude client.

// Claude Desktop

Open your Claude Desktop config file and add the Todoist MCP server:

{
  "mcpServers": {
    "todoist": {
      "url": "https://api.bindify.dev/s/{connection-id}/{secret}/sse"
    }
  }
}

Replace {connection-id} and {secret} with the values from your Bindify dashboard. Restart Claude Desktop to activate.

// Claude Code

Add the Todoist MCP server using the Claude Code CLI:

claude mcp add todoist \
  --transport http \
  --url https://api.bindify.dev/s/{connection-id}/{secret}/mcp \
  --header "x-api-key: {your-api-key}"

Your API key is available in the Bindify dashboard under account settings. The /mcp endpoint is used for streamable HTTP transport.

// Troubleshooting

Claude says it cannot connect to Todoist
Check your Bindify dashboard. If the Todoist connection shows an error status, click "Re-authorize" to refresh the OAuth token. Your secret URL stays the same.
Todoist connection shows "token error" in dashboard
This means the upstream Todoist token has expired and automatic refresh failed. Click "Re-authorize" to grant access again. This is a one-time fix.
Tasks are not showing up
Verify that you authorized the correct Todoist account. If needed, revoke the connection and reconnect with the right account.
I want to check my connection status
Log in to app.bindify.dev and view your dashboard. Each connection shows its status (active, refreshing, or error) and last-used timestamp.