todoist

$npx mdskill add obra/muse-skills/todoist

Use the installed `todoist` CLI. Start with `todoist status`. If it reports `not_connected`, run `todoist authorize-url` and share only the returned `connect_url` with the user.

SKILL.md

.github/skills/todoistView on GitHub ↗
---
name: "todoist"
description: "Read and manage Todoist tasks, projects, comments, labels, filters, and reminders through Todoist's official MCP server."
metadata: { "includeInPrompt": false }
---

# Todoist

Use the installed `todoist` CLI. Start with `todoist status`. If it reports
`not_connected`, run `todoist authorize-url` and share only the returned
`connect_url` with the user.

OAuth uses one shared public client and PKCE through authd. No client secret
enters Muse, and credentials must never be requested in chat.

The first connection requests read-only Todoist access. Before every write or
deletion, run `todoist status --for-command <permission>` with the permission
matching the requested action. This check is required even when `todoist
list-tools` advertises the provider tool: the catalogue describes available
operations, not the scopes granted to the current connection.

- `tasks.create` to add tasks;
- `tasks.manage` to update, complete, reschedule, assign, or manage reminders;
- `projects.manage` to create or change projects and sections;
- `comments.manage` to add or update comments;
- `labels.manage` to add or update labels and filters;
- `items.delete` to delete tasks or other non-project objects;
- `projects.delete` to delete projects.

When the status returns `scope_status: not_granted`, copy its `scope_add_url`
exactly and post it on its own line as `[Additional Todoist
access](<scope_add_url>)` so the client renders the native access button. Wait
for consent, then rerun `todoist list-tools` to obtain the provider's live tool
schema before performing the operation. Todoist may hide ungranted write and
delete tools from that catalogue, so an all-read list does not mean write
support is unavailable. Never construct an authorization URL or substitute a
raw Todoist scope. Hatch approval for the action remains separate.

`todoist call-tool` enforces the same check before approval or provider access.
If it returns `error_kind: additional_access_required`, the Todoist request was
not sent. Share its `scope_add_url` exactly as above, wait for consent, rerun
`todoist list-tools`, and then retry once. Do not describe this as a failed
Todoist API write.

Run `todoist list-tools` to inspect the live provider catalogue and schemas,
then call an advertised tool with:

```text
todoist call-tool --name <tool> --arguments-json '<json-object>'
```

`list-tools` exposes only reviewed Todoist tools and includes each tool's
`hatch_permission`, `hatch_action`, and `hatch_permission_label`.
`delete-object` is authorized as `projects.delete` for projects and as
`items.delete` for every other object type. Unknown or new provider tools
remain unavailable until reviewed. Read permissions follow the user's connector
settings; changes require the corresponding granular approval. Do not retry a
failed or timed-out write automatically because its side effect may have
completed.

More from obra/muse-skills

SkillDescription
apple_healthkitThe user's synced Apple Health (HealthKit) data: daily metrics (steps, distance, calories, heart rate, HRV, VO2max), sleep sessions (stages, quality, efficiency), and workouts.
artifact_documentCreate, read, edit, or manipulate Word documents (.docx) and Word templates (.dotx). Use whenever a build task's artifact kind is document with the default docx output, or the task mentions a Word doc, .docx, or .dotx, extracts or reorganizes content from one, inserts or replaces images, does find-and-replace in one, or works with tracked changes (redlines) or comments. Covers python-docx generation, raw OOXML editing of existing files, document structure and formatting, and render verification. Not for PDFs, spreadsheets, or Google Docs.
artifact_markdownBuild or revise a plain markdown file (md) deliverable such as notes, a README, meeting minutes, documentation, or text the user will edit or paste elsewhere. Use whenever a build task's artifact kind is markdown. Covers markdown formatting conventions and read-back verification.
artifact_pdfBuild, revise, or manipulate a fixed-layout PDF (report, guide, one-pager, printable document). Use whenever a build task's artifact kind is pdf, a document build's output format is pdf, or the task reads, merges, splits, crops, or fills an existing PDF, including fillable AcroForms. Covers authoring the print-CSS HTML source, rendering, the geometry and validation gates, existing-PDF manipulation and form filling, and delivery under workspace/your_files.
artifact_presentationBuild or revise a slide deck (pptx by default; pdf or html on request). Use whenever a build task's artifact kind is presentation, or the user asks for a deck, slides, or a presentation. Covers per-slide HTML authoring, the StylePlan theme system, font embedding, deck assembly, render gates, and the PPTX export.
artifact_spreadsheetCreate, read, edit, fix, or clean spreadsheet files (.xlsx, .xlsm, .csv, .tsv). Use whenever a build task's artifact kind is spreadsheet, or the task names a spreadsheet file and wants something done to it or produced from it, including restructuring messy tabular data into a proper workbook. Covers openpyxl generation, formulas and recalculation, editing existing workbooks, and the validation gates. Not for tasks whose deliverable is a document, report, or web page that merely contains a table.
artifact_testingVerify an artifact before delivering it - file deliverables (pdf, pptx, docx, xlsx, csv) and web artifacts alike. Use whenever a build is about to return a link, or a build task asks for validation, QA, or a visual check. Covers the per-kind gate scripts, render-and-look verification, and leftover-placeholder scanning.
asana>-
bookingPrimary entry point for direct flight, hotel, restaurant, or event-ticket transactions and for bounded live availability checks delegated by Travel Planning. Always use before provider-specific skills or browser work when the user asks to find live availability or prices, compare bookable options, book, or continue an active booking. Do not use for trip planning itself, broad inspiration, opening hours, schedules, flight status, or other factual questions without transaction intent.
boxSearch, read, upload, download, move, rename, delete, restore, and share Box content; manage comments and metadata.