Productivity & teams
Redmine
Issues, time entries and projects in your Redmine, from your agent.
12 endpoints
Connect your Amazing Marvin Inbox, day plans, projects and timers to your agent or workflow. Use MCP or REST from n8n, Make, Zapier and scripts.
13 tools Read and write
Amazing Marvin has a public REST API for tasks, projects, time tracking and habits, and no official MCP server (checked 6 Nov 2026). Cotlet adds 13 Amazing Marvin tools that need no API token or developer setup, work inside the ChatGPT and Claude apps and run hosted around the clock, with one account for your other apps too.
| What you need | Marvin API | Community MCP server | Cotlet |
|---|---|---|---|
| No API token to copy | Token from Features > API | Token in its config | Sign in once |
| Works in the ChatGPT and Claude apps | If you build it | Desktop clients | Yes |
| Runs when your computer is off | If you host it | No, runs on your computer | Yes, hosted |
| Create tasks and projects | Yes | Yes | Yes |
| Reschedule and edit a task | Experimental endpoint | Depends on the server | Yes |
| Mark a task done | Experimental endpoint | Depends on the server | Yes |
| Start and stop the timer | Yes | Depends on the server | Yes |
Checked 6 Nov 2026. Sources: Amazing Marvin Help: API endpoints · Amazing Marvin Help: API getting started · Amazing Marvin Help: Webhooks · Zapier: Amazing Marvin integrations
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Amazing Marvin password, and you can switch your agent off from the console at any time. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Enable Amazing Marvin for agents. Sign up, log in to Amazing Marvin in its Cloud Browser, then press Enable for agents.
Add the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.
Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.
One shared address, https://cotlet.dev/mcp/v1, also carries Amazing Marvin next to your other apps. If you enable Amazing Marvin after connecting, refresh the connector so the new tools show up.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-amazing-marvin \
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-amazing-marvin": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-amazing-marvin]
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: amazing_marvin_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: amazing_marvin_write Sign in to your Amazing Marvin account in its Cotlet Cloud Browser and enable the app for agents. This is a Cotlet key: you do not copy the API token from Marvin's Features page.
Create a Cotlet API key with access to Amazing Marvin and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
curl "https://cotlet.dev/api/v1/amazing-marvin/today-tasks?date=2026-11-06" \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "amazing-marvin",
"tool": "list_today_tasks",
"result": {
"date": "2026-11-06",
"tasks": [
{
"task_id": "c3f5e1a4-99d2-4f3e-9c77-4a0b2e83d9f6",
"title": "Draft the pitch deck",
"project": "Q4 launch",
"due_date": "2026-11-10",
"time_estimate_minutes": 60
},
{
"task_id": "d4a6f2b5-aae3-4a4f-ad88-5b1c3f94eaa7",
"title": "Review the budget sheet",
"project": "Finance",
"due_date": null,
"time_estimate_minutes": 45
}
]
}
} Read result.tasks. The tool has no cursor: it returns the open items Marvin shows for one date, so pass date as YYYY-MM-DD and call once per day you need.
The day list filters by date only, so backburner tasks and tasks blocked by a dependency can appear. Keep task IDs in your workflow so later runs update the same task.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Call list_due_tasks each morning and post the overdue items to a chat channel. |
| Python or Node.js | REST API | Read list_inbox_tasks and write the titles to a sheet for a weekly review. |
| Make | HTTP > Make a request | Send a new row from a form to create_task with a project ID from list_categories. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
These HTTP workflows do not require a native Cotlet connector or a prebuilt template. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication and errors.
Open tasks only. The day list filters by date alone, so backburner and blocked tasks can show up; the due list wants a date every time.
Returns the open tasks that sit in the Inbox, the place where Marvin puts a new task that has no project. Each task has its ID, title, scheduled day, due date, label IDs and time estimate. Completed tasks are not listed. Use update_task to give a task a project or a day.
MCP callamazing_marvin_read → list_inbox_tasks
REST endpointGET https://cotlet.dev/api/v1/amazing-marvin/inbox-tasks
No parameters.
{
"tasks": [
{
"task_id": "a1f3c9e2-77b0-4d1c-9a55-2e8f0c61b7d4",
"title": "Reply to Dana about the invoice",
"day": null,
"due_date": "2026-11-09",
"label_ids": [
"lb_7f2a"
],
"time_estimate_minutes": 10
},
{
"task_id": "b2e4d0f3-88c1-4e2d-8b66-3f9a1d72c8e5",
"title": "Book dentist",
"day": null,
"due_date": null,
"label_ids": [],
"time_estimate_minutes": null
}
]
} Returns the open items Marvin shows for the day you pick, today when you omit it. It filters by date only, so backburner tasks and tasks blocked by a dependency can appear too. Completed tasks are not listed. Each task has its ID, title, project, due date and time estimate.
MCP callamazing_marvin_read → list_today_tasks
REST endpointGET https://cotlet.dev/api/v1/amazing-marvin/today-tasks
| Name | Type | Description |
|---|---|---|
| date string | string | Date as YYYY-MM-DD. Default: today. |
{
"date": "2026-11-06",
"tasks": [
{
"task_id": "c3f5e1a4-99d2-4f3e-9c77-4a0b2e83d9f6",
"title": "Draft the pitch deck",
"project": "Q4 launch",
"due_date": "2026-11-10",
"time_estimate_minutes": 60
},
{
"task_id": "d4a6f2b5-aae3-4a4f-ad88-5b1c3f94eaa7",
"title": "Review the budget sheet",
"project": "Finance",
"due_date": null,
"time_estimate_minutes": 45
}
]
} Returns every open item whose due date is on or before the date you pass, so overdue tasks come back with today's. Pass a date every time; without one Marvin uses its own server date. Each item has its ID, title, due date, scheduled day and project.
MCP callamazing_marvin_read → list_due_tasks
REST endpointGET https://cotlet.dev/api/v1/amazing-marvin/due-tasks
| Name | Type | Description |
|---|---|---|
| by string required | string | Date as YYYY-MM-DD. Items due on or before this day are returned. |
{
"by": "by"
} {
"by": "2026-11-07",
"items": [
{
"task_id": "e5b7a3c6-bbf4-4b5a-be99-6c2d4aa5fbb8",
"title": "Send the signed contract",
"due_date": "2026-11-04",
"day": null,
"project": "Clients"
},
{
"task_id": "f6c8b4d7-cca5-4c6b-8faa-7d3e5bb6acc9",
"title": "Pay the hosting invoice",
"due_date": "2026-11-07",
"day": "2026-11-06",
"project": "Admin"
}
]
} Returns the direct children of the project or category you pass, open items only. Tasks in sub-projects are not included; call the tool again with the sub-project ID. Each item has its ID, title, type, scheduled day and due date.
MCP callamazing_marvin_read → list_project_tasks
REST endpointGET https://cotlet.dev/api/v1/amazing-marvin/project-tasks
| Name | Type | Description |
|---|---|---|
| project_id string required | string | Project or category ID from list_categories. |
{
"project_id": "project_8c41d2"
} {
"project_id": "p_q4launch",
"items": [
{
"task_id": "c3f5e1a4-99d2-4f3e-9c77-4a0b2e83d9f6",
"title": "Draft the pitch deck",
"type": "task",
"day": "2026-11-06",
"due_date": "2026-11-10"
},
{
"task_id": "a7d9c5e8-ddb6-4d7c-9abb-8e4f6cc7bdd0",
"title": "Press kit",
"type": "project",
"day": null,
"due_date": null
}
]
} The IDs from these tools go into the task tools as project_id and label_ids.
Returns every category and project in your account with its ID, title, parent ID and color. Use the IDs as project_id or parent_id in the other tools. Marvin nests categories and projects without a fixed depth, so follow parent_id to rebuild the tree.
MCP callamazing_marvin_read → list_categories
REST endpointGET https://cotlet.dev/api/v1/amazing-marvin/categories
No parameters.
{
"categories": [
{
"id": "p_work",
"title": "Work",
"parent_id": null,
"color": "#2f9e8f"
},
{
"id": "p_q4launch",
"title": "Q4 launch",
"parent_id": "p_work",
"color": "#e8a33d"
},
{
"id": "p_admin",
"title": "Admin",
"parent_id": null,
"color": "#6b7280"
}
]
} Returns the labels in your account in the order Marvin sorts them. Each has its ID, title, color and group ID. Use the IDs as label_ids in create_task and update_task.
MCP callamazing_marvin_read → list_labels
REST endpointGET https://cotlet.dev/api/v1/amazing-marvin/labels
No parameters.
{
"labels": [
{
"id": "lb_7f2a",
"title": "waiting",
"color": "#e8a33d",
"group_id": null
},
{
"id": "lb_91c3",
"title": "deep work",
"color": "#2f9e8f",
"group_id": null
}
]
} Creates the project and returns its ID, which you pass as project_id to create_task. Without a parent it sits at the top level. The priority is one of high, mid or low. It reaches no one and you can edit or delete it in the app, so it does not ask for confirmation.
MCP callamazing_marvin_write → create_project
REST endpointPOST https://cotlet.dev/api/v1/amazing-marvin/projects
| Name | Type | Description |
|---|---|---|
| title string required | string | Project title. |
| parent_id string | string | Category or project ID from list_categories. Default: top level. |
| priority enum | enum | high, mid or low. |
| due_date string | string | Date as YYYY-MM-DD. The due date. |
| note string | string | Note text on the project. |
{
"title": "title"
} {
"project_id": "p_relaunch",
"title": "Website relaunch",
"parent_id": "p_work",
"priority": "mid"
} Shortcuts in a title such as +today, #Project and @label work unless you turn them off. Complete works on tasks, not projects.
Creates the task in your account and returns its ID. Without a project it lands in the Inbox. Marvin reads shortcuts in the title, for example "+today", "#Q4 launch", "@waiting" and "~30m", unless you pass the exact title with parse_title set to false. It reaches no one and you can change it with update_task or delete it in the app, so it does not ask for confirmation.
MCP callamazing_marvin_write → create_task
REST endpointPOST https://cotlet.dev/api/v1/amazing-marvin/tasks
| Name | Type | Description |
|---|---|---|
| title string required | string | Task title. Marvin shortcuts like +today, #Project, @label and ~30m work unless parse_title is false. |
| project_id string | string | Project or category ID from list_categories. Default: the Inbox. |
| day string | string | Date as YYYY-MM-DD. Schedules the task for that day. |
| due_date string | string | Date as YYYY-MM-DD. The due date. |
| label_ids array | array | Label IDs from list_labels. |
| time_estimate_minutes integer | integer | Time estimate in minutes. |
| note string | string | Note text on the task. |
| starred boolean | boolean | Mark the task as starred. Default: false. |
| parse_title boolean | boolean | Read shortcuts in the title. Default: true. |
{
"title": "Send the press kit to Lena",
"project_id": "p_q4launch",
"day": "2026-11-09",
"due_date": "2026-11-11",
"label_ids": [
"lb_7f2a"
],
"time_estimate_minutes": 20
} {
"task_id": "g8e0d6f9-eec7-4e8d-8cdd-9f5a7dd8cee1",
"title": "Send the press kit to Lena",
"project_id": "p_q4launch",
"day": "2026-11-09",
"due_date": "2026-11-11",
"label_ids": [
"lb_7f2a"
],
"time_estimate_minutes": 20
} Changes only the fields you pass and returns the task as it is now. Passing day schedules the task for that day; passing an empty day unschedules it. Passing project_id moves it out of the Inbox. It reaches no one and you can change it back with another call, so it does not ask for confirmation.
MCP callamazing_marvin_write → update_task
REST endpointPATCH https://cotlet.dev/api/v1/amazing-marvin/tasks/{task_id}
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_inbox_tasks, list_today_tasks, list_due_tasks or list_project_tasks. |
| title string | string | New title. |
| project_id string | string | Project or category ID from list_categories. |
| day string | string | Date as YYYY-MM-DD. Empty string unschedules the task. |
| due_date string | string | Date as YYYY-MM-DD. The due date. |
| label_ids array | array | Label IDs from list_labels. Replaces the current labels. |
| time_estimate_minutes integer | integer | Time estimate in minutes. |
| note string | string | New note text. |
{
"task_id": "task_8c41d2"
} {
"task_id": "a1f3c9e2-77b0-4d1c-9a55-2e8f0c61b7d4",
"title": "Reply to Dana about the invoice",
"project_id": "p_admin",
"day": "2026-11-06",
"due_date": "2026-11-09",
"label_ids": [
"lb_7f2a"
],
"time_estimate_minutes": 10
} Marks the task done and returns its ID and the day it was completed. It works on tasks, not projects. It reaches no one, so it does not ask for confirmation.
MCP callamazing_marvin_write → complete_task
REST endpointPOST https://cotlet.dev/api/v1/amazing-marvin/tasks/{task_id}/complete
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_inbox_tasks, list_today_tasks, list_due_tasks or list_project_tasks. |
{
"task_id": "task_8c41d2"
} {
"task_id": "c3f5e1a4-99d2-4f3e-9c77-4a0b2e83d9f6",
"title": "Draft the pitch deck",
"done": true,
"done_day": "2026-11-06"
} Marvin tracks one task at a time, so check the running timer first.
Returns the task Marvin is tracking time on right now, with its ID and title. Returns null when no timer runs. Check it before start_timer so you do not leave two tasks timed.
MCP callamazing_marvin_read → get_running_timer
REST endpointGET https://cotlet.dev/api/v1/amazing-marvin/running-timer
No parameters.
{
"task": {
"task_id": "c3f5e1a4-99d2-4f3e-9c77-4a0b2e83d9f6",
"title": "Draft the pitch deck"
}
} Starts time tracking on the task and returns its ID and the start time. Check get_running_timer first, because Marvin tracks one task at a time. It reaches no one, so it does not ask for confirmation.
MCP callamazing_marvin_write → start_timer
REST endpointPOST https://cotlet.dev/api/v1/amazing-marvin/tasks/{task_id}/timer/start
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_inbox_tasks, list_today_tasks, list_due_tasks or list_project_tasks. |
{
"task_id": "task_8c41d2"
} {
"task_id": "c3f5e1a4-99d2-4f3e-9c77-4a0b2e83d9f6",
"title": "Draft the pitch deck",
"started_at": "2026-11-06T09:02:00Z"
} Stops time tracking on the task and returns the time tracked in that session. The task stays open; call complete_task to finish it. It reaches no one, so it does not ask for confirmation.
MCP callamazing_marvin_write → stop_timer
REST endpointPOST https://cotlet.dev/api/v1/amazing-marvin/tasks/{task_id}/timer/stop
| Name | Type | Description |
|---|---|---|
| task_id string required | string | Task ID from list_inbox_tasks, list_today_tasks, list_due_tasks or list_project_tasks. |
{
"task_id": "task_8c41d2"
} {
"task_id": "c3f5e1a4-99d2-4f3e-9c77-4a0b2e83d9f6",
"title": "Draft the pitch deck",
"stopped_at": "2026-11-06T10:05:00Z",
"session_minutes": 63
} Your logged-in Amazing Marvin profile, encrypted with AES-256-GCM, in Finland. Not the password.
The 13 Amazing Marvin tools. Never the cookie.
Your Inbox, days, projects, labels and timers.
Billing, password, plan and deleting your account.
Your agent gets a link to sign in again. We never type your password.
Disable for agents in one click, or reset the browser in the console.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.
When Marvin moves a button or renames a field, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Create a task or project | Delete it in Marvin |
| Update a task | Call update_task again with the old values |
| Mark a task done | Fix it in the Marvin app |
| Start or stop the timer | Call the other timer tool |
None of the 13 tools waits for your OK: every write lands in your own Marvin and reaches no one. Scheduled runs need no approval.
A task moved to the wrong day is one update away from being right. Ask the agent to put it back.
{
"name": "create_task",
"arguments": {
"title": "Send the press kit to Lena",
"project_id": "p_q4launch",
"day": "2026-11-09",
"due_date": "2026-11-11",
"label_ids": [
"lb_7f2a"
],
"time_estimate_minutes": 20
}
} curl -X POST https://cotlet.dev/api/v1/amazing-marvin/tasks \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Send the press kit to Lena","project_id":"p_q4launch","day":"2026-11-09","due_date":"2026-11-11","label_ids":["lb_7f2a"],"time_estimate_minutes":20}' {
"task_id": "g8e0d6f9-eec7-4e8d-8cdd-9f5a7dd8cee1",
"title": "Send the press kit to Lena",
"project_id": "p_q4launch",
"day": "2026-11-09",
"due_date": "2026-11-11",
"label_ids": [
"lb_7f2a"
],
"time_estimate_minutes": 20
} Scripts and cron jobs reach the same tools over REST, with the same key and price. A failed call costs nothing. The tools table lists the REST path of each tool.
About $27 a monthfor one person planning every workday with an agent, 4,660 credits. Your Marvin subscription is billed by Marvin as before.
| Job | Calls | Credits |
|---|---|---|
| Plan the day from the Inbox and due dates | 6 × 22 | 1,320 |
| Sort the Inbox into projects and labels, weekly | 11 × 4 | 440 |
| Turn meeting notes into tasks | 5 × 8 | 400 |
| Time a task and mark it done | 5 × 20 | 1,000 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 4,660 |
The month is our example: a daily plan on 22 workdays, a weekly Inbox sort, 8 sets of meeting notes and 20 timed tasks. We found no public figure for a typical Marvin account. Marvin Pro costs $96 a year billed annually and has a 14-day trial without a card (amazingmarvin.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 |
|---|---|---|
| bgheneti/Amazing-Marvin-MCP | Python MCP server, 44 stars, last commit 11 Jun 2026. | You copy your Marvin API token into its setup and run it yourself. |
| andreasd083/amazing-marvin-complete-mcp | 50 tools over the 38 endpoints of the API page, MIT, 11 stars, last commit 13 Oct 2026. | Runs on your computer with your tokens from Settings > API. |
| tsvikas/amazing-marvin-mcp | MIT, 1 star, last commit 25 Oct 2026. Edits need the full-access token. | Its README advises a second Marvin account for that token. |
| Zapier | One Amazing Marvin action, Create Task, also through Zapier MCP. | No triggers and no reads: it cannot list your Inbox or your day. |
The official API is the right base if you write code and can live with one token and the 1440-a-day budget. A community server suits a desktop client you run yourself. Cotlet fits when you want the same jobs inside the ChatGPT or Claude apps, hosted, with nothing to install.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the Amazing Marvin tools.
Sign up at cotlet.dev, log in to Amazing Marvin 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 Amazing Marvin account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Amazing Marvin: plan today from your Inbox and due dates; sort the Inbox into projects and labels; turn meeting notes into tasks. You ask in plain words, and anything that reaches other people waits for your OK first.
Create a free account at https://cotlet.dev, open Amazing Marvin under Integrations in the console and log in to Amazing Marvin in its Cloud Browser. The trial starts with your first app, no card asked.
The API works, but you copy a token, call it from your own code and stay inside 1 request per 3 seconds and 1440 requests a day (Marvin Help: API getting started). Cotlet needs no API key: you sign in to Marvin once, and ChatGPT, Claude, Cursor, n8n or a script use it. It is hosted, and one Cotlet account covers your other apps too.
Marvin sells one plan, Marvin Pro, with a 14-day free trial and no card, and it lists the web app among its platforms (Amazing Marvin pricing page). Cotlet signs in to the web app, so any account that can use it works.
No. The tools list tasks by Inbox, day, due date or project, and your agent filters the result. Marvin's API has no search endpoint either (Marvin Help: API endpoints).
Yes. Marvin sends webhooks to your own URL for 23 events, such as a task added, edited or marked done and a timer started, at no more than one per 3 seconds (Marvin Help: Webhooks, checked 6 Nov 2026). Cotlet tools do not receive them. Run your agent on a schedule, or point a Marvin webhook at your own workflow.
Yes. Cotlet works in the Marvin web app in your own Cloud Browser, so you need no desktop app running.
Only the door is different. Both expose the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Amazing Marvin or Amazing GmbH.
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