Tell Claude or ChatGPT what's on your mind and it lands on your list — sorted, timed and filed the way the app does it. Ask what's next and get the answer the ♥ score would give. Or, on Android, say it to Google Assistant, and on iPhone to Siri once the iPhone app lands. Connecting an assistant and the API are part of Pro.
Every assistant that speaks MCP (the open standard for connecting assistants to apps) can use this one address. You sign in once with your I Heart Checklists account; no key to copy.
https://www.iheartchecklists.com/mcpAdd a remote (streamable HTTP) server with the address above. It signs you in the first time. For Claude Code:
claude mcp add --transport http iheartchecklists https://www.iheartchecklists.com/mcp
| Tool | What it does |
|---|---|
add_to_ihc | Add one thing or a whole brain dump. Each line becomes a task, note, idea, question, habit or goal, in the right bucket, with an estimate and any date it mentions. |
whats_next | Your open tasks in the order the ♥ score would do them. |
list_today | What's due, overdue, planned or pinned today, and how long it adds up to. |
list_tasks, list_notes, list_buckets | Search and read. |
complete_task, reopen_task | Tick off, or put back. A repeating task gets its next one, as in the app. |
update_task | Rename, move bucket, set a due or planned day, an estimate, Importance, How soon, or pin. |
delete_task | Delete. It goes to Archived, where you can restore it. |
Rules — the sentences that teach the AI how you work — are written in the app, under You › Rules. An assistant can add to your list but never changes how it's read.
With the iPhone app, once you've opened it, these work without opening it again:
They're in the Shortcuts app too, so you can put one on your home screen or the Action button. If you're offline, Siri keeps what you said and it's on your list next time you open the app.
With the Android app, say “Hey Google, create a task in I Heart Checklists” and then the task. The app opens with it added, sorted like anything you type. You can also share text to I Heart Checklists from any app.
For your own scripts, automations and tools like Zapier, Make or Apple Shortcuts. Make a key in the app under You › Connected › API keys. It's shown once; keep it like a password.
curl https://www.iheartchecklists.com/api/v1/capture \
-H "Authorization: Bearer ihc_sk_…" \
-H "Content-Type: application/json" \
-d '{"text": "renew passport by Friday\nidea: a podcast about plants"}'
Answers are JSON. Add X-Timezone: America/Chicago (or ?tz=) to read “tomorrow” in your zone; otherwise your account's zone is used.
| Request | What it does |
|---|---|
POST /capture | { text, bucket?, kind?, remind_at? } — one line or many, read like a brain dump. Returns what was added and a sentence to say back. With remind_at (an ISO date and time) it's one task with a reminder then. |
GET /next | The top of your list by ♥. ?limit= up to 50. |
GET /today | Today's tasks, the minutes they add up to, and how many are done. |
GET /tasks | ?status=open|done|all&bucket=&q=&limit=. Open tasks come back in ♥ order. |
POST /tasks | { text, bucket?, due_date? } — exactly one task. |
GET /tasks/{id} | One task. |
PATCH /tasks/{id} | text, bucket, due_date, planned_date, est_minutes, importance, how_soon, pinned, details — any of them; null clears a date. |
POST /tasks/{id}/complete | Done. A repeating task returns its next one as next. |
POST /tasks/{id}/reopen | Not done after all. |
DELETE /tasks/{id} | To Archived (restorable in the app). |
GET /notes, POST /notes, DELETE /notes/{id} | Notes, ideas and questions. kind is note, idea or question. |
GET /buckets, GET /goals, GET /me | Your buckets, goals, and the account the key belongs to. |
A task looks like this:
{ "id": "…", "text": "Renew passport", "done": false, "bucket": "personal", "bucketName": "Personal",
"estMinutes": 30, "importance": "high", "howSoon": "medium", "dueDate": "2026-11-06", "overdue": false,
"pinned": false, "plannedFor": null, "repeats": false, "habit": false, "goalId": null, "heart": 74 }
Errors come back as { "error": "…", "message": "…" } with 400 (something in the request), 401 (no key, or a revoked one), 402 (Pro isn't active on the account), 403 (this key can't do that) or 404.