Bring Your Own AI

Connect ChatGPT, OpenAI Codex, Claude, Cursor, LM Studio, Claude Desktop, and any MCP-compatible AI agent to your PrimeTask workspace - locally, on your terms.

PrimeTask doesn't subscribe you to an AI model. It doesn't lock you into one vendor. Instead, it speaks MCP - the Model Context Protocol - so the AI tool you already use can read and interact with your workspace directly. ChatGPT desktop, OpenAI Codex, Claude Code, Cursor, LM Studio, Claude Desktop, and any other MCP-compatible client can connect.

The server runs on your computer. Your data stays on your computer. You choose what the agent can see, what it can change, which Spaces it can touch, and which tools it can call. Every command is written to an audit log you can review.

For the Integrations category hub, see Integrations Overview. For what the agent can do specifically on PrimeFlow canvases, see PrimeFlow and MCP.

Local only

The MCP server runs on your machine. PrimeTask never sends your data to any server. The AI agent you connect may send data to its own cloud provider (Anthropic, OpenAI, and so on) - only connect agents you trust.

Agents work on the active Space

Tools operate on the currently active Space. Tell the agent to switch Spaces first, or switch in the UI. Space Access settings control which Spaces the agent is allowed to touch.

What you can do

Connect any MCP-compatible AI tool

to PrimeTask.

Let the agent read your workspace

tasks, projects, notes, CRM, canvases, focus sessions, time entries, and more.

Let the agent make changes

create tasks, build projects, run focus sessions, update CRM, build canvases - or keep it read-only.

Scope access per Space

the agent sees only the Spaces you allow.

Choose which tools are exposed

with preset profiles or per-category toggles, so small models aren't overwhelmed.

Review everything

in the audit log.

Disconnect at any time

by toggling the server off.

Quick Start

1. Enable the server

1

Step 1

Open Settings → External Integrations.

2

Step 2

Enable the MCP Server.

3

Step 3

A consent explainer appears. Enable the server after reading it.

4

Step 4

PrimeTask generates your API key automatically.

2. Connect Your AI Tool

ChatGPT desktop and OpenAI Codex

One setup connects PrimeTask to both normal ChatGPT and Codex conversations in the ChatGPT desktop app.

1

Step 1

Keep PrimeTask open with the MCP Server enabled.

2

Step 2

Choose the Read, Write, Space Access, and Tool Catalog permissions you want ChatGPT and Codex to use.

3

Step 3

Under Quick Setup, click ChatGPT + Codex.

4

Step 4

In the setup window, copy and run the secure key command. PrimeTask provides Terminal instructions on macOS and PowerShell instructions on Windows.

5

Step 5

Copy the PrimeTask API key, paste it into the terminal prompt, and confirm it. The key stays hidden while you paste it.

6

Step 6

Copy and run the Codex registration command.

7

Step 7

Fully quit and reopen the ChatGPT desktop app.

8

Step 8

Start a new ChatGPT or Codex conversation and ask it to list the available PrimeTask tools.

Keep the key private

Never paste your PrimeTask MCP API key into a chat message. Use only the secure prompt provided by the Codex setup window.

Desktop app only

This local connection works in both normal ChatGPT and Codex conversations in the ChatGPT desktop app. It does not carry over to other ChatGPT installations.

No Mac restart required

Setup works immediately after you reopen the ChatGPT desktop app. If you restart your Mac later and PrimeTask tools are unavailable, reopen Quick Setup → ChatGPT + Codex and repeat the secure key step before reopening ChatGPT.

Other MCP clients

Streamable HTTP (recommended):

Use the Streamable HTTP option in Quick Setup to copy the config:

{
  "primetask": {
    "command": "npx",
    "args": [
      "-y",
      "mcp-remote",
      "http://localhost:24842/mcp",
      "--header",
      "Authorization:${PRIMETASK_MCP_AUTH}"
    ],
    "env": {
      "PRIMETASK_MCP_AUTH": "Bearer pt_mcp_your_key_here"
    }
  }
}

Your key goes in the env section, never in args. Everything in args is visible to other programs running on your computer, so a key placed there is on show; the env section keeps it out of sight. Copy the setup from Quick Setup rather than typing it by hand and this is handled for you.

Merge, don't replace

Your AI tool may already keep its own settings in that same file. Add the PrimeTask entry alongside what is there rather than pasting over the file, or the file will no longer be readable and your tool will not start. If the file is empty, paste the whole thing.

Paste into your AI tool's MCP config file:

  • Claude Code: ~/.claude.json under projects → your-project → mcpServers
  • Cursor: ~/.cursor/mcp.json
  • LM Studio: MCP server settings (JSON config)
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json under mcpServers

mcp-remote is installed automatically via npx on first use. Requires Node.js.

Stdio (alternative):

Use the Stdio option to copy the config. The AI tool launches PrimeTask as a separate process:

{
  "primetask": {
    "type": "stdio",
    "command": "/Applications/PrimeTask.app/Contents/MacOS/PrimeTask",
    "args": ["--mcp-server"]
  }
}

3. Start Using

Once connected, your AI tool can access your tasks, projects, CRM, and more. Try asking:

  • "What are my overdue tasks?"
  • "Create a task called Review proposal with high priority"
  • "Start a 30-minute focus session on Write documentation"
  • "Show me the status of the Website Redesign project"

Security & Permissions

Authentication

Every HTTP request requires a Bearer token. The token is auto-generated when you first enable MCP and shown in Settings - copy it along with the config.

Regenerate the token from Settings when you want to rotate it. Update your AI tool's config with the new token afterwards.

Read / Write Permissions

  • Read (on by default) - list, search, and view tasks, projects, CRM data
  • Write (off by default) - create, update, delete, complete tasks and other data

Enable write permissions in Settings → MCP Server → Write toggle.

Space Access

Control which spaces AI agents can access:

  • All spaces - agent can access any space
  • Selected only - choose specific spaces from the checkbox list

Requests targeting a space not in the allowed list are rejected with a clear error.

Audit Logging

Every MCP tool call is logged. View the audit log in Settings → External Integrations → Audit Log. Each entry shows the tool name, parameters, timestamp, and whether it succeeded or was blocked.

Sensitive Field Filtering

PrimeTask automatically strips sensitive fields from all MCP responses: PIN hashes, encryption keys, passwords, secrets, and tokens are never exposed.

The PrimeTask Lock Screen

If you lock PrimeTask, your agent stops with it. Locking the app covers your agent as well as your screen, so a connected AI tool can't keep reading and changing your work while you're away from your desk. It doesn't disconnect while it waits, and it tells you PrimeTask is locked instead of reporting a fault. Unlock and it carries on from where it stopped.

If you'd rather it kept working while you're away, open Settings → Security and turn on the switch for letting AI agents work while locked. It's off unless you turn it on, and PrimeTask explains what it means before it takes effect. See Security Settings.

Feature Gating

Some tools require a Pro licence.


Tool Catalog & Profiles

PrimeTask exposes more than 100 tools, which can be a lot for AI clients with limited context windows. The Tool Catalog in Settings lets you control which tools are available, using either preset profiles or per-category toggles.

Why profiles exist

Some AI tools (like LM Studio or smaller local models) perform better with a focused set of tools rather than the full catalog. Profiles let you expose only the tools relevant to your workflow, reducing noise and improving tool selection accuracy.

Preset Profiles

Select a profile card to instantly configure the tool catalog:

ProfileWhat's includedBest for
FullEvery tool available on your planChatGPT, OpenAI Codex, Claude Code, Cursor, Claude Desktop - clients that handle large tool sets well
Core TasksTasks, projects, notes, goals, time, focus, quick notes, reminders, comments, utilityGeneral productivity - no CRM, no canvas, no dependencies
ProjectsTasks, projects, notes, goals, milestones, dependencies, team, time, reminders, comments, utilityProject planning workflows
PrimeFlowTasks, projects, PrimeFlow canvas tools, utilityCanvas-focused work with minimal surrounding context
CRMProjects, CRM (contacts, companies, activities, tasks), team, reminders, utilitySales and relationship management (Pro)
Custom FieldsTasks, projects, custom field tools, utilityField management workflows (Pro)
MinimalTasks, checklist, utilityLightest catalog for constrained clients

Profiles marked (Pro) are part of the Pro tier - see License Settings to upgrade.

Per-Category Customisation

Click "Customise categories" below the profiles to expand individual category toggles. Each toggle enables or disables a group of related tools (e.g. "Notes", "Focus", "Time"). Toggling any category manually switches the profile to Full (custom configuration).

Some categories (CRM, Custom Fields, Dependencies, Team) are part of the Pro tier.

Naming your assistant

Below the categories you can set the name your assistant writes under when it comments on a task. It defaults to Agent. A thread that mixes people and an assistant is much easier to read a month later when it says which was which, so pick something you will recognise.

See Task Comments for what it can do in a thread, and what it cannot.

Applying changes

  • Streamable HTTP: Profile changes take effect on the next client reconnect - no app restart needed.
  • Stdio: The tool list is set at process launch. Changing profiles requires the AI tool to reconnect.

Tools Reference (more than 100 tools)

Changes made through MCP appear in the relevant open PrimeTask views automatically. After a PrimeTask update adds or changes tools, fully quit and reopen PrimeTask, then reconnect your AI tool so it receives the current catalog.

Spaces (4 tools)

ToolDescription
list_spacesList all spaces
get_active_spaceGet the currently active space
switch_spaceSwitch the active space
list_space_membersList members of the active space (for collaborative assignment)

Tasks (9 tools)

ToolDescriptionKey Parameters
list_tasksList and filter tasksproject_id, status_id, priority_id, due_before, due_after, tags[], search, limit
get_taskGet task with subtasks and checklisttask_id
get_todayToday's tasks and overdue-
search_tasksFull-text searchquery, limit
create_taskCreate a new taskname*, project_id, status_id, priority_id, due_date, start_date, duration, tags[], description, assignees[], checklist[], sync_to_calendar, sync_to_reminders
update_taskUpdate task fieldstask_id*, name, status_id, priority_id, due_date, start_date, duration, description, tags[], assignees[], completion_percentage, project_id, milestone_id, sync_to_calendar, sync_to_reminders
set_task_recurrenceSet or remove recurring scheduletask_id*, frequency (daily/weekly/monthly/yearly/custom), interval, unit, days_of_week[], end_date
complete_taskMark task as completetask_id*
delete_taskDelete a task. For recurring tasks, the optional intent parameter controls whether only this occurrence is deleted or the entire recurring series is ended.task_id*, intent (occurrence_only or this_and_all_following)

Name resolution: project_id accepts a project name or UUID. assignees accepts display names or member IDs.

Apple Calendar and Reminders (macOS): Ask your agent to add a task to your reminders or your calendar and it can, using sync_to_reminders and sync_to_calendar. Both integrations are set up in Settings and each syncs one space, so your agent checks get_system_info first and tells you if an integration is switched off, or if the task belongs to a different space than the one you sync. Reading a task back afterwards shows whether the reminder or event was actually created. See Apple Reminders and Calendar.

Subtasks & Dependencies (4 tools)

ToolDescription
create_subtaskCreate a subtask under a parent task
list_subtasksList subtasks for a task
add_dependencyAdd a prerequisite dependency (accepts task name or ID)
remove_dependencyRemove a prerequisite dependency (accepts task name or ID)

Checklist (3 tools)

ToolDescriptionKey Parameters
update_checklist_itemComplete, uncomplete, or rename a checklist itemtask_id* (name or ID), item* (text or index), completed, text
add_checklist_itemAdd a new item to a task's checklisttask_id* (name or ID), text*
remove_checklist_itemRemove an item from a task's checklisttask_id* (name or ID), item* (text or index)

Projects (8 tools)

ToolDescriptionKey Parameters
list_projectsList projects (filter by status)status
get_projectGet project details with task count, progress, and healthproject_id*
create_projectCreate a new projectname*, color, description, status, deadline, start_date, crm_enabled, crm_mode
update_projectUpdate project fieldsproject_id* (name or ID), name, description, color, status, deadline, start_date, crm_enabled, crm_mode
archive_projectArchive a projectproject_id* (name or ID)
unarchive_projectUnarchive a projectproject_id* (name or ID)
get_project_statsComprehensive progress breakdown with weighted metricsproject_id* (name or ID)
get_project_healthHealth status, trend, recommendations, overdue count, next milestoneproject_id* (name or ID)

get_project_stats returns: weighted progress across tasks/milestones/goals/CRM, per-bucket breakdown (progress, count, completed), overdue count, status/priority distribution, and project timeline.

get_project_health returns: health status (on_track/at_risk/behind/critical), progress vs expected, trend (improving/stable/declining), overdue task count, next milestone with progress, and up to 5 actionable recommendations. Same calculation as the in-app Health Assistant.

Notes (6 tools)

ToolDescriptionKey Parameters
list_notesList notes for a projectproject_id*
get_noteGet full note contentnote_id*
create_noteCreate a project note (HTML supported)project_id*, content*, status
update_noteUpdate note content/statusnote_id*, content, status, pinned
convert_project_note_to_taskConvert a note to a task - uses content as description, links to same projectnote_id*, task_name, priority, delete_note (default: true)
delete_noteDelete a notenote_id*

Goals & Milestones (6 tools)

ToolDescriptionKey Parameters
list_goalsList goals for a projectproject_id*
create_goalCreate a goal with key resultsproject_id* (name or ID), name*, description, type (outcome/output/process), priority (low/medium/high/critical), linked_milestone_ids[], key_results[] (name, metric, start_value, target)
update_goalUpdate goal fieldsgoal_id*, name, description, type, priority, status (not_started/on_track/at_risk/behind/completed), progress, linked_milestone_ids[]
list_milestonesList milestones for a projectproject_id*
create_milestoneCreate a milestoneproject_id* (name or ID), name*, description, type (phase/deliverable/decision/external/release), priority, due_date, linked_goal_ids[]
update_milestoneUpdate milestone fieldsmilestone_id*, name, description, type, priority, due_date, completed, linked_goal_ids[]

Linking tasks to milestones: Use update_task with milestone_id to link a task to a milestone (or null to unlink).

Project Team (3 tools)

ToolDescriptionKey Parameters
list_team_membersList team membersproject_id* (name or ID)
add_team_memberAdd a member to the teamproject_id*, name*, email, role (owner/admin/member/viewer), contact_id, company_id
remove_team_memberRemove a memberproject_id*, member_id* (name or ID)

Note: Linking CRM contacts/companies as team members requires Pro. Manual members work on Standard.

CRM - Contacts (7 tools) - Pro

ToolDescriptionKey Parameters
list_contactsList or search contacts in shared CRM, one project's isolated CRM, or every CRM sourcesearch, company_id, project_id, include_isolated, limit
get_contactGet complete contact details with linked workcontact_id*, project_id
create_contactCreate a contact with the same editable details available in PrimeTaskContact details, companies, projects, links, tags, notes, custom_fields, project_id
update_contactUpdate a contact without replacing omitted detailscontact_id*, editable contact details, project_id
delete_contactDelete a contactcontact_id*
create_contactsCreate several contacts in one request, each taking the same details as create_contactcontacts*
update_contactsUpdate several contacts in one request, each taking the same details as update_contactcontacts*

CRM - Companies (10 tools) - Pro

ToolDescriptionKey Parameters
list_companiesList or search companies in shared CRM, one project's isolated CRM, or every CRM sourcesearch, status, project_id, include_isolated, limit
get_companyGet complete company details with contacts and linked workcompany_id*, project_id
create_companyCreate a company with the same editable details available in PrimeTaskCompany details, address, links, tags, projects, custom_fields, project_id
update_companyUpdate a company without replacing omitted detailscompany_id*, editable company details, project_id
delete_companyDelete a companycompany_id*
add_company_relationshipAdd a relationship between two companies and keep the reverse relationship in stepcompany_id*, related_company_id*, relationship_type*, notes, project_id
update_company_relationshipChange an existing company relationship on both companiescompany_id*, related_company_id*, relationship_type*, notes, project_id
remove_company_relationshipRemove a company relationship from both companiescompany_id*, related_company_id*, project_id
create_companiesCreate several companies in one request, each taking the same details as create_companycompanies*
update_companiesUpdate several companies in one request, each taking the same details as update_companycompanies*

Several records at once: The plural tools take a list and apply each entry on its own, so one bad entry does not stop the rest. You get back how many were requested, how many worked, and what was wrong with any that did not, so your agent can fix those and try again. Useful when you hand over a spreadsheet of contacts. Up to 100 records per request.

Shared and isolated CRM: Leave project_id out to work with shared CRM. Provide a project name or ID to work inside that project's isolated CRM. For a complete search across shared and isolated CRM, use include_isolated when listing contacts or companies.

Name resolution: Contact, company, and project references accept a name or ID. Use an ID when more than one record has the same name.

CRM - Tasks (4 tools) - Pro

ToolDescription
list_crm_tasksList CRM tasks
create_crm_taskCreate a CRM task with contacts, companies, project links, milestone, assignees, checklist, tags, dates, reminders, and custom fields
update_crm_taskUpdate the complete CRM task record without replacing omitted details
complete_crm_taskComplete a CRM task

CRM - Activities (4 tools) - Pro

ToolDescriptionKey Parameters
list_activitiesList or filter CRM activities, including activities in isolated CRMcontact_id, company_id, type, project_id, limit
log_activityLog calls, emails, meetings, notes, demos, proposals, completed work, or LinkedIn activity with the relevant detailstype*, contact/company, outcome, date, type-specific details, project_id
update_activityCorrect or enrich an existing activity without recreating itactivity_id*, changed details, project_id
delete_activityDelete an activityactivity_id*, project_id

CRM - Message Templates (7 tools) - Pro

Reusable LinkedIn outreach templates with placeholders ({first_name}, {company}, fallbacks like {first_name|there}, namespaced like {company.industry}). The agent can build your library, personalise messages for any contact, and optionally log the activity on the contact's timeline so success rates stay accurate.

ToolDescription
list_crm_templatesList or search templates, filter by type or by project's isolated CRM
get_crm_templateRead one template's full content and usage stats
create_crm_templateCreate a new template (supports isolated CRM via project_id)
update_crm_templateEdit name, type, content, or tags
delete_crm_templateRemove a template
render_crm_templatePreview a template against a contact, no recording (returns rendered text + which placeholders are missing)
copy_crm_personalised_templateRender against a contact, record the usage, and optionally log the activity on the contact's timeline

Try these prompts

"Write me three follow-up templates for SaaS founders, using the contact's first name and company. Save them in my library." "Show me a personalised version of my 'Quick check in' template for Sarah Lee at Acme. Don't send it, just show me what it would look like." "Send my 'Connection request - value-led' template to Sarah Lee, log it on her timeline, and include 'their recent funding round' as the specific opening line." "Which of my follow-up templates has the highest reply rate? Suggest two improvements to the lowest-performing one."

Tags, Statuses, Priorities (3 tools)

ToolDescription
list_tagsAll tags in the active space
list_statusesAll status configurations
list_prioritiesAll priority configurations

Time Tracking (4 tools)

ToolDescription
start_timerStart a timer on a task
stop_timerStop the active timer (optional note)
get_active_timerGet the currently running timer
list_time_entriesList time entries (filter by task, project, date range)

Focus Mode (4 tools)

ToolDescription
start_focusStart a focus session on a task (name or ID, default 25 min)
stop_focusEnd the current focus session
take_breakToggle break - if active, starts a break; if on break, resumes focus
get_focus_statusGet current session: task, elapsed time, breaks, status

PrimeFlow (11 tools)

ToolDescriptionKey Parameters
list_canvasesList all canvasesinclude_archived
get_canvasGet canvas with all nodes and edgescanvas_id*
create_canvasCreate an empty canvasname*
rename_canvasRename a canvascanvas_id*, name*
add_nodeAdd a node to a canvascanvas_id*, type*, position* {x,y}, data*
update_nodeUpdate a node's data or positioncanvas_id*, node_id*, position, data (partial merge)
remove_nodeRemove a nodecanvas_id*, node_id*
add_edgeConnect two nodescanvas_id*, source_node_id*, target_node_id*, label
remove_edgeRemove a connectioncanvas_id*, edge_id*
bulk_canvas_updateAdd/remove multiple nodes and edges in one atomic operationcanvas_id*, nodes[], edges[], remove_nodes[], remove_edges[]
delete_canvasDelete a canvascanvas_id*

bulk_canvas_update is the recommended way to build complex canvases. Use ref on nodes and "ref:<refName>" in edge source/target to reference nodes created in the same batch - no need to know IDs ahead of time. Mind map nodes get default colors automatically.

27 supported node types:

CategoryTypes
Mind MapcentralTopic, mainTopic, subTopic, floatingTopic
Projectproject, projectGoal, projectMilestone, projectNote
Tasks/CRMtask, checklist, contact, company, activity
StickersemojiSticker, textSticker, stickyNote
Mediayoutube, twitter, image, link, pdf, file, folder
Structuregroup, quickNotes, portal, crossSpacePortal
Advanceddocumentation, thirdPartyApp, mermaid

Node data examples:

Documentation node:

{"type": "documentation", "data": {"title": "API Docs", "content": "<h2>Auth</h2><p>Use Bearer tokens</p>", "nodeType": "documentation"}}

Mermaid diagram from text:

{"type": "mermaid", "data": {"label": "User Flow", "code": "graph TD\n  A[Login] --> B{Auth?}\n  B -->|Yes| C[Dashboard]", "nodeType": "mermaid"}}

Portal (link to another canvas):

{"type": "portal", "data": {"label": "Backend Design", "targetCanvasId": "canvas-id", "targetCanvasName": "Backend", "nodeType": "portal"}}

Mind map node:

{"type": "centralTopic", "data": {"label": "Project Overview"}}

The agent can build interconnected canvas systems - create multiple canvases, add mind maps, documentation, diagrams, and link them with portal nodes and edges.

Custom Fields (11 tools) - Pro

Field Values:

ToolDescriptionKey Parameters
list_custom_fieldsList field definitions for the space-
get_field_valuesGet custom field values for an entityentity_type* (task/project/contact/company), entity_id*
set_field_valueSet a custom field valueentity_type*, entity_id*, field_id*, value*
clear_field_valueClear a custom field valueentity_type*, entity_id*, field_id*

Field Definitions:

ToolDescriptionKey Parameters
create_custom_fieldCreate a field definitionname*, type* (14 types), description, required, entity_scope[], options[], currency_code, currency_role, relationship config with rollup
update_custom_fieldUpdate a field's complete configuration, including its scope, choices, ranges, currency, and relationship settingsfield_id*, display settings, entity_scope[], options[], min_value, max_value, relationship
delete_custom_fieldDelete a field and all its valuesfield_id*

Field Tabs (per-project):

ToolDescriptionKey Parameters
list_field_tabsList tabs and their Show As mode for a projectproject_id* (name or ID)
create_field_tabCreate a tab and choose whether its rows show the project, contacts, companies, tasks, or linked projectsproject_id*, name*, color, field_ids[], row_source
update_field_tabRename a tab, change its Show As mode, or safely add and remove columnstab_id*, project_id, name, color, row_source, add_field_ids[], remove_field_ids[]
delete_field_tabRemove a tabtab_id*

Supported field types: text, textarea, number, currency, date, datetime, dropdown, multi_select, checkbox, rating, progress, url, email, phone, relationship.

Automatic tab updates: When an agent creates a field, PrimeTask adds it to existing Project Fields tabs whose Show As mode matches the field's scope. Changing a field's scope also updates the matching tabs. The agent does not need to know every project or tab name.

Relationship fields support bidirectional links and rollup aggregations (sum, average, minimum, maximum, count) across linked entities. Setting or clearing a bidirectional value keeps both sides of the relationship in step.

Adding and replacing columns

Use add_field_ids or remove_field_ids to change selected columns without affecting the others. Supplying field_ids replaces the tab's complete column selection.

Financial setup example:

1

Step 1

create_custom_field with type: "currency", currency_code: "USD", currency_role: "budget"

2

Step 2

create_custom_field with type: "currency", currency_role: "expense"

3

Step 3

create_field_tab on the project with name "Finance" containing both fields

4

Step 4

set_field_value to set budget amount on the project

Quick Notes (4 tools)

ToolDescriptionKey Parameters
list_quick_notesList quick notes in the active space-
add_quick_noteAdd a quick note - appears in dashboard widgettext*
convert_note_to_taskConvert a quick note to a task (tagged "QuickNote")note_id* (ID or text)
delete_quick_noteDelete a quick notenote_id* (ID or text)

Reminders (6 tools)

ToolDescriptionKey Parameters
set_reminderAdd a reminder to a task. Resolves the right kind (before-due, at-time-on-due-day, or absolute) from the spec and the task's due date automatically.task_id* (name or ID), spec*
list_remindersList reminders on a task with their computed fire time and a fired/not-fired indicatortask_id* (name or ID)
update_reminderRe-anchor an existing reminder to a new spec. Preserves the reminder's id and original author.task_id*, reminder_id*, spec*
delete_reminderRemove a reminder from a tasktask_id*, reminder_id*
snooze_reminderPush a reminder forward. Replaces the original with a fresh absolute reminder. Defaults to 15 minutes if spec is omitted.task_id*, reminder_id*, spec
list_upcoming_remindersScan all tasks for reminders firing in a time window. Returns task name, fire time, and a plain-language label. Sorted by fire time.window (today / this-week / next-24h), space_id

spec formats: relative offsets (5m, 30m, 1h, 2h, 1d, 1w), clock times (9am, 9:30am, 14:30, 5pm), or full ISO timestamps (2026-05-20T14:30:00.000Z). The agent doesn't need to know whether the task has a due date. The handler picks the right anchoring automatically. On a task with no due date, a relative offset like 30m means "30 minutes from now".

Reminders in shared spaces are personal. When the agent sets a reminder on your behalf, it's stamped with your identity, so only your devices fire. Teammates in the same space won't be paged.

Comments (4 tools)

ToolDescriptionKey Parameters
list_commentsRead the discussion on a task: decisions, blockers, progress notes and replies. Filter by words, type, status, pinned or bookmarked.task_id* (name or ID), query, type, status, pinned, bookmarked, limit, space_id
create_commentAdd a comment to a task. Written in Markdown, with replies, mentions, a type and a status.task_id*, content*, type, status, is_pinned, is_bookmarked, reply_to, mentions
update_commentEdit a comment the assistant wrote earliercomment_id*, content, type, status, is_pinned, is_bookmarked, mentions
delete_commentDelete a comment the assistant wrote earliercomment_id*

Comments your assistant writes are labelled as its own. They carry the agent name you choose in Settings → External Integrations, so a thread always makes clear which entries were written by a person and which by an assistant.

Your assistant can only change its own comments. It can read everything on a task, but editing and deleting are limited to comments it wrote itself, so your own words are never rewritten. You can edit or delete anything in the thread, including your assistant's comments.

Everything written here behaves like a comment you typed. Markdown renders, links to videos, posts and images turn into previews, mentioning another task links the two together, and the comment appears in search and in the comment count on your task list.

Utility (4 tools)

ToolDescription
get_dashboard_statsOverview stats: total, completed, overdue, in progress
get_system_infoApp version, tier, active space, available features, which Apple Calendar and Reminders integrations are set up and the space each one syncs, and how you prefer dates and times displayed
search_docsSearch PrimeTask documentation - returns matching articles with summaries
get_docGet a specific documentation article by slug

Documentation search lets AI agents answer questions about PrimeTask features using the built-in docs. Ask your agent "How do I use Quick Add?" or "Show me the docs for recurring tasks" - it searches PrimeDocs and returns the relevant article.


Getting the best results

Your agent works well from plain instructions. These few habits make a noticeable difference.

Use everyday names, not IDs

Say "link Sarah Chen to Quantum Ventures" rather than hunting for identifiers. Contacts, companies, projects, statuses, tags and assignees are all matched by name. Reach for an ID only when two records share a name and you need to be specific.

Name the project when you work inside one

A project can keep its own separate CRM. Those contacts and companies do not appear in your main lists, so tell your agent which project you mean: "add a note to Sarah Chen in the Zenith project". To count or search everything at once, ask for shared and project records together.

Ask for many at once

Handing over a list of twenty contacts works better as one request than twenty. Your agent reports what went in and what did not, so you can fix a few rows rather than starting over.

Dates can be written your way

Type dates however you normally would. Your agent reads them the way you have set PrimeTask to display them, so a day-first date is not mistaken for a month-first one. Writing the year first, as in 1985-04-23, is always understood and never ambiguous.

Say what should happen next

Requests like "add this to my reminders" or "put it on my calendar" work on macOS once those integrations are set up. If one is switched off, or the task belongs to a different space than the one you sync, your agent tells you rather than quietly skipping it.

Ask it to check its work

Your agent can read records back, so ask it to confirm. "Add the contact, then show me what you saved" catches a misunderstanding immediately rather than later.

Start read-only

Leave writing switched off while you get a feel for how your agent behaves. Ask it to summarise, search, and report first. Turn writing on when you are comfortable, and check the audit log to see exactly what it did.

Prompts (5 templates)

MCP prompts are pre-built templates that give AI agents structured context from your workspace. The agent calls prompts/get and PrimeTask gathers the relevant data automatically.

PromptDescriptionParameters
daily_standupYesterday's completed, today's planned, blockers-
weekly_reviewProgress by project, completed tasks, upcoming deadlines-
project_statusProject health, milestones, goals, blockersproject (name or ID)
crm_summaryRecent activities, follow-ups, pipeline (Pro)-
overdue_triageOverdue tasks with suggested actions-

Example Usage

Ask your AI agent:

  • "Use the daily_standup prompt to generate my standup"
  • "Run project_status for Website Redesign"
  • "Help me triage overdue tasks"

You can also browse prompts in the Command Explorer (Settings → External Integrations → Commands → Prompts tab).


Transport Options

Streamable HTTP (recommended)

  • Runs inside the PrimeTask app - no separate process needed
  • Multiple AI tools connect simultaneously
  • Auto-starts when MCP is enabled
  • Port: 24842 (fixed, localhost only)
  • Bearer token authentication via mcp-remote bridge
  • Uses npx mcp-remote to bridge between AI tools and the HTTP server

Stdio

  • AI tool launches PrimeTask as a separate process (--mcp-server)
  • One client per process
  • No authentication needed (local pipe)
  • Good for CLI-based tools

Examples

Create a task with a checklist

AI: "Create a task called 'Sprint Planning' with high priority in the API project, 
     with a checklist: review backlog, assign stories, estimate points"

The agent calls create_task with:

{
  "name": "Sprint Planning",
  "priority_id": "high",
  "project_id": "API Project",
  "checklist": [
    {"text": "Review backlog"},
    {"text": "Assign stories"},
    {"text": "Estimate points"}
  ]
}

Start a focus session

AI: "Start a 45-minute focus session on the Design Review task"

The agent calls start_focus with:

{
  "task_id": "Design Review",
  "duration": 45
}

Add a task dependency

AI: "Make 'Write tests' depend on 'Implement API'"

The agent calls add_dependency with:

{
  "task_id": "Write tests",
  "prerequisite_id": "Implement API"
}

Set a reminder

AI: "Remind me about the John Doe call in 30 minutes"

The agent calls set_reminder with:

{
  "task_id": "John Doe call",
  "spec": "30m"
}

Log a CRM activity Pro

AI: "Log a 30-minute call with John Smith about the Q2 proposal"

The agent calls log_activity with:

{
  "type": "call",
  "contact_id": "John Smith",
  "subject": "Q2 proposal discussion",
  "duration": 30
}

Troubleshooting

"MCP server disabled"

Enable the MCP Server in Settings → External Integrations.

"Invalid API key"

Copy the current API key from Settings → External Integrations → MCP Server and paste it into your AI tool's config as the Bearer token.

"Write operations not allowed"

Turn on the Write permission in Settings → External Integrations → MCP Server.

"PrimeTask is locked"

PrimeTask is sitting on its lock screen, so your agent is waiting. Unlock the app and it carries on from where it stopped, with nothing to restart. To let agents keep working while it's locked, turn that on in Settings → Security. See The PrimeTask Lock Screen above.

"Space access denied"

The active Space isn't in your allowed list. Open Settings → External Integrations → MCP Server → Space Access and add the Space.

"Feature requires PrimeTask Pro"

CRM and Custom Fields tools require Pro. Tasks, projects, focus mode, and time tracking work on every license.

"Needs authentication" error in Claude Code

Use the Streamable HTTP config with mcp-remote - it handles auth correctly. The direct type: "http" format triggers OAuth, which PrimeTask doesn't use.

Connection fails in Claude Code

1

Step 1

Make sure PrimeTask is running with MCP enabled.

2

Step 2

Verify mcp-remote is available: npx mcp-remote --help.

3

Step 3

Check the API key in the env section of your config matches the one in PrimeTask Settings.

4

Step 4

Confirm PrimeTask is the source of truth. If you regenerated the key, update the client config.

Tools not showing up

Restart your AI tool after adding or changing the MCP config. Tools are discovered at session start.

Claude Desktop won't connect

If Claude Desktop (or another MCP client) can't reach PrimeTask, work through this once, in order:

1

Step 1

In PrimeTask, open Settings → External Integrations and confirm the MCP Server is on.

2

Step 2

If you want the agent to create or change things, not just read, turn on the Write permission in the same place. See Read / Write Permissions above.

3

Step 3

Make sure the Space you want the agent to work in is allowed under Space Access, and switch to it - the agent works on the active Space.

4

Step 4

Pick a Tool Catalog profile if you haven't, so the agent sees the tools you expect.

5

Step 5

Copy the current API key from Settings → External Integrations → MCP Server.

6

Step 6

In your AI tool's config (for Claude Desktop, claude_desktop_config.json under mcpServers), put the key in the env section exactly as shown in Connect Your AI Tool above. If that file already has other settings in it, add the PrimeTask entry alongside them rather than replacing the file. The connection uses port 24842.

7

Step 7

Save the config and fully quit and reopen your AI tool. Most clients only read their MCP config at startup.

8

Step 8

Confirm it connected: PrimeTask shows the MCP Server as on, and your AI tool lists the PrimeTask connector as connected. Some tools show this under a developer or connectors view.

Smaller tool set for fussy clients

If your AI tool connects but behaves erratically, switch to a smaller Tool Catalog profile such as Core Tasks, Projects, or Minimal. See Tool Catalog & Profiles above.

It worked before, and stopped after an update

Updating your AI tool can drop the PrimeTask connection or reset where it looks for its config. If task creation suddenly stops after you update Claude Desktop or another client:

1

Step 1

Restart the AI tool first. That alone often restores the connection.

2

Step 2

If it's still failing, reopen the AI tool's config and confirm the PrimeTask entry and the API key are still there and unchanged.

3

Step 3

As a reset, toggle the MCP Server off and back on in PrimeTask, then restart the AI tool.

After you regenerate the API key

Regenerating your key replaces it immediately, and the old key stops working right away. Any AI tool still using the old key will fail until you update it:

1

Step 1

Copy the new key from Settings → External Integrations → MCP Server.

2

Step 2

Paste it into your AI tool's config in place of the old one.

3

Step 3

Fully restart the AI tool so it picks up the new key.

Regenerating can't be undone

A new key replaces the old one for good, and every connected tool using the old key stops working until you update each one. PrimeTask asks you to confirm first, so you won't trigger it by accident.

First request fails, then a retry works

If the first thing you ask fails but the same request works on a second try - or the connection seems to drop part-way through a session - that's usually the AI tool re-establishing its link to PrimeTask, most often right at the start of a session. Nothing in PrimeTask is lost. If it keeps happening:

1

Step 1

Restart the AI tool so it connects fresh.

2

Step 2

Make sure PrimeTask is open and the MCP Server is on before you start the session.

3

Step 3

For a scheduled or automated run, give the connection a moment to settle before the first request.

Things worth knowing

Your data stays on your computer

PrimeTask's MCP server runs locally and never sends data to any server. When you connect an AI agent, that agent's cloud model may receive whatever it sends to its provider - that's the agent's business, not PrimeTask's. Read-only mode is the safe default if you're not sure.

Start Read-only, upgrade when ready

Out of the box the server is read-only. Most useful patterns - standups, reviews, triage, research - work in read-only. Turn Write on when you want the agent to actually make changes.

Try the built-in prompts first

The five prompt templates (daily_standup, weekly_review, project_status, crm_summary, overdue_triage) are the fastest way to get useful output from a new agent connection. They gather the right data automatically.

Profiles help small models

A smaller local model doesn't need to see more than 100 tools. Pick a focused profile such as Core Tasks, Projects, or Minimal to improve tool selection. Full is best suited to clients that handle large tool catalogs well.

Audit log is your friend

Every tool call is logged. Review the audit log when you want to know exactly what the agent did, when, and with what parameters.

Disconnect any time

Toggle the server off in Settings and the agent can't reach PrimeTask. No other cleanup needed.

Common questions

"Which AI models can use this?"

Any MCP-compatible client. Today that includes ChatGPT desktop, OpenAI Codex, Claude Code, Claude Desktop, Cursor, LM Studio, and more. Support for MCP is spreading quickly - if your AI tool adds MCP, it can connect.

"Do I have to use Codex after setup?"

No. The same local connection works in both normal ChatGPT and Codex conversations in the ChatGPT desktop app. Fully quit and reopen the desktop app after setup, then start a new conversation in either mode.

"Do I need Pro?"

No for the server itself. Some tools require Pro because they touch Pro features (CRM, Custom Fields, Dependencies). Everything else works on every PrimeTask license.

"Can I use this with a local model?"

Yes - LM Studio is an example. Local models keep your data entirely on your machine; no cloud involved. Pair a local model with a smaller profile (Core Tasks or Minimal) for best results.

"Can I connect more than one agent at once?"

Yes - with Streamable HTTP, multiple AI tools connect simultaneously. Stdio is one client per process.

"How do I know what the agent did?"

Open the audit log in Settings → External Integrations → Audit Log. Every tool call is there with timestamp, parameters, and outcome.

"Does connecting an agent count against my tier?"

No. The MCP server itself doesn't consume anything. Your AI provider may charge for its own usage - that's between you and them.

Where to go next

If you want to…Read this
See what AI can do with PrimeFlow canvasesPrimeFlow and MCP
Configure MCP toggles and audit logExternal Integrations Settings
Use deep links (without an AI agent)External Integrations
Understand every integration PrimeTask offersIntegrations Overview
Upgrade for CRM and Custom Fields toolsLicense Settings

Related Articles