Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Your AI agent pulls backlog tasks into today, timeboxes them on the calendar and logs the actual time when you finish. Sign in to Sunsama once in your own Cloud Browser. Sunsama also runs its own MCP server; Cotlet adds documented tools, REST for n8n and scripts, and one account for your other apps.
14 tools Read and write
Sunsama runs an official MCP server at api.sunsama.com/mcp with OAuth sign-in, and the beta ended on 27 Aug 2026. It has no documented public REST API (checked 6 Nov 2026). Cotlet adds 14 Sunsama tools that need no API key or developer setup, work inside the ChatGPT and Claude apps and run hosted around the clock, with REST for scripts and one account for your other apps.
| What you need | Official Sunsama MCP | Zapier app | Cotlet |
|---|---|---|---|
| Works in the ChatGPT and Claude apps | Yes | Through Zapier MCP | Yes |
| Tools documented with inputs | No list on the help page | Yes, listed actions | Yes, 14 tools |
| Timebox a task on the calendar | Yes, per Sunsama staff | Not listed | Yes |
| Log actual time on a task | Not exposed, 24 Jun 2026 | Not listed | Yes |
| Call it from a script or n8n | MCP clients only | Yes, in a Zap | Yes, REST |
| One account for other apps too | Sunsama only | Per app in Zapier | Yes |
Checked 6 Nov 2026. Sources: Sunsama User Manual: MCP (Model Context Protocol) · Sunsama roadmap: Sunsama API · Sunsama roadmap: MCP Server · Zapier: Sunsama integrations · Sunsama pricing
Once, in a browser we host for you.
Add one address to its settings.
It plans, timeboxes and logs.
We never keep your Sunsama password, and no tool touches your plan, billing or workspace members. Who can see your session
Enable Sunsama for agents. Make a Cotlet account, sign in to Sunsama in its Cloud Browser and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as an MCP server or custom connector in your agent.
Approve the connection. Chat apps open a Cotlet sign-in page. Code editors, n8n and scripts send an API key you create in the console.
One address, https://cotlet.dev/mcp/v1, carries Sunsama next to your other apps. The tools work in the Sunsama account signed in to the Cloud Browser. Enabled Sunsama after connecting? Refresh the connector to load the new tools.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-sunsama \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-sunsama": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-sunsama]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: sunsama_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: sunsama_write create_task without a date files the task in the backlog, and a channel that does not exist fails at once. Moving a task to another day removes its working session.
Returns each task with its ID, title, channel, planned and actual minutes, whether it has a working session and its subtask count. Tasks come in the order Sunsama shows them for the day. It also returns the day's total planned minutes, so your agent can compare the workload with your threshold.
MCP callsunsama_read → list_tasks
REST endpointGET https://cotlet.dev/api/v1/sunsama/tasks
| Name | Type | Description |
|---|---|---|
| date string | string | The day to read. Date as YYYY-MM-DD. Defaults to today. |
| channel string | string | Only tasks in this channel, by name. |
| status string | string | Filter by status. One of: open, completed, all. Defaults to all. |
{
"date": "2026-11-06",
"planned_minutes_total": 135,
"tasks": [
{
"task_id": "task_8f31c2",
"title": "Draft proposal for Acme",
"channel": "Clients",
"planned_minutes": 60,
"actual_minutes": null,
"status": "open",
"has_working_session": true,
"subtasks": 2
},
{
"task_id": "task_8f31c9",
"title": "Review onboarding emails",
"channel": "Marketing",
"planned_minutes": 45,
"actual_minutes": null,
"status": "open",
"has_working_session": false,
"subtasks": 0
},
{
"task_id": "task_8f31d4",
"title": "Send weekly invoices",
"channel": "Admin",
"planned_minutes": 30,
"actual_minutes": 25,
"status": "completed",
"has_working_session": false,
"subtasks": 0
}
]
} Returns the full task card: notes, every subtask with its status, planned and actual time as totals across all days the task appears on, its channel, its repeat setting and the objective it is aligned with. Use it before an update so your agent changes only what is needed.
MCP callsunsama_read → get_task
REST endpointGET https://cotlet.dev/api/v1/sunsama/tasks/{task_id}
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
{
"task_id": "task_8c41d2"
} {
"task_id": "task_8f31c2",
"title": "Draft proposal for Acme",
"channel": "Clients",
"notes": "Use the Q4 template.",
"planned_minutes": 60,
"actual_minutes": null,
"status": "open",
"repeat": null,
"objective": "Close the Acme deal",
"subtasks": [
{
"subtask_id": "sub_01",
"title": "Outline scope",
"status": "completed"
},
{
"subtask_id": "sub_02",
"title": "Price the options",
"status": "open"
}
]
} Returns the new task with its ID. Without date the task lands in the backlog. A channel that does not exist fails at once, so your agent never files a task under a wrong one. Set the channel, notes and estimate here when the task will repeat later, because every instance copies them. The task is private to your account and is deleted in Sunsama in one click, so the call does not wait for your OK.
MCP callsunsama_write → create_task
REST endpointPOST https://cotlet.dev/api/v1/sunsama/tasks
| Name | Type | Description |
|---|---|---|
| title string required | string | Task name. |
| date string | string | Day to plan it on. Date as YYYY-MM-DD. Leave out to put it in the backlog. |
| channel string | string | Channel name from list_channels. |
| planned_minutes integer | integer | Time estimate in minutes. |
| notes string | string | Task notes, plain text. |
{
"title": "title"
} {
"task_id": "task_9b12e0",
"title": "Call the accountant",
"date": "2026-11-09",
"channel": "Admin",
"planned_minutes": 30,
"status": "open"
} Returns the task as it is now. Only the fields you send change. When the task already has a working session on the calendar, its planned time follows the session, so change the estimate with timebox_task. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → update_task
REST endpointPATCH https://cotlet.dev/api/v1/sunsama/tasks/{task_id}
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| title string | string | New task name. |
| notes string | string | New notes. Replaces the old notes. |
| channel string | string | Channel name from list_channels. |
| planned_minutes integer | integer | New time estimate in minutes. |
{
"task_id": "task_8c41d2"
} {
"task_id": "task_8f31c9",
"title": "Review onboarding emails",
"channel": "Marketing",
"planned_minutes": 30,
"status": "open"
} Returns the subtask and the new subtask count of the task. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → add_subtask
REST endpointPOST https://cotlet.dev/api/v1/sunsama/tasks/{task_id}/subtasks
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| title string required | string | Subtask name. |
{
"task_id": "task_8c41d2",
"title": "title"
} {
"subtask_id": "sub_03",
"task_id": "task_8f31c2",
"title": "Send the draft to Maya",
"status": "open",
"subtasks_total": 3
} Returns the task with its new status. Sunsama can count the planned time as actual time for a task finished without logged time, but only when that setting is on in your account, so log time first with set_actual_time. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → complete_task
REST endpointPOST https://cotlet.dev/api/v1/sunsama/tasks/{task_id}/complete
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| completed boolean | boolean | true to complete, false to reopen. Defaults to true. |
{
"task_id": "task_8c41d2"
} {
"task_id": "task_8f31d4",
"status": "completed",
"planned_minutes": 30,
"actual_minutes": 25
} Returns the task with its new day. Moving a task to another day removes its working session, so timebox it again. Scheduling a backlog task to a day clears its folder. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → move_task
REST endpointPOST https://cotlet.dev/api/v1/sunsama/tasks/{task_id}/move
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| date string | string | Day to move it to. Date as YYYY-MM-DD. Leave out to move it to the backlog. |
{
"task_id": "task_8c41d2"
} {
"task_id": "task_7a20b1",
"date": "2026-11-06",
"in_backlog": false,
"has_working_session": false
} The backlog comes in pages: call again with next_cursor until it is empty. Read the channels before creating a task.
Returns the tasks you stored for someday, with channel, planned minutes and the bucket or folder they sit in. When the list is longer than one page, the response carries next_cursor; call again with it until it is empty.
MCP callsunsama_read → list_backlog_tasks
REST endpointGET https://cotlet.dev/api/v1/sunsama/backlog-tasks
| Name | Type | Description |
|---|---|---|
| channel string | string | Only tasks in this channel, by name. |
| cursor string | string | Next page cursor from the previous call. |
{
"tasks": [
{
"task_id": "task_7a20b1",
"title": "Update portfolio page",
"channel": "Marketing",
"planned_minutes": 90,
"bucket": "Someday"
},
{
"task_id": "task_7a20c5",
"title": "Research invoicing tools",
"channel": "Admin",
"planned_minutes": 45,
"bucket": "Someday"
}
],
"next_cursor": null
} Returns the name of every enabled channel and its context. Channels categorize tasks, events and objectives. Your agent reads this before create_task so it assigns a channel that exists.
MCP callsunsama_read → list_channels
REST endpointGET https://cotlet.dev/api/v1/sunsama/channels
No parameters.
{
"channels": [
{
"name": "Clients",
"context": "Work"
},
{
"name": "Marketing",
"context": "Work"
},
{
"name": "Admin",
"context": "Work"
},
{
"name": "Personal",
"context": "Life"
}
]
} A timebox sets the task's planned time. Actual time replaces any earlier value, so log it once at the end.
Returns the session with its start, end and the task's new planned time. A task can have sessions on several days and then shows on each of them. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → timebox_task
REST endpointPOST https://cotlet.dev/api/v1/sunsama/tasks/{task_id}/timebox
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| date string required | string | Day of the session. Date as YYYY-MM-DD. |
| start_time string required | string | Start in 24-hour HH:MM, in your Sunsama time zone. |
| duration_minutes integer required | integer | Length of the session in minutes. It becomes the task's planned time. |
{
"task_id": "task_8f31c9",
"date": "2026-11-06",
"start_time": "10:00",
"duration_minutes": 45
} {
"task_id": "task_8f31c9",
"date": "2026-11-06",
"start_time": "10:00",
"end_time": "10:45",
"planned_minutes": 45
} Returns the task with planned and actual minutes side by side. The value replaces any earlier actual time on the task. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → set_actual_time
REST endpointPUT https://cotlet.dev/api/v1/sunsama/tasks/{task_id}/actual-time
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| actual_minutes integer required | integer | Time spent in minutes. |
{
"task_id": "task_8c41d2",
"actual_minutes": 1
} {
"task_id": "task_8f31d4",
"planned_minutes": 30,
"actual_minutes": 25
} Set channel, notes and estimate before you set a repeat, because every future instance copies them.
Returns the repeat setting. Sunsama copies the task's channel, subtasks, notes and estimate into every future instance, so set them first. Recurring tasks roll over until they collide with another instance of the same task. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → set_task_repeat
REST endpointPUT https://cotlet.dev/api/v1/sunsama/tasks/{task_id}/repeat
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| repeat string required | string | One of: weekdays, weekly, none. none stops the repeat. |
| days array | array | For weekly: the days, as mon, tue, wed, thu, fri, sat, sun. |
| start_time string | string | Optional start in 24-hour HH:MM. It guides auto-scheduling and the order of your list. |
{
"task_id": "task_8c41d2",
"repeat": "repeat"
} {
"task_id": "task_9b12e1",
"repeat": "weekly",
"days": [
"fri"
],
"start_time": "14:00"
} Returns each objective with its channel and the tasks aligned with it, each with its day and status. An objective extended from last week shows in both weeks.
MCP callsunsama_read → list_objectives
REST endpointGET https://cotlet.dev/api/v1/sunsama/objectives
| Name | Type | Description |
|---|---|---|
| week_of string | string | Any day inside the week to read. Date as YYYY-MM-DD. Defaults to the current week. |
{
"week_of": "2026-11-02",
"objectives": [
{
"objective_id": "obj_41",
"title": "Close the Acme deal",
"channel": "Clients",
"tasks": [
{
"task_id": "task_8f31c2",
"day": "2026-11-06",
"status": "open"
}
]
},
{
"objective_id": "obj_42",
"title": "Publish the autumn newsletter",
"channel": "Marketing",
"tasks": []
}
]
} Returns the task with its objective. A task without a channel takes the objective's channel, and a task that has one keeps it. It reaches no one else and is undone with one call, so it does not wait for your OK.
MCP callsunsama_write → align_task_with_objective
REST endpointPOST https://cotlet.dev/api/v1/sunsama/objectives/{objective_id}/tasks/{task_id}/with-objective/align
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_tasks or list_backlog_tasks. |
| objective_id string required | string | Objective ID from list_objectives. |
{
"task_id": "task_8c41d2",
"objective_id": "objective_8c41d2"
} {
"task_id": "task_9b12e0",
"objective_id": "obj_41",
"objective": "Close the Acme deal",
"channel": "Admin"
} Your signed-in Sunsama profile, AES-256-GCM encrypted, in Finland. Never the password.
The 14 Sunsama tools. No cookie, no login method.
Your tasks, backlog, channels, calendar sessions and objectives.
Your plan, billing, password, workspace members and deleting.
You get an email and a sign-in link. We never sign in for you.
Disable for agents, reset the browser or delete the API key.
Our site gets A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). We have no SOC 2 report or third-party pentest yet.
Sunsama opened its MCP server in April 2026 and closed the beta on 27 Aug 2026, so the product moves quickly. When a button or the calendar view changes, we fix the tool and your prompts keep working. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Create a task or subtask | Delete it in Sunsama |
| Update a task | Call update_task again with the old values |
| Complete a task | Call complete_task with completed set to false |
| Move a task | Move it back, then timebox it again |
| Timebox a task | Timebox it again with a new time |
| Log actual time | Call set_actual_time again, it replaces the value |
| Set a repeat | Call set_task_repeat with none |
None of the 14 tools waits for your OK: every write lands in your own Sunsama and reaches no one else. Scheduled runs need no approval.
A task moved to the wrong day is one call from being right. Ask the agent to put it back.
{
"name": "timebox_task",
"arguments": {
"task_id": "task_8f31c9",
"date": "2026-11-06",
"start_time": "10:00",
"duration_minutes": 45
}
} curl -X POST https://cotlet.dev/api/v1/sunsama/tasks/task_8f31c9/timebox \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-11-06","start_time":"10:00","duration_minutes":45}' {
"task_id": "task_8f31c9",
"date": "2026-11-06",
"start_time": "10:00",
"end_time": "10:45",
"planned_minutes": 45
} Scripts and cron jobs reach the same tools over REST, with the same key and price. A failed call costs nothing. Each row in the tools list shows its REST path.
About $34 a monthfor one person planning every workday with an agent, 5,940 credits. Your Sunsama plan is billed by Sunsama as before.
| Job | Calls | Credits |
|---|---|---|
| Pull backlog tasks into today | 5 × 20 | 1,000 |
| Timebox the day on the calendar | 6 × 20 | 1,200 |
| Log actual time and complete tasks | 7 × 20 | 1,400 |
| Weekly objectives into daily tasks | 9 × 4 | 360 |
| Tasks from meeting notes | 6 × 8 | 480 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 5,940 |
The month is our example, since Sunsama publishes no usage figures: 20 workdays with a plan, a timebox pass and an end-of-day log, four weekly objective runs, eight meeting captures. Sunsama Pro costs $17 a month billed yearly or $22 billed monthly (sunsama.com/pricing, 6 Nov 2026). Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Official Sunsama MCP | api.sunsama.com/mcp, OAuth, for ChatGPT, Claude, Cursor, Claude Code and Notion. Included in Pro. | MCP clients only, no documented REST API, no published tool list. Actual time records were not exposed on 24 Jun 2026. |
| robertn702/mcp-sunsama | MIT, 52 stars. Tasks, subtasks, backlog and streams. | Archived, last push 1 Mar 2026. Runs on your computer. |
| robertn702/sunsama-relay | A self-hosted REST relay for n8n and scripts, 12 stars. | You host it. No licence, last push 15 Jan 2026. |
| n8n-nodes-sunsama | A community n8n node for tasks, streams, subtasks and calendar, version 0.1.1. | 33 downloads in the last month, last published 26 Feb 2026. |
| Zapier | Actions Create Task, Update Task, Find Task, Find or Create Task and Find Channel. | No timeboxing or actual time in its action list. |
| Open Sunsama | A separate open-source planner with its own MCP and REST API, 138 stars. | You move your planning off Sunsama. |
If you plan in Claude or ChatGPT and your Pro plan covers MCP, start with the official server. Cotlet is for REST from n8n or a script, documented tools with example responses, actual time on a task and one account for your other apps.
Cotlet belongs to Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273), in business since 2019 and founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev about the Sunsama tools.
Sign up at cotlet.dev, log in to Sunsama once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Sunsama account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Sunsama: plan my day from the backlog; timebox today's tasks on the calendar; log actual time at the end of the day. You ask in plain words, and anything that reaches other people waits for your OK first.
Sign up free at https://cotlet.dev, open Sunsama under Integrations in the console and sign in to Sunsama in its Cloud Browser. The trial starts with your first app, no card asked.
Sunsama sells one plan for individuals, Pro, with a 14-day free trial (checked 6 Nov 2026). Its pricing page lists MCP in that plan. Cotlet works in your own Sunsama account and does not use that MCP route, so the plan you have in Sunsama is the plan your agent works under.
Yes, with set_actual_time. In June 2026 Sunsama said actual time in its official MCP was still on the backlog. Cotlet writes the actual time the way you would, on the task in Sunsama.
Not a documented one (checked 6 Nov 2026). The request on Sunsama's roadmap has been open since December 2019. Sunsama's own MCP server is the official route for agents. Cotlet adds REST over the same hosted tools, so n8n, Make and scripts can call them.
Yes. Keep the official server where it fits, and add Cotlet to the agents that need documented tools, REST or actual time.
Only in how you call it. Both have the same 14 tools, inputs and answers, one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Summay, Inc., the company behind Sunsama.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy