Add a Todoist task
Let your AI add Todoist tasks; the API token never enters the conversation.
Create a task in the Todoist Inbox via the REST API. The personal API token rides the Authorization header and is resolved server-side at delivery. No install-time parameters: tasks land in Inbox, and natural-language due dates ride the intent.
The credential never enters the model context: it lives in the FlurryPORT secret store, deliveries are signed server-side, and every send returns a receipt your agent can quote.
What this is
Your AI adds Todoist tasks with your API token held server-side. No install-time parameters at all: tasks land in your Inbox, and natural-language due dates like 'tomorrow 9am' ride straight through the intent.Setup in two steps
- Todoist side. Settings, Integrations, Developer tab, copy the API token.
- FlurryPORT side. Your AI requests secret setup and FlurryPORT emails you a secure page. Paste the token and the pipe is live.
Credential custody
Stored encrypted, sent as a Bearer header at delivery, scrubbed from stored responses. The AI composes tasks; the token that creates them never enters the conversation.What to expect
Two quirks worth knowing: the API's priority numbers run backwards from the app's labels (API 4 is the app's p1), and the old v2 endpoints are gone, answering 410. The pipe already targets the current API, so receipts carry the created task on success. Tasks go to Inbox on purpose; project routing is a future enrichment, not a fork.Install with your agent
npx flurryport mcp
Point your agent at the FlurryPORT MCP server (npx flurryport mcp) and ask it for the flurryport:todoist-add recipe. Works from AI clients that can run a local process: desktop apps and terminal agents. Web-only chat clients cannot reach a local MCP server; open a desktop client instead.
Tools your agent gains
flry_todoist_add- Add a task to the Todoist Inbox. Input: content (required, task text), description (optional), dueString (optional natural language like 'tomorrow 9am'), priority (optional 1-4, 4 is urgent).
Setup walkthrough
TODOIST_TOKEN: In Todoist: Settings, Integrations, Developer tab, copy the API token. Paste it into the FlurryPORT secret page. It is sent as a Bearer Authorization header.
Intent schema
{
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string",
"maxLength": 500,
"description": "The task text; Todoist markdown works here."
},
"description": {
"type": "string",
"description": "Optional task description. Sent as an empty string when omitted."
},
"dueString": {
"type": "string",
"description": "Optional natural-language due date like 'tomorrow 9am' or 'every friday'. Sent empty (no due date) when omitted."
},
"priority": {
"type": "number",
"description": "Optional 1 to 4 where 4 is URGENT - the API scale is the reverse of the p1-p4 labels in the app. Sent as 1 (normal) when omitted."
}
}
}Transformation
{ "content": $body.content, "description": ($exists($body.description) ? $body.description : ""), "due_string": ($exists($body.dueString) ? $body.dueString : ""), "priority": ($exists($body.priority) ? $body.priority : 1) }Delivery target
POST https://api.todoist.com/api/v1/tasks
Placeholders like $secrets.NAME resolve server-side at delivery, never in the agent.
Gotchas
- The old REST v2 endpoints answer 410 deprecated; the API lives under api.todoist.com/api/v1/.
- API priority is REVERSED from the app's labels: API 4 is the app's p1 (urgent), API 1 is p4 (normal).
- due_string accepts natural language; an empty string means no due date. Tasks land in Inbox by design.
Where this fits
Related recipes
Create and update Azure DevOps work items in one batched pipe: priority, state, tags, and sprint included.
Query Azure DevOps work items with WIQL and read the matching ids back, without your AI ever holding the PAT.
Read fields for a batch of Azure DevOps work items by id: title, state, tags, priority, iteration.
Let your AI file Azure DevOps work items (bugs, tasks) the model never holds credentials for.
Let your AI file GitHub issues with a fine-grained PAT it never touches.
Let your AI file Jira Cloud issues with an API token it never touches.