| name | create-issue |
| description | Summarizes problems or bugs from the open chat (or uses user-provided content), proposes a Todoist issue with Title and Description and optionally subtasks, then creates tasks in the Huntable CTI Studio Todoist project via Todoist MCP after user approval. Use when the user says "Create Issue", "create issue", or asks to turn chat discussion into Todoist tasks in Huntable CTI Studio. |
Create Issue
Turns chat-surfaced problems/bugs (or user-provided text) into Todoist tasks in the Huntable CTI Studio project. Default section: Intake. User may override with a section name (e.g. "Up Next", "WIP").
When to use
- User says "Create Issue" or "create issue"
- User asks to log bugs/tasks from the conversation in Huntable CTI Studio/Todoist
Workflow
1. Gather content
- If user did not provide title/description: Summarize problems or bugs from the open chat into a single, clear issue (or one per distinct problem if that’s what the user wants).
- If user provided title and/or description: Use those; fill in only what’s missing from the chat.
2. Propose draft
Verbosity principle: Write the Description (and subtask descriptions) as if the implementing agent has never seen this conversation. Include: what is broken or needed, where in the codebase it lives (file paths, function names, relevant config keys if known), reproduction steps or triggering conditions, any constraints or prior decisions from the chat, and the expected outcome. A future agent should be able to implement correctly from the description alone — do not sacrifice completeness for brevity.
Output a single Create Issue Proposal in this shape:
## Create Issue Proposal
**Title:** [Short, actionable title]
**Description:**
[Full context for a cold agent: what’s wrong or needed, where it lives (files/functions/config),
how to reproduce or trigger it, any relevant constraints or decisions from the chat,
and what "done" looks like. Length should match complexity — do not truncate.]
**Section:** Intake *(or user-specified: Up Next | WIP | Someday / Maybe)*
**Subtasks:** *(none | or list below)*
- **1.** [Subtask title] — [What to do, where, and any non-obvious details]
- **2.** …
- Subtasks: Add them only when the issue naturally breaks into 2+ concrete, separate steps or sub-bugs. Otherwise use "(none)". Each subtask description should also be self-contained.
Do not call Todoist yet. Ask for approval, e.g. “Approve to create in Huntable CTI Studio?” or “Say 'yes' / 'go' to create, or edit Title/Description/Section/Subtasks.”
3. Apply user feedback
- If the user edits Title, Description, Section, or Subtasks, update the proposal and repeat until they approve (or cancel).
4. Create in Todoist (only after approval)
When the user clearly approves (e.g. “yes”, “go”, “create it”):
-
Resolve project and section (official Todoist MCP: find-projects, find-sections)
- Call find-projects with
{"search": "Huntable CTI Studio"} (or no search and find by name in the list). Get the project id for Huntable CTI Studio.
- Call find-sections with
{"projectId": "<Huntable CTI Studio id>", "search": "<Section>"} (e.g. "Intake") or omit search and find the section by name. Get the section id. Match case-insensitively; normalize "Up Next", "WIP", "Someday / Maybe" if needed.
-
Create the main task (official Todoist MCP: add-tasks)
- Call add-tasks with
{"tasks": [{"content": "<Title>", "description": "<Description>", "projectId": "<Huntable CTI Studio id>", "sectionId": "<resolved section id>"}]}. From the response, capture the created task’s id for subtasks.
-
Create subtasks (if any)
- Call add-tasks with
{"tasks": [{"content": "<Subtask title>", "parentId": "<main task id>"}, ...]} for each subtask (optionally include description per subtask). Subtasks inherit project/section from the parent.
-
Report
- Confirm: main task (+ link if returned) and count of subtasks created.
- If section or project couldn’t be resolved, say what failed and do not create.
Section names
Use the exact section names from the Huntable CTI Studio board when matching (after normalizing case):
- Intake (default)
- Up Next
- WIP
- Someday / Maybe
- Cancelled (use only if user explicitly asks for it)
- find-projects:
{"search": "Huntable CTI Studio"} (or omit for all) → returns projects with id, name. Use Huntable CTI Studio’s id.
- find-sections:
{"projectId": "<project id>", "search": "Intake"} (or omit search) → returns sections with id, name. Use section’s id.
- add-tasks:
{"tasks": [{"content": "...", "description": "...", "projectId": "...", "sectionId": "..."}]} for main task; response includes created task id. For subtasks: {"tasks": [{"content": "...", "parentId": "<main task id>"}, ...]}.
Setup: Uses OAuth (no token in config). Restart Cursor after editing .cursor/mcp.json. On first use, complete the Todoist sign-in when prompted.
Example proposal
## Create Issue Proposal
**Title:** Dashboard sort drops active filters when changing column
**Description:** On the Articles table, changing sort by column clears current filters (source, date range). Reproduces in Chrome; need to confirm other browsers.
**Section:** Intake
**Subtasks:**
- **1.** Reproduce and document exact steps — Include screen, filters, and sort column.
- **2.** Fix filter reset on sort change — Preserve existing filters when sort is updated.
After user says “yes” or “go”, resolve Huntable CTI Studio + Intake, create the main task, then the two subtasks with parentId set to that task’s id.