AI-agents (MCP)
MCP werkt in alle abonnementen. Free en Basic krijgen alleen-lezen toegang tot alle 10 leestools (Free is beperkt tot 100 verzoeken per dag). Pro en Ultra krijgen volledige toegang om te lezen en te schrijven (27 tools) en kunnen kiezen voor de alleen-lezenmodus als ze dat liever willen.
Met MCP (Model Context Protocol) verbind je AI-assistenten zoals ChatGPT en Claude, programmeerassistenten en automatiseringstools rechtstreeks met je TellDone-data. Eenmaal verbonden kan je assistent je notities, taken, evenementen, rapporten, tags en wijzigingsgeschiedenis lezen. In Pro en hoger kan hij ook items aanmaken, bijwerken, verwijderen en herstellen. Er zijn 27 tools: 10 om te lezen (elk abonnement) en 17 om te schrijven (Pro en hoger).
Op de iPhone opent Instellingen > Integraties > AI-agents (MCP) het MCP-instelscherm, met je toegangstoken standaard verborgen:

En op het web:

Twee manieren om te verbinden
Er zijn twee manieren om een AI-client te verbinden:
- Inloggen met TellDone (OAuth) (aanbevolen) - je logt in met je TellDone-account en keurt goed wat de app vraagt. ChatGPT en Claude gebruiken dit, en er is geen token om te kopiëren.
- Bearer-token - kopieer je toegangstoken uit de instellingen en plak het in de configuratie van je client. Het eenvoudigst voor scripts, opdrachtregeltools en clients zonder ingebouwde OAuth-flow.
| Client | Aanbevolen |
|---|---|
| ChatGPT (chatgpt.com of de ChatGPT-desktopapp, niet de mobiele app) | OAuth - voeg een eigen MCP-server toe met de MCP-URL en log in |
| Claude (website, Desktop, iPhone-app) / Cowork | OAuth - voeg een eigen connector toe met de MCP-URL en log in |
| Claude Code (CLI) | Voorlopig bearer-token - voeg de Authorization-header met je token toe |
| Scripts of je eigen code | Bearer-token - het eenvoudigst te automatiseren |
| Een client die alleen kiezen uit een map met vermelde connectors ondersteunt | Voeg TellDone toe als eigen connector met de MCP-URL, of gebruik een bearer-token. TellDone staat nog in geen enkele connectormap |
Vereisten per abonnement
| Abonnement | MCP |
|---|---|
| Free | Alleen-lezen (10 leestools), 100 verzoeken per dag |
| Basic | Alleen-lezen (10 leestools), geen daglimiet |
| Pro | Lezen en schrijven (27 tools) - kan overschakelen naar de alleen-lezenmodus |
| Ultra | Lezen en schrijven (27 tools) - kan overschakelen naar de alleen-lezenmodus |
De limiet van 100 verzoeken per dag in Free telt alleen toolaanroepen. Verbinden, inloggen en tools opvragen tellen niet mee. De dag volgt de tijdzone die in je account is opgeslagen en wordt om middernacht gereset. Als je de limiet bereikt, krijgt je assistent daarvan een bericht. Schrijftools worden in Free en Basic geweigerd. Met een toegangstoken antwoorden ze dat de verbinding alleen-lezen is en dat aanmaken en bewerken Pro of hoger vereist. Bij inloggen (OAuth) antwoorden de meeste met “Insufficient scope”, omdat verbindingen in Free en Basic nooit schrijfrechten krijgen.
Het scherm in de app
Open Instellingen > Integraties en tik in de sectie AI-agents op AI-agents (MCP). Het scherm zegt “Laat ChatGPT, Claude en andere AI-assistenten werken met je notities, taken en evenementen in TellDone.” en toont je abonnement:
- Free: “Jouw abonnement: alleen-lezen toegang, 100 verzoeken per dag. Schrijven hoort bij Pro.”
- Basic: “Jouw abonnement: alleen-lezen toegang”
- Pro en Ultra: “Jouw abonnement: lezen en schrijven”
Zolang MCP uitstaat, tik je op Inschakelen om het aan te zetten.
Als het aanstaat, toont het scherm:
- Toegangsmodus (Pro en Ultra) - kies op elk moment Alleen-lezen of Lezen en schrijven.
- Assistent verbinden - stappen voor ChatGPT, Claude en Andere assistent. Je logt in bij TellDone in de assistent zelf, dus er is geen token nodig.
- Verbonden apps - de assistenten die je hebt verbonden, elk met een knop Ontkoppelen. Blijft leeg tot de eerste verbinding.
- Voor ontwikkelaars (standaard ingeklapt) - het veld Toegangstoken (verborgen, met Tonen / Verbergen en Kopiëren), Token opnieuw genereren en een schakelaar Claude Code / Cursor / Other met kant-en-klare tekst en een eigen knop Kopiëren. Claude Code geeft je de opdracht
claude mcp add, Cursor geeft je de JSON voor.cursor/mcp.jsonen Other toont het serveradres, de OAuth-inlogoptie en de headerAuthorization: Bearer. Zolang het token verborgen is, tonen de fragmentenYOUR_TOKEN. Tik op Tonen en ze bevatten je echte token.
Het web heeft dezelfde bediening in een andere indeling, zonder ingeklapte ontwikkelaarssectie: het OAuth-adres met een knop Kopiëren, de bediening voor je token, Verbonden apps met Ontkoppelen en Manual bearer token setup met zes clientkeuzes (Claude Code, Cursor, Windsurf, Codex, OpenClaw en cURL). Op het web bevatten de fragmenten altijd je echte token, ook als het tokenveld verborgen is. Behandel ze dus als het token zelf.
- Documentatie - een link naar deze pagina.
- Uitschakelen - zet MCP uit. Je bevestigt met “Dit trekt de toegang voor alle gekoppelde AI-tools in.” Je token wordt verwijderd en alle verbindingen stoppen. Zet je MCP later weer aan, dan krijg je een nieuw token en werken apps die met inloggen (OAuth) zijn verbonden weer zonder opnieuw in te loggen. Om een app definitief te verwijderen, tik je op Ontkoppelen onder Verbonden apps.
Houd je toegangstoken privé. Iedereen met het token heeft toegang tot je TellDone-data. Tik op Token opnieuw genereren als je vermoedt dat het is uitgelekt.
Zo zet je het aan
Je kunt MCP vanaf beide platforms instellen:
- iPhone: Instellingen > Integraties > AI-agents (MCP)
- Web: app.telldone.app > Instellingen > Integraties > AI-agents (MCP)
Stappen:
- Tik op Inschakelen.
- Kies in Pro en Ultra je toegangsmodus (Alleen-lezen of Lezen en schrijven). Free en Basic zijn alleen-lezen.
- Om ChatGPT of Claude te verbinden, tik je onder Assistent verbinden op de assistent en volg je de stappen (zie hieronder). Er is geen token nodig.
- Voor een programmeerclient op iPhone open je Voor ontwikkelaars, tik je op Tonen, kies je Claude Code, Cursor of Other en tik je onder het fragment op Kopiëren. Kopieer je voordat je op Tonen tikt, dan staat in het fragment
YOUR_TOKENin plaats van je token. Kies op het web je client onder Manual bearer token setup en kopieer het fragment; dat bevat al je token. - Plak het fragment in je client of in het configuratiebestand ervan.
Verbinden met OAuth
OAuth is de aanbevolen route voor ChatGPT, Claude en Cowork - je logt in met je TellDone-account in plaats van een token te kopiëren.
MCP-URL voor OAuth: https://api.telldone.app/mcp/user
Dezelfde server antwoordt ook op https://api.telldone.app/mcp/user/mcp, en beide adressen accepteren een bearer-token. Gebruik voor OAuth-inloggen het eerste.
ChatGPT
Je kunt een eigen MCP-server toevoegen op chatgpt.com of in de ChatGPT-desktopapp. De mobiele ChatGPT-app kan geen eigen connectors toevoegen, en de TellDone-app zegt het zo: “De ChatGPT-app voegt alleen connectors uit de eigen catalogus toe.” Tik in TellDone op Stappen naar mijn computer sturen om de instructies op een computer te krijgen. Eenmaal daar toegevoegd is TellDone ook in de mobiele ChatGPT-app beschikbaar.
De stappen in de app:
- Open op een computer chatgpt.com/plugins, klik op Add en kies Add custom MCP server.
- Noem hem TellDone, plak het adres hieronder (
https://api.telldone.app/mcp/user) en kies OAuth. - Bevestig en installeer hem, log daarna in bij TellDone en sta toegang toe.
Zie de gids van OpenAI over eigen MCP-servers als de menunamen veranderen.
Claude (website, Desktop, iPhone-app) / Cowork
De stappen in de app:
- Open in Claude Customize → Connectors en tik op Add custom connector.
- Plak het adres hieronder (
https://api.telldone.app/mcp/user). - Log in bij TellDone en sta toegang toe.
Als je inlogt, toont de toestemmingspagina van TellDone welke app toegang vraagt en welke rechten precies. Log in met je TellDone-e-mailadres en wachtwoord en klik op Allow access, of tik op Inloggen met Apple of Inloggen met Google, waarmee de toegang in dezelfde stap wordt goedgekeurd. Claude verbindt zichzelf - er is geen token om te kopiëren.
Als de menunamen veranderen, zie de gids van Anthropic over een eigen connector toevoegen.
Verbinden met een bearer-token
Plak voor Claude Code, Cursor en andere clients zonder ingebouwd OAuth-inloggen je toegangstoken rechtstreeks in de configuratie van de client. Vervang in alle voorbeelden hieronder YOUR_TOKEN door het token uit je instellingen.
Claude Code (bearer-token)
claude mcp add --transport http telldone \
https://api.telldone.app/mcp/user/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
Je hoeft dit niet zelf te typen: tik in Instellingen > Integraties > AI-agents (MCP) > Voor ontwikkelaars op Tonen, kies Claude Code en tik op Kopiëren. De gekopieerde opdracht bevat al je token.
Cursor
Voeg toe aan .cursor/mcp.json (of kopieer het uit Voor ontwikkelaars > Cursor nadat je op Tonen hebt getikt):
{
"mcpServers": {
"telldone": {
"url": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
Andere clients
Instellingen voor andere MCP-clients:
Codex
Voeg toe aan codex.json:
{
"mcpServers": {
"telldone": {
"type": "http",
"url": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
OpenClaw
Settings > MCP Servers > Add:
- Name:
TellDone - URL:
https://api.telldone.app/mcp/user/mcp - Auth:
Bearer YOUR_TOKEN
Andere MCP-clients
Elke tool die MCP via HTTP ondersteunt, kan verbinden. Gebruik het eindpunt https://api.telldone.app/mcp/user/mcp met een autorisatieheader Bearer YOUR_TOKEN.
Reserveert je client of proxy de header Authorization (bijvoorbeeld sommige gateways in Smithery-stijl), stuur het token dan mee in X-MCP-Token: YOUR_TOKEN. Beide headers werken; zijn ze allebei aanwezig, dan wint Authorization.
Je verbinding testen
Met een eenvoudig cURL-commando controleer je of je token werkt:
curl -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
Een geslaagd antwoord toont alle beschikbare tools.
Rechten (scopes)
OAuth-verbindingen hebben scopes - tijdens het inloggen zie je precies wat de client vraagt en keur je dat uitdrukkelijk goed.
| Scope | Laat de app... |
|---|---|
notes:read | Je notities lezen en volledige notitiedetails openen (de zoektool heeft ook tasks:read en events:read nodig) |
notes:write | Notities aanmaken, bewerken en verwijderen (process_note heeft ook tasks:write en events:write nodig) |
tasks:read / tasks:write | Taken lezen / aanmaken, bewerken, afronden en verwijderen |
events:read / events:write | Evenementen lezen / aanmaken, bewerken en verwijderen |
reports:read | Je dag-, week-, maand- en jaarrapporten lezen |
tags:read / tags:write | Je tags weergeven / tags aanmaken, vastzetten, verwijderen en herstellen |
profile:read | Je accountgegevens en abonnement lezen |
offline_access | Ingelogd blijven (geeft een refresh-token uit zodat je niet elke sessie opnieuw hoeft in te loggen) |
Scopes beperken wat een verbinding kan doen: een verbinding met alleen notes:read kan geen schrijftool aanroepen. Je abonnement stelt daar nog een tweede grens bovenop.
Verbindingen met een bearer-token hebben geen eigen scopes - daarvoor bepaalt alleen de lees- of schrijfmodus van je abonnement wat kan.
Wat je kunt doen
Leestools (10) - alle abonnementen
| Tool | Wat het doet |
|---|---|
| get_notes | Notities weergeven met filters (tags, periode, tekstzoekopdracht) |
| get_note | Eén notitie bekijken met bijbehorende taken, evenementen en het volledige transcript |
| get_notes_full | Meerdere notities met ingesloten taken en evenementen in één aanroep ophalen |
| get_tasks | Taken weergeven gefilterd op status (te doen, klaar, alle), tags of datums |
| get_events | Agenda-evenementen weergeven, filteren op periode |
| get_reports | Je dag-, week-, maand- en jaarrapporten lezen (volledige markdown) |
| get_tags | Al je tags bekijken, gesorteerd op gebruik |
| get_profile | Je accountgegevens zien en hoeveel notities, taken en evenementen je hebt |
| search | Zoeken in notities, taken en evenementen (tekst + semantisch zoeken voor notities) |
| get_change_log | De bewerkingsgeschiedenis van een notitie, taak of evenement zien en of elke bewerking ongedaan is gemaakt |
De tool search ondersteunt semantisch zoeken voor notities - die vindt resultaten op betekenis, niet alleen op trefwoorden. Zoek je bijvoorbeeld op “vergaderingen over budget”, dan vindt hij notities over financiële gesprekken, ook als het woord “budget” er niet in staat.
Schrijftools (17) - Pro en Ultra
| Tool | Wat het doet |
|---|---|
| process_note | Volledige AI-pijplijn - stuur tekst of audio en krijg een notitie terug met taken, evenementen en tags |
| create_note | Een gewone tekstnotitie toevoegen (zonder AI-analyse) |
| create_task | Een taak toevoegen met prioriteit, deadline, herinnering en tags |
| create_event | Een agenda-evenement toevoegen met datum, tijd, locatie, herinneringen, deelnemers en herhaalregel |
| update_note | Titel, samenvatting, type, tags, prioriteit of status van een notitie wijzigen |
| update_task | Titel, beschrijving, prioriteit, deadline, herinnering, tags of status van een taak wijzigen |
| complete_task | Een taak als klaar markeren |
| update_event | Details, tijd, locatie, herinneringen, deelnemers, herhaalregel, tags of status van een evenement wijzigen |
| delete_note | Een notitie verwijderen. De taken en evenementen ervan blijven bestaan |
| delete_task | Een taak verwijderen |
| delete_event | Een evenement verwijderen |
| undo_change_log_entry | Eén bijgehouden bewerking ongedaan maken - door AI of door jezelf gedaan - en de eerdere waarde van het veld terugzetten |
| restore_entity | Een verwijderde of gearchiveerde notitie of taak, of een verwijderd of geannuleerd evenement terughalen |
| create_tag | Een nieuwe tag aanmaken, of een automatisch voorgestelde tag permanent maken |
| set_tag_pinned | Een tag vastzetten of losmaken zodat hij bovenaan staat |
| delete_tag | Een tag verwijderen (kan worden hersteld met restore_tag) |
| restore_tag | Een verwijderde tag terughalen |
Alle schrijf- en verwijderacties verschijnen direct op je verbonden apparaten (telefoon, webapp).
Toolreferentie
get_notes
List notes with optional filtering. Date filters use recorded_at (when you recorded the voice note), or created_at for a note that has none.
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | int | 20 | Number of notes to return (max 50) |
offset | int | 0 | Skip this many notes (for pagination, max 10000) |
tags | string | - | Filter by tags, comma-separated (matches any) |
search | string | - | Text search on title and summary |
date_from | string | - | Start date, YYYY-MM-DD (inclusive) |
date_to | string | - | End date, YYYY-MM-DD (exclusive) |
standalone_only | bool | false | When true, hides follow-up notes (notes attached to a parent note/task/event) and returns only standalone notes |
Returns: list of notes with id, title, summary, type, tags, priority, status, recorded_at, created_at.
get_note
Get a single note with its full transcript and all linked tasks and events.
| Parameter | Type | Description |
|---|---|---|
note_id | string | The note's UUID |
Returns: note with title, summary, transcript, type, tags, priority, status, metadata, created_at, plus tasks[] and events[] arrays.
Also returns transcript_speakers (speaker-labeled transcript turns, for meetings with several speakers - null otherwise), speaker_count (null unless the recording was split by speaker), and parent_note_id/parent_task_id/parent_event_id (set when this note is a follow-up edit of another item). Each tasks[]/events[] entry also includes reminders_at/recurrence_rule (tasks) or reminder_minutes/attendees/recurrence_rule (events).
get_notes_full
Get multiple notes with their tasks and events in a single call. Same filters as get_notes except search, and each note includes embedded tasks[] and events[].
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | int | 10 | Number of notes (max 20) |
offset | int | 0 | Skip this many notes |
tags | string | - | Filter by tags |
date_from | string | - | Start date, YYYY-MM-DD |
date_to | string | - | End date, YYYY-MM-DD |
standalone_only | bool | false | When true, hides follow-up notes (notes attached to a parent note/task/event) and returns only standalone notes |
get_tasks
List tasks with filtering.
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | "todo" | Filter: todo, done, or all |
limit | int | 30 | Number of tasks (max 100) |
offset | int | 0 | Skip this many tasks |
tags | string | - | Filter by tags, comma-separated |
date_from | string | - | Start date, YYYY-MM-DD (filters by deadline; tasks without a deadline are excluded) |
date_to | string | - | End date, YYYY-MM-DD (filters by deadline; tasks without a deadline are excluded) |
Returns: list of tasks with id, title, description, status, priority, tags, deadline, reminder_at, reminders_at, completed_at, completed_by, source, created_at. reminder_at mirrors the first entry of reminders_at for backward compatibility - use reminders_at to see all of a task's reminders.
get_events
List calendar events with date range filtering.
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | int | 30 | Number of events (max 100) |
offset | int | 0 | Skip this many events |
date_from | string | - | First day, YYYY-MM-DD, in your own time zone (inclusive). Events that overlap the range are included, so a multi-day event shows on every day it covers |
date_to | string | - | Last day, YYYY-MM-DD, in your own time zone (inclusive) |
Returns: list of events with id, title, description, status, start_at, end_at, location, is_all_day, tags, note_id, reminder_minutes, attendees, recurrence_rule, created_at.
get_reports
Get your AI-generated reports with full markdown content.
| Parameter | Type | Default | Description |
|---|---|---|---|
report_type | string | "daily" | Type: daily, weekly, monthly, or yearly |
limit | int | 5 | Number of reports (max 10) |
Returns: list of reports with id, type, period_start, period_end, content_md, created_at.
Monthly reports are long (often well over 1,000 words). Use limit=1 if your AI tool has a tight context window.
get_tags
Get all your tags, sorted by pinned first, then by usage count.
No parameters. Returns up to 100 tags, each with tag, usage_count, is_pinned, is_manual.
get_profile
Get your account info and how many notes, tasks and events you have.
No parameters. Returns email, display_name, locale, transcription_locale, timezone, subscription, mcp_mode, created_at, and stats (note/task/event counts).
search
Search across notes, tasks, and events at once. For notes, supports both text search and semantic search (finds results by meaning using AI embeddings).
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | required | Search text (max 500 characters) |
limit | int | 20 | Max results per type (max 20) |
semantic | bool | true | Enable semantic search for notes |
Returns results grouped by type: notes[], tasks[], events[]. Each result has id, type, title, detail, created_at.
Set semantic=false for faster text-only search.
get_change_log
See the edit history of a note, task, or event - every AI-made follow-up edit and every manual edit you made yourself, newest first.
| Parameter | Type | Default | Description |
|---|---|---|---|
entity | string | required | notes, tasks, or events |
entity_id | string | required | The item's UUID |
include_manual | bool | false | Also include your own manual edits, not just AI-made ones |
Returns: list of change entries with id (use this as entry_id for undo), field_name, old_value, new_value, source (follow_up, smart_context, correction_sync for a name fix TellDone carried across a note, or manual), origin_note_id, edited_at, and reverted_at (set once undone).
process_note (Pro and Ultra)
Full AI pipeline - works the same as recording in the app. Send text or audio, and TellDone will transcribe, analyze with AI, and create a structured note with extracted tasks, events, tags, and embeddings.
This tool is asynchronous: it returns immediately with an audio_id and processes in the background. Results arrive via real-time sync to your connected devices, or you can poll with get_notes().
| Parameter | Type | Description |
|---|---|---|
text | string | Required. Text to analyze. If it is not empty, it is used as the transcript and any audio you send is not transcribed; send "" to have the audio transcribed. Limit when no audio is sent: Pro 20,000 / Ultra 50,000 characters |
audio_base64 | string | Base64-encoded audio file. The whole request is limited to 10 MB, so the audio itself can be about 7 MB. It is transcribed only when text is empty |
audio_format | string | m4a, ogg, wav, mp3, aac, or webm (default: m4a) |
parent_task_id | string | UUID of a task this is a follow-up to |
parent_note_id | string | UUID of a note this is a follow-up to |
parent_event_id | string | UUID of an event this is a follow-up to |
Always send text. To have TellDone transcribe audio, send audio_base64 with text set to an empty string (""). If text is not empty, TellDone uses it as the transcript and does not transcribe the audio. Set at most one of the three parent IDs.
Returns: {"audio_id": "...", "status": "processing", "mode": "text-only"} or "mode": "audio+stt" if audio was provided.
process_note is subject to your plan's quotas (uploads per day, notes per month, max text length). get_profile shows only how many notes, tasks and events you have, not your limits. Check your usage in the app under Settings > Usage.
create_note (Pro and Ultra)
Create a plain text note instantly. Does not trigger AI analysis - no tasks or events are extracted. Use process_note when you want TellDone to find tasks and events for you.
| Parameter | Type | Limit | Description |
|---|---|---|---|
title | string | 200 chars | Required |
summary | string | 1000 chars | Optional. Short teaser (1-3 sentences). Used in your reports, so keep it short |
transcript | string | plan-based | Optional. Long-form body shown in the note detail. Not included in reports. Limits: Pro 20,000 / Ultra 50,000 chars |
type | string | - | Optional. task, idea, info (default), status, meeting, event, or reflection |
tags | string | 20 tags | Comma-separated, optional |
suppress_external_sync | boolean | - | Optional, default false. Set true for imported or bulk items: the item is then not sent to your connected apps or automations |
create_task (Pro and Ultra)
Create a new task. The task is also created in your connected Todoist, Notion or Microsoft To Do, and your automations receive task.created. This does not happen when you pass suppress_external_sync: true.
| Parameter | Type | Limit | Description |
|---|---|---|---|
title | string | 200 chars | Required |
description | string | 2000 chars | Optional |
priority | string | - | low, medium (default), or high |
deadline | string | - | YYYY-MM-DD, optional |
reminder_at | string | - | ISO 8601 datetime (for example 2026-04-15T09:00:00Z), optional |
tags | string | 20 tags | Comma-separated, optional |
note_id | string | - | UUID to link task to a parent note, optional |
suppress_external_sync | boolean | - | Optional, default false. Set true for imported or bulk items: the item is then not sent to your connected apps or automations |
create_event (Pro and Ultra)
Create a calendar event. The event is also created in your connected Notion, and your automations receive calendar_event.created. This does not happen when you pass suppress_external_sync: true.
| Parameter | Type | Limit | Description |
|---|---|---|---|
title | string | 200 chars | Required |
start_at | string | - | ISO 8601 datetime, required |
end_at | string | - | ISO 8601 datetime (default: start + 1 hour; for an all-day event, one day) |
description | string | 2000 chars | Optional |
location | string | 200 chars | Optional |
is_all_day | bool | - | Default: false |
tags | string | 20 tags | Comma-separated, optional |
reminder_minutes | string | - | Comma-separated minutes before event (for example 15,60), optional |
attendees | string | - | Comma-separated names or emails, optional |
recurrence_rule | string | - | RRULE string (for example FREQ=WEEKLY;BYDAY=MO,WE,FR), optional. Rules more frequent than hourly, or that can never happen, are refused |
note_id | string | - | UUID to link event to a parent note, optional |
suppress_external_sync | boolean | - | Optional, default false. Set true for imported or bulk items: the item is then not sent to your connected apps or automations |
update_note (Pro and Ultra)
Update one or more fields on an existing note. Only fields you provide are changed. This works exactly like editing the note in the app: its title, summary, tags and type reach its Notion page, your automations receive note.updated, and the edit appears in the history, where it can be undone. A transcript change is saved and sent to Notion too, but is not in the history.
| Parameter | Type | Description |
|---|---|---|
note_id | string | Required, the note's UUID |
title | string | New title (max 200 chars) |
summary | string | New summary (max 1000 chars, pass a space " " to clear) |
transcript | string | New transcript (plan-based limit, pass a space " " to clear) |
type | string | task, idea, info, status, meeting, event, or reflection |
tags | string | Comma-separated tags (replaces all existing tags, max 20) |
priority | string | low, medium, or high |
status | string | active or archived |
For notes created by the voice pipeline, transcript is the original speech-to-text output. Overwriting it replaces your original words. To keep them, add to the transcript instead of replacing it.
update_task (Pro and Ultra)
Update one or more fields on an existing task. Only fields you provide are changed. This works exactly like editing the task in the app: the change reaches its copies in Todoist, Notion and Microsoft To Do, your automations receive task.updated, and the edit appears in the task's history, where it can be undone. Setting status to done completes it like complete_task. A deadline can be a date or a full date and time (its date is used). Each tag can be up to 50 characters.
| Parameter | Type | Description |
|---|---|---|
task_id | string | Required, the task's UUID |
title | string | New title |
description | string | New description (pass a space " " to clear) |
priority | string | low, medium, or high |
deadline | string | YYYY-MM-DD. This tool can't clear a deadline; clear it in the app |
status | string | todo or done |
tags | string | Comma-separated tags (replaces all existing tags, max 20) |
reminder_at | string | ISO 8601 datetime (pass a space to clear) |
Setting status to done also records when and how the task was completed.
complete_task (Pro and Ultra)
Shortcut to mark a task as done.
| Parameter | Type | Description |
|---|---|---|
task_id | string | Required, the task's UUID |
Returns an error if the task doesn't exist or is already completed.
update_event (Pro and Ultra)
Update one or more fields on an existing event. Only fields you provide are changed. This works exactly like editing the event in the app: the change reaches its Notion page, your automations receive calendar_event.updated, and the edit appears in the history, where it can be undone.
| Parameter | Type | Description |
|---|---|---|
event_id | string | Required, the event's UUID |
title | string | New title |
description | string | New description (pass a space to clear) |
start_at | string | New start time (ISO 8601) |
end_at | string | New end time (ISO 8601) |
location | string | New location (pass a space to clear) |
status | string | confirmed, tentative, or cancelled |
tags | string | Comma-separated tags (replaces all existing tags, max 20) |
is_all_day | string | "true" or "false" |
reminder_minutes | string | Comma-separated minutes before event (for example 15,60, pass a space to clear) |
attendees | string | Comma-separated names or emails (pass a space to clear) |
recurrence_rule | string | RRULE string (pass a space to clear) |
delete_note (Pro and Ultra)
Delete a note. Only the note is deleted: its tasks and events stay. This works exactly like deleting it in the app: your automations receive note.deleted. A copy of the note in Notion is not removed (the app does not remove it either).
| Parameter | Type | Description |
|---|---|---|
note_id | string | Required, the note's UUID |
delete_task (Pro and Ultra)
Delete a task. This works exactly like deleting it in the app: its copies in Todoist, Notion and Microsoft To Do are deleted too, and your automations receive task.deleted. Bring it back with restore_entity.
| Parameter | Type | Description |
|---|---|---|
task_id | string | Required, the task's UUID |
delete_event (Pro and Ultra)
Delete an event. This works exactly like deleting it in the app: your automations receive calendar_event.deleted. The event's page in Notion is not removed (the app does not remove it either).
| Parameter | Type | Description |
|---|---|---|
event_id | string | Required, the event's UUID |
undo_change_log_entry (Pro and Ultra)
Undo a single tracked edit - restores the field to its value before that edit, whether the edit was made by the AI (from a follow-up recording) or by you directly.
| Parameter | Type | Description |
|---|---|---|
entity | string | Required, notes, tasks, or events |
entity_id | string | Required, the item's UUID |
entry_id | string | Required, the change entry's id from get_change_log |
Returns: {"entry_id", "entity_type", "entity_id", "field_name", "restored_value", "reverted_at"}. Undoing the same entry twice returns an error - it's already undone.
restore_entity (Pro and Ultra)
Bring back a deleted or archived note or task, or a deleted or canceled event.
| Parameter | Type | Description |
|---|---|---|
entity | string | Required, notes, tasks, or events |
entity_id | string | Required, the item's UUID |
Returns: the restored item as JSON.
create_tag (Pro and Ultra)
Create a new tag, or turn an existing auto-suggested tag into a permanent one.
| Parameter | Type | Description |
|---|---|---|
tag | string | Required, 1-50 characters (stored lowercase) |
category | string | Optional |
set_tag_pinned (Pro and Ultra)
Pin or unpin a tag so it sorts to the top of your tag list.
| Parameter | Type | Description |
|---|---|---|
tag | string | Required |
pinned | bool | Required |
Tags containing a / character can't be pinned.
delete_tag (Pro and Ultra)
Remove a tag. Can be brought back with restore_tag.
| Parameter | Type | Description |
|---|---|---|
tag | string | Required |
restore_tag (Pro and Ultra)
Bring back a deleted tag.
| Parameter | Type | Description |
|---|---|---|
tag | string | Required |
Invoerlimieten
| Veld | Maximale lengte | Gebruikt in |
|---|---|---|
| title | 200 tekens | notitie, taak, evenement aanmaken/bijwerken |
| description | 2.000 tekens | taak, evenement aanmaken/bijwerken |
| summary | 1.000 tekens (harde limiet) | notitie aanmaken/bijwerken. Wordt in je rapporten gebruikt, dus houd het kort |
| transcript | afhankelijk van abonnement: Pro 20.000 / Ultra 50.000 | notitie aanmaken/bijwerken. Lange tekst, niet in rapporten |
| text | afhankelijk van abonnement: Pro 20.000 / Ultra 50.000 (als er geen audio wordt gestuurd) | process_note |
| location | 200 tekens | evenement aanmaken/bijwerken |
| tags | 20 tags | notitie, taak, evenement aanmaken/bijwerken |
| search query | 500 tekens | search |
| audio_base64 | ongeveer 7 MB audio (het hele verzoek is beperkt tot 10 MB) | process_note |
Overschrijd je een limiet, dan geeft de tool een foutmelding zoals "title too long (max 200 chars, got 250)".
Foutafhandeling
De meeste tools geven fouten terug als JSON:
{"error": "description of what went wrong"}
Fouten over abonnement, scope en invoerlimieten komen terug als toolfout met hetzelfde bericht.
Veelvoorkomende fouten:
| Fout | Wanneer |
|---|---|
"This TellDone connection is read-only. Creating and editing needs the Pro or Ultra plan." | Schrijftool aangeroepen in de alleen-lezenmodus (Free en Basic, of Pro en Ultra overgeschakeld naar alleen-lezen) |
"Daily limit reached: the Free plan includes 100 TellDone requests a day..." | Free heeft de 100 verzoeken voor de dag opgebruikt |
"Daily limit reached (N/M today)" | Je hebt vandaag via AI-assistenten evenveel items gemaakt als je abonnement toestaat (process_note, create_note, create_task en create_event tellen elk mee) |
"Notes limit reached (X/Y this month)" | De maandlimiet voor notities van je abonnement is op |
"Invalid note_id format" | Een string die geen UUID is, als ID doorgegeven |
"Note not found" | ID bestaat niet of hoort bij een andere gebruiker |
"Task not found or already completed" | complete_task op een taak die niet bestaat of al klaar is |
"title too long (max 200 chars, got N)" | Invoerlimiet overschreden |
"Too many tags (max 20)" | Meer dan 20 tags opgegeven |
Fouten op HTTP-niveau:
| Code | Betekenis |
|---|---|
| 401 | Ongeldig, ingetrokken of verwijderd token (MCP uitzetten verwijdert je token en opnieuw genereren vervangt het) |
| 429 | Snelheidslimiet overschreden (5 verzoeken/s, piek tot 20) |
In Free wordt het bereiken van de limiet van 100 verzoeken per dag als toolfoutmelding gemeld (niet als HTTP-code) en wordt hij om middernacht gereset in de tijdzone die in je account is opgeslagen.
Gebruiksvoorbeelden
Alle voorbeelden gebruiken cURL met het MCP JSON-RPC-protocol. Vervang YOUR_TOKEN door je toegangstoken.
Data lezen
# Get your profile and stats
curl -s -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_profile"}}'
# List recent notes (limit 5, from April 2026)
curl -s -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"get_notes","arguments":{"limit":5,"date_from":"2026-04-01"}}}'
# Search notes (hybrid text + semantic)
curl -s -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"search","arguments":{"query":"project deadline","limit":5}}}'
Data schrijven (Pro en Ultra)
# Process a note through full AI pipeline (extracts tasks + events)
curl -s -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":10,"method":"tools/call",
"params":{"name":"process_note","arguments":{"text":"Need to buy groceries tomorrow. Meeting with Katie at 3pm at the cafe to discuss the project."}}}'
# Create a task with deadline and reminder
curl -s -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":11,"method":"tools/call",
"params":{"name":"create_task","arguments":{"title":"Review PR","priority":"high","deadline":"2026-04-15","reminder_at":"2026-04-15T09:00:00Z","tags":"dev"}}}'
# Create a repeating event with reminders and attendees
curl -s -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":12,"method":"tools/call",
"params":{"name":"create_event","arguments":{"title":"Team standup","start_at":"2026-04-12T10:00:00Z","reminder_minutes":"15","attendees":"Katie,John","recurrence_rule":"FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR","tags":"meeting"}}}'
# Complete a task
curl -s -X POST https://api.telldone.app/mcp/user/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":13,"method":"tools/call",
"params":{"name":"complete_task","arguments":{"task_id":"<task-uuid>"}}}'
Een geslaagd antwoord ziet er zo uit:
{
"jsonrpc": "2.0",
"id": 11,
"result": {
"content": [{"type": "text", "text": "{\"id\":\"...\",\"title\":\"Review PR\",\"status\":\"todo\"}"}]
}
}
Schrijf- en updatetools geven korte antwoorden, vooral id, title en status. Verwijdertools geven id en deleted terug. Voor alle details (tags, prioriteit, deadline enzovoort) na een schrijfactie doe je een vervolgaanroep om te lezen, zoals get_tasks of get_note.
Tokenbeheer
| Actie | Hoe |
|---|---|
| Token bekijken | iPhone Instellingen > Integraties > AI-agents (MCP) > Voor ontwikkelaars (of op het web Instellingen > Integraties > AI-agents (MCP)), tik op Tonen |
| Token kopiëren | Tik naast het token op Kopiëren |
| Opnieuw genereren | Tik op Token opnieuw genereren en bevestig. Het oude token werkt direct niet meer. Assistenten die met OAuth-inloggen zijn verbonden, worden hierdoor niet beïnvloed; ontkoppel ze onder Verbonden apps |
| Modus wijzigen | Pro en Ultra: kies Alleen-lezen of Lezen en schrijven. Free en Basic zijn altijd alleen-lezen |
| Uitschakelen | Tik op Uitschakelen en bevestig (“Dit trekt de toegang voor alle gekoppelde AI-tools in.”). Je token wordt verwijderd en alle verbindingen stoppen. Zet je MCP later weer aan, dan krijg je een nieuw token en werken apps die met inloggen (OAuth) zijn verbonden weer zonder opnieuw in te loggen. Om een app definitief te verwijderen, tik je op Ontkoppelen onder Verbonden apps |
Wat je je AI-agent kunt vragen
Eenmaal verbonden vraag je je AI-tool bijvoorbeeld:
Je dag terugblikken:
- “Waar heb ik vandaag aan gewerkt?”
- “Laat me mijn notities van deze week zien”
- “Welke taken zijn achterstallig?”
Taken beheren:
- “Maak een taak: kwartaalrapport nakijken, hoge prioriteit, deadline vrijdag”
- “Markeer de Figma-taak als klaar”
- “Aan welke taken werk ik?”
Zoeken en analyseren:
- “Zoek alle notities over de marketingstrategie”
- “Welke evenementen heb ik volgende week?”
- “Vat mijn dagrapporten van vorige week samen”
Vooruit plannen:
- “Maak een evenement: teamstandup morgen om 10 uur”
- “Wat staat er deze week in mijn agenda?”
- “Laat me mijn belangrijkste tags zien - waar besteed ik de meeste tijd aan?”
Je assistent kan je notities, taken, evenementen en rapporten lezen en complexe vragen beantwoorden door informatie uit meerdere tools te combineren. In Pro en Ultra met Lezen en schrijven aan kan hij ze ook aanmaken, bijwerken en verwijderen.
Goed om te weten
- Integraties en automatiseringen -
process_notewerkt als een opname, dus de notitie, taken en evenementen gaan naar je verbonden integraties en webhook-automatiseringen. Items die je met de andere schrijftools aanmaakt, bewerkt of verwijdert, gedragen zich precies zoals in de app: ze komen terecht in je verbonden integraties (evenementen en bewerkingen van notities alleen in Notion) en bij je automatiseringen. Een taak herstellen metrestore_entity, of het afronden ervan ongedaan maken metundo_change_log_entry, heropent hem ook in de integraties waarmee hij was gesynchroniseerd. - Bewerkingen door een AI-assistent - in de Wijzigingen van het item staan ze gemarkeerd als gemaakt door een assistent. Ze worden niet gebruikt om de spraakherkenning van TellDone te verbeteren en worden niet overgenomen in de andere items van de notitie. Bewerkingen via een assistent delen de limiet van de app van 30 bewerkingen per minuut.
- Semantisch zoeken - notities die met
process_noteofcreate_notezijn gemaakt, krijgen allebei embeddings, dus ze verschijnen na een korte vertraging in semantische zoekresultaten. - Datumfilters - voor notities zijn datums UTC-dagen. Voor evenementen zijn datums je eigen lokale dagen, en een evenement dat de periode overlapt, wordt meegenomen. Voor taken is het filter de deadlinedatum.
Beveiliging
- Elke gebruiker krijgt een uniek toegangstoken van 384 bits
- Je token wordt direct ingetrokken als je MCP uitzet of het opnieuw genereert
- Elk verzoek is beperkt tot je account, dus je agent kan alleen bij je eigen data
- De verbinding gebruikt HTTPS met snelheidslimiet (5 verzoeken/s, piek tot 20)
- OAuth-verbindingen gebruiken PKCE met autorisatiecodes voor eenmalig gebruik en kortlevende toegangstokens - je kunt een verbinding op elk moment in de app intrekken
Voor een technische verdieping - discovery-eindpunten, levensduur van tokens, de volledige OAuth-flow - zie onze open-source connectorreferentie op github.com/exp78/telldone-mcp, of vraag https://api.telldone.app/.well-known/oauth-protected-resource rechtstreeks op.
Privacy en gegevensstroom
Een verbonden AI-tool krijgt je data alleen als hij TellDone aanroept, meestal omdat jij hem iets hebt gevraagd. Hij ontvangt alleen de antwoorden op die aanroepen, binnen de rechten die je hebt goedgekeurd. Om de toegang te beperken, schakel je over naar Alleen-lezen, ontkoppel je de app onder Verbonden apps, of genereer je je toegangstoken opnieuw of zet je het uit in Instellingen. Zie het Privacybeleid voor alle details, of neem bij vragen contact op via support@telldone.app.
Problemen oplossen
| Symptoom | Oorzaak / oplossing |
|---|---|
| De OAuth-toestemmingspagina zegt “Wrong email or password” | Gebruik het e-mailadres en wachtwoord waarmee je in de app inlogt, of kies op dezelfde pagina Inloggen met Apple / Inloggen met Google. |
| Verbonden, maar de AI kan niets aanmaken of bewerken | Je abonnement is Free of Basic (alleen-lezen), je modus is alleen-lezen, of de verbinding heeft geen schrijfrechten. Als je verbond voordat je upgradede, ontkoppel je de app onder Verbonden apps en verbind je hem opnieuw. Je modus kun je in de instellingen controleren. |
| Foutmelding “Insufficient scope” van een tool | De verbinding heeft dat recht niet. In Free en Basic worden schrijfrechten nooit verleend, dus aanmaken en bewerken vereist Pro of Ultra. Als je verbond voordat je upgradede, ontkoppel je de app onder Verbonden apps en verbind je hem opnieuw. |
Het gekopieerde fragment zegt YOUR_TOKEN en de client kan niet verbinden | Je hebt het gekopieerd terwijl het token verborgen was. Tik in Voor ontwikkelaars op Tonen en kopieer het fragment opnieuw. |
| Tools verschijnen helemaal niet | MCP staat niet aan voor je account (Instellingen > Integraties > AI-agents (MCP) > Inschakelen). |
| "Daily limit reached" | Twee limieten gebruiken dit bericht. "Daily limit reached: the Free plan includes 100 TellDone requests a day" is de verzoeklimiet van Free. "Daily limit reached (N/M today)" betekent dat je vandaag via AI-assistenten evenveel items hebt gemaakt als je abonnement toestaat: process_note, create_note, create_task en create_event tellen elk mee, ook in Pro en Ultra. Beide worden om middernacht gereset in de tijdzone die in je account is opgeslagen. |
| Mijn client laat me alleen kiezen uit een lijst met connectors en TellDone staat er niet bij | TellDone staat nog in geen enkele connectormap van een client - voeg het toe als eigen connector met de MCP-URL, of gebruik de methode met een bearer-token. |
Zie ook
- Webhook-automatiseringen - stuur data automatisch naar externe diensten
- Todoist - speciale tweerichtings-taaksynchronisatie
- Notion - speciale Notion-integratie