# Todoist AI Assistant - Smart Task Management via MCP (`mrbridge/todoist-ai-assistant`) Actor

Connect AI assistants to Todoist via MCP. 35 tools for tasks, projects, labels, comments & AI features (smart prioritization, focus mode, daily digest). Works with Claude Code, Claude Desktop & ChatGPT.

- **URL**: https://apify.com/mrbridge/todoist-ai-assistant.md
- **Developed by:** [MrBridge](https://apify.com/mrbridge) (community)
- **Categories:** AI, MCP servers, Automation
- **Stats:** 13 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $15.00 / 1,000 ai features

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Todoist AI Assistant

**AI-Powered Task Management for Claude Code, Claude Desktop & MCP-Compatible Assistants**

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-00C7B7?style=for-the-badge&logo=apify&logoColor=white)](https://apify.com/mrbridge/todoist-ai-assistant?fpr=mrbridge)
[![MCP Protocol](https://img.shields.io/badge/MCP-Protocol-5A67D8?style=for-the-badge)](https://modelcontextprotocol.io)
[![Todoist](https://img.shields.io/badge/Todoist-E44332?style=for-the-badge&logo=todoist&logoColor=white)](https://todoist.com)

[![Tools](https://img.shields.io/badge/Tools-35-blue?style=flat-square)](#available-tools-35-total)
[![AI Features](https://img.shields.io/badge/AI%20Features-9-purple?style=flat-square)](#ai-powered-productivity)
[![Version](https://img.shields.io/badge/Version-3.0-orange?style=flat-square)](#)

---

### What does Todoist AI Assistant do?

Todoist AI Assistant is an MCP server that connects AI assistants like Claude Code, Claude Desktop and ChatGPT directly to your Todoist account. It exposes 35 specialized tools covering task management, project organization, label handling, comments and AI-powered productivity features — all accessible through natural language prompts.

Instead of switching between apps, you tell your AI assistant what to do: "Add a task to call the dentist tomorrow at 2pm, high priority." The MCP server handles the Todoist API calls, natural language date parsing, and returns structured results — in under 500ms after the initial cold start.

| Without MCP | With Todoist AI Assistant |
|-------------|--------------------------|
| Open Todoist app | Just tell Claude |
| Navigate to project | "Add task to Work project" |
| Click "Add task" | Done in 2 seconds |
| Fill in details | Natural language dates |
| Set priority manually | AI suggests priorities |
| Check overdue tasks one by one | "Analyze my overdue tasks" |

**One prompt. Zero context switching.** Over 35 tools available, including 9 AI-powered features for smart prioritization, focus mode and daily digests.

---

### How to connect Todoist to Claude Code (3 minutes)

#### Step 1: Get your Todoist API Token

Go to [Todoist Settings > Integrations > Developer](https://todoist.com/app/settings/integrations/developer) and copy your API token. It's free and takes 10 seconds.

#### Step 2: Configure on Apify

1. Go to [Todoist AI Assistant on Apify](https://apify.com/mrbridge/todoist-ai-assistant?fpr=mrbridge)
2. Click **Try for free**
3. Paste your Todoist token in the **Input** tab
4. Click **Save & Build**, then **Start** to validate your token

#### Step 3: Connect Claude Code

Open Claude Code settings and add a custom MCP server:

**Name:** `Todoist`
**URL:**
````

https://mrbridge--todoist-ai-assistant.apify.actor/mcp?token=YOUR\_APIFY\_TOKEN

````

Replace `YOUR_APIFY_TOKEN` with your [Apify API token](https://console.apify.com/settings/integrations).

#### Test it

In Claude Code, type:
> "List my Todoist projects"

---

### Features

#### 35 Specialized Tools

| Category | Tools | Examples |
|----------|-------|----------|
| **Tasks** | 9 | create, complete, move, find, filter |
| **Projects** | 5 | create, update, delete |
| **Sections** | 4 | organize project structure |
| **Labels** | 4 | tag and filter tasks |
| **Comments** | 4 | add notes to tasks/projects |
| **AI Features** | 9 | smart prioritize, focus mode, daily digest |

According to the [Model Context Protocol specification](https://modelcontextprotocol.io), MCP servers expose tools that AI assistants can invoke via JSON-RPC. This Actor implements the full MCP protocol with 35 tools — one of the most comprehensive Todoist integrations available for AI assistants.

#### Natural Language Dates

Works in **4 languages** (English, French, Spanish, German):

| Input | Result |
|-------|--------|
| "tomorrow at 2pm" | 2026-02-18T14:00:00 |
| "next Monday" | 2026-02-23 |
| "in 3 days" | 2026-02-20 |
| "demain matin" | 2026-02-18T09:00:00 |
| "lundi prochain" | 2026-02-23 |
| "fin du mois" | 2026-02-28 |

#### AI-Powered Productivity

9 AI features analyze your tasks and provide actionable recommendations:

| Feature | What it does |
|---------|--------------|
| **Daily Digest** | Personalized morning briefing with priorities |
| **Focus Mode** | Top 3-5 tasks to work on right now |
| **Smart Prioritize** | Auto-sort by urgency + importance + deadlines |
| **Suggest Priorities** | Preview suggestions without applying |
| **Overdue Analysis** | Why tasks are late + recommendations |
| **Bottleneck Detection** | Find project blockers |
| **Productivity Stats** | Statistics by period and project |
| **Batch Organize** | Bulk label, move and prioritize tasks |
| **Smart Cleanup** | Find obsolete and duplicate tasks |

### About this MCP server

Built by **MrBridge**. See the [Todoist assistant page](https://mr-bridge.com/solutions/todoist-ai-assistant) or [explore all MCP servers](https://mr-bridge.com/mcp-servers). More about MrBridge at [mr-bridge.com](https://mr-bridge.com).

---

### What can you ask your AI assistant?

#### Morning Routine
> "Give me my daily digest — what should I focus on today?"
>
> "Show me overdue tasks sorted by priority"

#### Quick Capture
> "Add task: call dentist tomorrow at 2pm, high priority, Personal project"
>
> "Create 3 tasks: buy groceries, review report, email the team — all due this week"

#### Project Management
> "List all P1 tasks in the Work project"
>
> "Analyze bottlenecks in Marketing — what's blocking progress?"

#### Smart Actions
> "Re-prioritize all my tasks based on deadlines and importance"
>
> "Find tasks older than 30 days without due dates — help me clean up"
>
> "I have 2 hours of high energy — what should I focus on?"

---

### Alternative Setup: Claude Desktop (Config File)

If you prefer Claude Desktop with a JSON config file:

Add to your `claude_desktop_config.json`:
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-proxy", "https://mrbridge--todoist-ai-assistant.apify.actor/mcp?token=YOUR_APIFY_TOKEN"]
    }
  }
}
````

Replace `YOUR_APIFY_TOKEN` with your [Apify API token](https://console.apify.com/settings/integrations).

Restart Claude Desktop and test with: "List my Todoist projects"

***

### Available Tools (35 Total)

#### Tasks (9 tools)

| Tool | Description |
|------|-------------|
| `todoist_get_tasks` | List tasks with filters (project, priority, date, label) |
| `todoist_get_task` | Get task by ID |
| `todoist_find_task` | Search by name (partial match) |
| `todoist_create_task` | Create with natural language dates |
| `todoist_update_task` | Modify properties |
| `todoist_complete_task` | Mark as done |
| `todoist_reopen_task` | Reopen completed task |
| `todoist_delete_task` | Delete task |
| `todoist_move_task` | Move to project/section |

#### Projects (5 tools)

| Tool | Description |
|------|-------------|
| `todoist_get_projects` | List all projects |
| `todoist_get_project` | Get project details |
| `todoist_create_project` | Create new project |
| `todoist_update_project` | Modify project |
| `todoist_delete_project` | Delete project |

#### Sections (4 tools)

| Tool | Description |
|------|-------------|
| `todoist_get_sections` | List sections (all or by project) |
| `todoist_create_section` | Create in project |
| `todoist_update_section` | Rename section |
| `todoist_delete_section` | Delete section |

#### Labels (4 tools)

| Tool | Description |
|------|-------------|
| `todoist_get_labels` | List all labels |
| `todoist_create_label` | Create label |
| `todoist_update_label` | Modify label |
| `todoist_delete_label` | Delete label |

#### Comments (4 tools)

| Tool | Description |
|------|-------------|
| `todoist_get_comments` | Get comments on task or project |
| `todoist_add_comment` | Add comment |
| `todoist_update_comment` | Edit comment |
| `todoist_delete_comment` | Delete comment |

#### AI Features (9 tools)

| Tool | Description |
|------|-------------|
| `todoist_daily_digest` | Personalized daily briefing |
| `todoist_focus_mode` | Top tasks for right now |
| `todoist_smart_prioritize` | Auto-prioritize tasks |
| `todoist_suggest_priorities` | Preview priority suggestions |
| `todoist_analyze_overdue` | Overdue analysis with recommendations |
| `todoist_identify_bottlenecks` | Find project blockers |
| `todoist_get_productivity_stats` | Productivity statistics |
| `todoist_batch_organize` | Bulk organize tasks |
| `todoist_smart_cleanup` | Find obsolete/duplicate tasks |

***

### What data can you extract?

Each tool returns structured JSON data. Here are the key fields:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique task/project/label ID |
| `content` | string | Task name or description |
| `priority` | integer | 1 (urgent) to 4 (low) |
| `due` | object | Due date with `date`, `datetime`, `isRecurring` |
| `projectId` | string | Parent project ID |
| `labels` | array | List of label names |
| `isCompleted` | boolean | Completion status |
| `createdAt` | string | ISO 8601 creation timestamp |
| `assigneeId` | string | Assigned user ID (shared projects) |

#### Output example

```json
{
  "success": true,
  "tasks": [
    {
      "id": "123456789",
      "content": "Review Q4 report",
      "priority": 1,
      "due": { "date": "2026-02-18", "isRecurring": false },
      "projectId": "987654321",
      "labels": ["work", "urgent"],
      "isCompleted": false
    }
  ],
  "totalCount": 1
}
```

***

### For AI Developers

#### LLM-Ready Documentation

```
GET https://mrbridge--todoist-ai-assistant.apify.actor/llms.txt?token=YOUR_APIFY_TOKEN
```

#### API Endpoints

| Endpoint | Method | Description |
|----------|--------|-------------|
| `/mcp` | POST | MCP JSON-RPC endpoint |
| `/health` | GET | Health check |
| `/llms.txt` | GET | LLM documentation |
| `/` | GET | Server info |

***

### Architecture

```
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Claude Code   │────>│  Apify Standby  │────>│   Todoist API   │
│  (MCP Client)   │<────│  (MCP Server)   │<────│   (REST v1)     │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        │                       │                       │
        │   JSON-RPC/HTTP       │    REST API           │
        │   + Apify Token       │    + Todoist Token    │
        └───────────────────────┴───────────────────────┘
```

#### Security

Your Todoist token is stored server-side on Apify's encrypted infrastructure and is never sent to AI models. The Apify token in the URL authenticates your MCP connection only.

| Token | Storage | Exposure |
|-------|---------|----------|
| Todoist API | Apify encrypted input | Never visible in AI chat |
| Apify API | URL parameter | Only for MCP authentication |

***

### How much does it cost?

#### Pay-Per-Event Pricing

| Operation | Price | Examples |
|-----------|-------|----------|
| **Read** | $0.005 | get\_tasks, get\_projects, get\_labels |
| **Write** | $0.01 | create\_task, update\_project, delete\_label |
| **AI** | $0.025 | smart\_prioritize, focus\_mode, daily\_digest |

#### Cost Estimates

| Usage pattern | Monthly cost |
|---------------|-------------|
| Light (50 operations/day) | ~$5/month |
| Medium (150 operations/day) | ~$15/month |
| Heavy (500 operations/day) | ~$45/month |

#### Apify Compute

- **Standby mode**: ~$0.25/hour when active
- **Typical usage**: $1-5/month
- **Free tier**: Available for testing

***

### Troubleshooting

| Problem | Solution |
|---------|----------|
| "Server disconnected" | Check Standby URL format and Apify token |
| "Token API Todoist invalide" | Regenerate token in [Todoist Settings > Integrations > Developer](https://todoist.com/app/settings/integrations/developer) |
| Slow first response | Cold start (~2-3s), then <500ms |
| Tasks not appearing | Run the Actor once (normal mode) to validate and save your token |

***

### Frequently Asked Questions

#### What is a Todoist MCP Server?

An MCP (Model Context Protocol) server acts as a bridge between AI assistants and external services. The Todoist MCP Server exposes 35 tools that allow Claude, ChatGPT, and other AI assistants to read and manage your Todoist tasks, projects, labels and comments through natural language commands.

#### How do I connect Todoist to Claude Code?

Three steps: (1) copy your Todoist API token from [Todoist Settings](https://todoist.com/app/settings/integrations/developer), (2) paste it in the Actor's input on Apify and run once to validate, (3) add the Standby URL as a custom MCP server in Claude Code settings. The full setup takes about 3 minutes.

#### Is my Todoist data secure?

Yes. Your Todoist API token is stored on Apify's encrypted infrastructure and is never exposed to AI models. The MCP server runs in Apify's secure sandbox with `limitedPermissions` enabled, meaning it only accesses your Todoist data — nothing else. All communication uses HTTPS encryption.

#### How much does it cost to use?

The Actor uses pay-per-event pricing: $0.005 per read operation, $0.01 per write operation, and $0.025 per AI feature. For typical daily use (checking tasks, creating a few tasks, running a daily digest), expect around $5-15/month. A free tier is available for testing.

#### What AI features are available?

9 AI-powered tools: Daily Digest (morning briefing), Focus Mode (top tasks for right now), Smart Prioritize (auto-sort by urgency), Suggest Priorities (preview without applying), Overdue Analysis, Bottleneck Detection, Productivity Stats, Batch Organize, and Smart Cleanup (find duplicates and obsolete tasks).

#### Does it work with ChatGPT, Cursor or VS Code?

Yes. Any MCP-compatible client can connect. For Claude Desktop, add the Standby URL as a custom connector. For Cursor and VS Code, use the `@anthropic/mcp-proxy` package in your MCP configuration. ChatGPT supports MCP servers through its plugin system.

#### Can I use natural language dates?

Yes. The server parses natural language dates in 4 languages: English, French, Spanish and German. Examples: "tomorrow at 2pm", "demain matin", "next Monday", "fin du mois", "in 3 days". ISO format (2026-12-25) is also supported.

#### What happens if my Todoist token expires?

Todoist personal API tokens do not expire unless you manually revoke them. If you regenerate your token in Todoist Settings, you need to update the Actor input on Apify and run once to re-validate. The MCP connection itself (Apify Standby URL) does not change.

#### How many tools are available?

35 tools organized in 6 categories: Tasks (9), Projects (5), Sections (4), Labels (4), Comments (4), and AI Features (9). Each tool is designed for a specific operation, from simple reads to complex AI-powered analysis.

#### Can I use it in French, Spanish or German?

Yes. Set the `defaultLanguage` parameter in the Actor input to `fr`, `es`, or `de`. This affects AI-generated analysis text, recommendations, and natural language date parsing. Task content remains in whatever language you write it in.

***

### Connect from Cursor IDE

Add to your Cursor MCP settings (`.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "todoist": {
      "url": "https://mrbridge--todoist-ai-assistant.apify.actor/mcp?token=YOUR_APIFY_TOKEN"
    }
  }
}
```

Then ask Cursor: "List my Todoist projects and show today's tasks."

***

### Connect from Windsurf

In Windsurf, go to **Settings → MCP** and add:

```
https://mrbridge--todoist-ai-assistant.apify.actor/mcp?token=YOUR_APIFY_TOKEN
```

***

### Connect from VS Code (Copilot, Cline, Continue)

#### GitHub Copilot (VS Code)

Add to your `.vscode/mcp.json`:

```json
{
  "servers": {
    "todoist": {
      "type": "http",
      "url": "https://mrbridge--todoist-ai-assistant.apify.actor/mcp?token=YOUR_APIFY_TOKEN"
    }
  }
}
```

#### Cline Extension

In Cline settings → **MCP Servers → Remote Servers**, add the URL above.

#### Continue Extension

Add to `.continue/config.yaml`:

```yaml
mcpServers:
  - name: todoist
    url: https://mrbridge--todoist-ai-assistant.apify.actor/mcp?token=YOUR_APIFY_TOKEN
```

***

### Integrate with Zapier, Make & n8n

#### Zapier

Use the [Apify Zapier integration](https://zapier.com/apps/apify):

1. Add "Apify" trigger → "Run Actor" with Actor ID `j3l2ZJleiQegHtWub`
2. Connect to Gmail, Slack, Notion, or 5,000+ other apps

**Example Zap:** Daily at 8 AM → Run daily digest → Send Slack summary

#### Make (Integromat)

Use the [Apify Make integration](https://www.make.com/en/integrations/apify):

1. Add "Apify" module → "Run an Actor" → Actor ID `j3l2ZJleiQegHtWub`

#### n8n

Use the [Apify n8n node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.apify/) or:

```
POST https://api.apify.com/v2/acts/mrbridge~todoist-ai-assistant/runs?token=YOUR_APIFY_TOKEN
```

***

### Related Actors

- [ESPN MCP Server](https://apify.com/mrbridge/espn-mcp-server?fpr=mrbridge) — MCP server for live sports scores, standings & stats across 25+ leagues
- [Latest News MCP Server](https://apify.com/mrbridge/latest-news-mcp-server?fpr=mrbridge) — MCP server for real-time news, crypto, weather & more from 27 free APIs
- [LoL MCP Server](https://apify.com/mrbridge/lol-mcp-server?fpr=mrbridge) — MCP server for League of Legends player data & AI coaching
- [TFT MCP Server](https://apify.com/mrbridge/tft-mcp-server?fpr=mrbridge) — MCP server for Teamfight Tactics player analytics

***

### Links

- **Apify Store**: [apify.com/mrbridge/todoist-ai-assistant](https://apify.com/mrbridge/todoist-ai-assistant?fpr=mrbridge)
- **Todoist API**: [developer.todoist.com](https://developer.todoist.com)
- **MCP Protocol**: [modelcontextprotocol.io](https://modelcontextprotocol.io)
- **Claude Code**: [claude.ai/download](https://claude.ai/download)
- **Issues & Support**: [GitHub Issues](https://github.com/emmanuel-aristide/todoist-mcp-actor/issues)

***

<p align="center">
  <strong>Built for productivity enthusiasts who want AI to handle the busywork.</strong>
</p>

# Actor input Schema

## `todoistApiToken` (type: `string`):

Your personal API token from <a href='https://todoist.com/app/settings/integrations/developer' target='_blank'>Todoist Settings > Integrations > Developer</a>. Takes 10 seconds to copy.

## `enableAIFeatures` (type: `boolean`):

Enables smart prioritization, focus mode, daily digest, bottleneck detection, and smart cleanup tools.

## `defaultLanguage` (type: `string`):

Language for AI-generated analysis, recommendations and natural language date parsing.

## Actor input object example

```json
{
  "enableAIFeatures": true,
  "defaultLanguage": "fr"
}
```

# Actor output Schema

## `runUrl` (type: `string`):

Link to the Actor run details page

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("mrbridge/todoist-ai-assistant").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("mrbridge/todoist-ai-assistant").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call mrbridge/todoist-ai-assistant --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=mrbridge/todoist-ai-assistant",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Todoist AI Assistant - Smart Task Management via MCP",
        "description": "Connect AI assistants to Todoist via MCP. 35 tools for tasks, projects, labels, comments & AI features (smart prioritization, focus mode, daily digest). Works with Claude Code, Claude Desktop & ChatGPT.",
        "version": "3.0",
        "x-build-id": "m69ZkWBRzuaQijhh4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mrbridge~todoist-ai-assistant/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mrbridge-todoist-ai-assistant",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/mrbridge~todoist-ai-assistant/runs": {
            "post": {
                "operationId": "runs-sync-mrbridge-todoist-ai-assistant",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/mrbridge~todoist-ai-assistant/run-sync": {
            "post": {
                "operationId": "run-sync-mrbridge-todoist-ai-assistant",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "todoistApiToken": {
                        "title": "Todoist API Token",
                        "type": "string",
                        "description": "Your personal API token from <a href='https://todoist.com/app/settings/integrations/developer' target='_blank'>Todoist Settings > Integrations > Developer</a>. Takes 10 seconds to copy."
                    },
                    "enableAIFeatures": {
                        "title": "Enable AI Features",
                        "type": "boolean",
                        "description": "Enables smart prioritization, focus mode, daily digest, bottleneck detection, and smart cleanup tools.",
                        "default": true
                    },
                    "defaultLanguage": {
                        "title": "Default Language",
                        "enum": [
                            "en",
                            "fr",
                            "es",
                            "de"
                        ],
                        "type": "string",
                        "description": "Language for AI-generated analysis, recommendations and natural language date parsing.",
                        "default": "fr"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
