KI-Agenten (MCP)
MCP funktioniert in allen Plänen. Free und Basic bekommen reinen Lesezugriff auf alle 10 Lese-Tools (Free ist auf 100 Anfragen pro Tag begrenzt). Pro und Ultra bekommen vollen Lese- und Schreibzugriff (27 Tools) und können auf den reinen Lesemodus umstellen, wenn sie das lieber möchten.
Mit MCP (Model Context Protocol) verbindest du KI-Assistenten wie ChatGPT und Claude, Coding-Assistenten und Automatisierungstools direkt mit deinen TellDone-Daten. Sobald die Verbindung steht, kann dein Assistent deine Notizen, Aufgaben, Ereignisse, Berichte, Tags und den Änderungsverlauf lesen. Ab Pro kann er außerdem Elemente erstellen, aktualisieren, löschen und wiederherstellen. Es gibt 27 Tools: 10 zum Lesen (jeder Plan) und 17 zum Schreiben (ab Pro).
Auf dem iPhone öffnet Einstellungen > Integrationen > KI-Agenten (MCP) den MCP-Einrichtungsbildschirm, auf dem dein Zugriffstoken standardmäßig verdeckt ist:

Und im Web:

Zwei Wege zum Verbinden
Es gibt zwei Wege, einen KI-Client zu verbinden:
- Mit TellDone anmelden (OAuth) (empfohlen) - du meldest dich mit deinem TellDone-Konto an und bestätigst, was die App anfragt. ChatGPT und Claude nutzen das, und du musst kein Token kopieren.
- Bearer-Token - kopiere dein Zugriffstoken aus den Einstellungen und füge es in die Konfiguration deines Clients ein. Am einfachsten für Skripte, Kommandozeilen-Tools und Clients ohne eingebauten OAuth-Ablauf.
| Client | Empfohlen |
|---|---|
| ChatGPT (chatgpt.com oder die ChatGPT-Desktop-App, nicht die Mobil-App) | OAuth - füge einen eigenen MCP-Server mit der MCP-URL hinzu und melde dich an |
| Claude (Website, Desktop, iPhone-App) / Cowork | OAuth - füge einen eigenen Connector mit der MCP-URL hinzu und melde dich an |
| Claude Code (CLI) | Vorerst Bearer-Token - füge den Authorization-Header mit deinem Token hinzu |
| Skripte oder dein eigener Code | Bearer-Token - am einfachsten zu automatisieren |
| Ein Client, bei dem du nur aus einem Verzeichnis gelisteter Connectors wählen kannst | Füge TellDone als eigenen Connector mit der MCP-URL hinzu oder nutze ein Bearer-Token. TellDone ist noch in keinem Connector-Verzeichnis |
Voraussetzungen im Plan
| Plan | MCP |
|---|---|
| Free | Nur Lesen (10 Lese-Tools), 100 Anfragen pro Tag |
| Basic | Nur Lesen (10 Lese-Tools), kein Tageslimit |
| Pro | Lesen und Schreiben (27 Tools) - kann auf den Lesemodus umgestellt werden |
| Ultra | Lesen und Schreiben (27 Tools) - kann auf den Lesemodus umgestellt werden |
Das Limit von 100 Anfragen pro Tag in Free zählt nur Tool-Aufrufe. Verbinden, Anmelden und das Auflisten der Tools zählen nicht. Der Tag folgt der in deinem Konto gespeicherten Zeitzone und endet um Mitternacht. Wenn du das Limit erreichst, bekommt dein Assistent eine Nachricht dazu. Schreib-Tools werden in Free und Basic abgelehnt. Mit einem Zugriffstoken antworten sie, dass die Verbindung nur lesen darf und dass Erstellen und Bearbeiten ab Pro nötig ist. Bei der Anmeldung (OAuth) antworten die meisten mit „Insufficient scope“, weil Verbindungen in Free und Basic nie Schreibrechte bekommen.
Der Bildschirm in der App
Öffne Einstellungen > Integrationen und tippe im Bereich KI-Agenten auf KI-Agenten (MCP). Der Bildschirm sagt: „Lass ChatGPT, Claude und andere KI-Assistenten mit deinen TellDone-Notizen, Aufgaben und Ereignissen arbeiten.“ und zeigt deinen Plan:
- Free: „Dein Plan: Nur Lesezugriff, 100 Anfragen pro Tag. Schreiben gibt es ab Pro.“
- Basic: „Dein Plan: Nur Lesezugriff“
- Pro und Ultra: „Dein Plan: Lese- und Schreibzugriff“
Solange MCP aus ist, tippe auf Aktivieren, um es einzuschalten.
Sobald es aktiviert ist, zeigt der Bildschirm:
- Zugriffsmodus (Pro und Ultra) - wähle jederzeit Nur lesen oder Lesen & schreiben.
- Assistenten verbinden - Schritte für ChatGPT, Claude und Anderer Assistent. Du meldest dich im Assistenten bei TellDone an, ein Token ist also nicht nötig.
- Verbundene Apps - die Assistenten, die du verbunden hast, jeweils mit einer Taste Trennen. Der Bereich bleibt leer, bis die erste Verbindung steht.
- Für Entwickler (standardmäßig eingeklappt) - das Feld Zugriffstoken (verdeckt, mit Anzeigen / Ausblenden und Kopieren), Token neu erstellen und ein Umschalter Claude Code / Cursor / Andere mit fertigem Text und eigener Taste Kopieren. Claude Code gibt dir den Befehl
claude mcp add, Cursor das JSON für.cursor/mcp.json, und Andere listet die Serveradresse, die OAuth-Anmeldung und den HeaderAuthorization: Bearer. Solange das Token verdeckt ist, zeigen die SnippetsYOUR_TOKEN. Tippe auf Anzeigen, und sie enthalten dein echtes Token.
Das Web hat dieselben Bedienelemente in einem anderen Layout, ohne eingeklappten Entwicklerbereich: die OAuth-Adresse mit einer Taste Kopieren, deine Token-Steuerung, Verbundene Apps mit Trennen und Bearer-Token manuell einrichten mit sechs Client-Optionen (Claude Code, Cursor, Windsurf, Codex, OpenClaw und cURL). Im Web enthalten die Snippets immer dein echtes Token, auch wenn das Tokenfeld verborgen ist. Behandle sie also wie das Token selbst.
- Dokumentation - ein Link zu dieser Seite.
- Deaktivieren - schaltet MCP aus. Du bestätigst mit „Damit wird der Zugriff für alle verbundenen KI-Tools widerrufen.“ Dein Token wird gelöscht, und alle Verbindungen enden. Wenn du MCP wieder aktivierst, bekommst du ein neues Token, und Apps, die per Anmeldung (OAuth) verbunden sind, funktionieren wieder, ohne dass du dich neu anmeldest. Um eine App endgültig zu entfernen, tippe unter Verbundene Apps auf Trennen.
Halte dein Zugriffstoken geheim. Jeder mit dem Token kann auf deine TellDone-Daten zugreifen. Tippe auf Token neu erstellen, wenn du je vermutest, dass es bekannt geworden ist.
So aktivierst du es
Du kannst MCP auf beiden Plattformen einrichten:
- iPhone: Einstellungen > Integrationen > KI-Agenten (MCP)
- Web: app.telldone.app > Einstellungen > Integrationen > KI-Agenten (MCP)
Schritte:
- Tippe auf Aktivieren.
- Wähle in Pro und Ultra deinen Zugriffsmodus (Nur lesen oder Lesen & schreiben). Free und Basic können nur lesen.
- Um ChatGPT oder Claude zu verbinden, tippe unter Assistenten verbinden darauf und folge den Schritten (siehe unten). Ein Token ist nicht nötig.
- Für einen Coding-Client auf dem iPhone öffne Für Entwickler, tippe auf Anzeigen, wähle Claude Code, Cursor oder Andere und tippe unter dem Snippet auf Kopieren. Wenn du kopierst, bevor du auf Anzeigen getippt hast, steht im Snippet
YOUR_TOKENstatt deines Tokens. Wähle im Web deinen Client unter Bearer-Token manuell einrichten und kopiere das Snippet; es enthält dein Token schon. - Füge das Snippet in deinen Client oder dessen Konfigurationsdatei ein.
Mit OAuth verbinden
OAuth ist der empfohlene Weg für ChatGPT, Claude und Cowork - du meldest dich mit deinem TellDone-Konto an, statt ein Token zu kopieren.
MCP-URL für OAuth: https://api.telldone.app/mcp/user
Derselbe Server antwortet auch unter https://api.telldone.app/mcp/user/mcp, und beide Adressen akzeptieren ein Bearer-Token. Für die OAuth-Anmeldung nimm die erste.
ChatGPT
Einen eigenen MCP-Server kannst du auf chatgpt.com oder in der ChatGPT-Desktop-App hinzufügen. Die ChatGPT-Mobil-App kann keine eigenen Connectors hinzufügen, und die TellDone-App sagt es so: „Die ChatGPT-App fügt Connectors nur aus ihrem Katalog hinzu.“ Tippe in TellDone auf Anleitung an meinen Computer senden, um die Anleitung auf einem Computer zu bekommen. Sobald TellDone dort hinzugefügt ist, steht es auch in der ChatGPT-Mobil-App zur Verfügung.
Die Schritte in der App:
- Öffne am Computer chatgpt.com/plugins, klicke auf Add und wähle Add custom MCP server.
- Nenne ihn TellDone, füge die Adresse unten (
https://api.telldone.app/mcp/user) ein und wähle OAuth. - Bestätige und installiere ihn, melde dich dann bei TellDone an und erlaube den Zugriff.
Sieh dir die Anleitung von OpenAI zu eigenen MCP-Servern an, falls sich die Menünamen ändern.
Claude (Website, Desktop, iPhone-App) / Cowork
Die Schritte in der App:
- Öffne in Claude Customize → Connectors und tippe auf Add custom connector.
- Füge die Adresse unten (
https://api.telldone.app/mcp/user) ein. - Melde dich bei TellDone an und erlaube den Zugriff.
Wenn du dich anmeldest, zeigt die Zustimmungsseite von TellDone, welche App Zugriff anfragt und welche Berechtigungen sie genau will. Melde dich mit deiner TellDone-E-Mail und deinem Passwort an und klicke auf Allow access, oder tippe auf Mit Apple anmelden oder Mit Google anmelden, was den Zugriff im selben Schritt bestätigt. Claude verbindet sich von selbst - du musst kein Token kopieren.
Wenn sich die Menünamen ändern, sieh dir die Anleitung von Anthropic zum Hinzufügen eines eigenen Connectors an.
Mit einem Bearer-Token verbinden
Für Claude Code, Cursor und andere Clients ohne eingebaute OAuth-Anmeldung füge dein Zugriffstoken direkt in die Konfiguration des Clients ein. Ersetze in allen Beispielen unten YOUR_TOKEN durch das Token aus deinen Einstellungen.
Claude Code (Bearer-Token)
claude mcp add --transport http telldone \
https://api.telldone.app/mcp/user/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
Du musst das nicht selbst tippen: Tippe unter Einstellungen > Integrationen > KI-Agenten (MCP) > Für Entwickler auf Anzeigen, wähle Claude Code und tippe auf Kopieren. Der kopierte Befehl enthält dein Token schon.
Cursor
Füge es in .cursor/mcp.json ein (oder kopiere es unter Für Entwickler > Cursor, nachdem du auf Anzeigen getippt hast):
{
"mcpServers": {
"telldone": {
"url": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
Andere Clients
Einstellungen für andere MCP-Clients:
Codex
Füge es in codex.json ein:
{
"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
Jedes Tool, das MCP über HTTP unterstützt, kann sich verbinden. Nutze den Endpunkt https://api.telldone.app/mcp/user/mcp mit einem Authorization-Header Bearer YOUR_TOKEN.
Wenn dein Client oder Proxy den Header Authorization für sich reserviert (zum Beispiel manche Gateways im Smithery-Stil), sende das Token stattdessen in X-MCP-Token: YOUR_TOKEN. Beide Header funktionieren; sind beide vorhanden, gewinnt Authorization.
Die Verbindung testen
Mit einem einfachen cURL-Befehl kannst du prüfen, ob dein Token funktioniert:
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}'
Eine erfolgreiche Antwort listet alle verfügbaren Tools auf.
Berechtigungen (Scopes)
OAuth-Verbindungen haben Scopes - bei der Anmeldung siehst du genau, was der Client anfragt, und bestätigst es ausdrücklich.
| Scope | Erlaubt der App ... |
|---|---|
notes:read | Deine Notizen lesen und die vollständigen Details einer Notiz öffnen (das Tool search braucht außerdem tasks:read und events:read) |
notes:write | Notizen erstellen, bearbeiten und löschen (process_note braucht außerdem tasks:write und events:write) |
tasks:read / tasks:write | Aufgaben lesen / erstellen, bearbeiten, abschließen und löschen |
events:read / events:write | Ereignisse lesen / erstellen, bearbeiten und löschen |
reports:read | Deine Tages-, Wochen-, Monats- und Jahresberichte lesen |
tags:read / tags:write | Deine Tags auflisten / Tags erstellen, anheften, löschen und wiederherstellen |
profile:read | Deine Kontoinfos und dein Abo lesen |
offline_access | Angemeldet bleiben (gibt ein Refresh-Token aus, damit du dich nicht in jeder Sitzung neu anmelden musst) |
Scopes begrenzen, was eine Verbindung tun kann: Eine Verbindung nur mit notes:read kann kein Schreib-Tool aufrufen. Dein Plan setzt zusätzlich eine zweite Grenze.
Verbindungen mit Bearer-Token haben keine einzelnen Scopes - für sie gilt nur der Lese-/Schreibmodus deines Plans.
Was du tun kannst
Lese-Tools (10) - alle Pläne
| Tool | Was es tut |
|---|---|
| get_notes | Notizen mit Filtern auflisten (Tags, Zeitraum, Textsuche) |
| get_note | Eine einzelne Notiz mit ihren untergeordneten Aufgaben, Ereignissen und dem vollständigen Transkript ansehen |
| get_notes_full | Mehrere Notizen mit eingebetteten Aufgaben und Ereignissen in einem Aufruf abrufen |
| get_tasks | Aufgaben nach Status (offen, erledigt, alle), Tags oder Daten gefiltert auflisten |
| get_events | Kalenderereignisse auflisten, nach Zeitraum filtern |
| get_reports | Deine Tages-, Wochen-, Monats- und Jahresberichte lesen (vollständiges Markdown) |
| get_tags | Alle deine Tags nach Nutzung sortiert ansehen |
| get_profile | Deine Kontoinfos sehen und wie viele Notizen, Aufgaben und Ereignisse du hast |
| search | Notizen, Aufgaben und Ereignisse durchsuchen (Text + semantische Suche für Notizen) |
| get_change_log | Den Bearbeitungsverlauf einer Notiz, Aufgabe oder eines Ereignisses sehen und ob jede Änderung rückgängig gemacht wurde |
Das Tool search unterstützt die semantische Suche für Notizen - es findet Ergebnisse nach Bedeutung, nicht nur nach Stichwörtern. Wenn du zum Beispiel „Meetings zum Budget“ suchst, findet es auch Notizen über Finanzgespräche, selbst wenn sie das Wort „Budget“ nicht enthalten.
Schreib-Tools (17) - Pro und Ultra
| Tool | Was es tut |
|---|---|
| process_note | Vollständige KI-Pipeline - sende Text oder Audio und bekomme eine Notiz mit Aufgaben, Ereignissen und Tags zurück |
| create_note | Eine reine Textnotiz hinzufügen (ohne KI-Analyse) |
| create_task | Eine Aufgabe mit Priorität, Frist, Erinnerung und Tags hinzufügen |
| create_event | Ein Kalenderereignis mit Datum, Uhrzeit, Ort, Erinnerungen, Teilnehmern und Wiederholungsregel hinzufügen |
| update_note | Titel, Zusammenfassung, Typ, Tags, Priorität oder Status einer Notiz ändern |
| update_task | Titel, Beschreibung, Priorität, Frist, Erinnerung, Tags oder Status einer Aufgabe ändern |
| complete_task | Eine Aufgabe als erledigt markieren |
| update_event | Details, Zeit, Ort, Erinnerungen, Teilnehmer, Wiederholungsregel, Tags oder Status eines Ereignisses ändern |
| delete_note | Eine Notiz löschen. Ihre Aufgaben und Ereignisse bleiben erhalten |
| delete_task | Eine Aufgabe löschen |
| delete_event | Ein Ereignis löschen |
| undo_change_log_entry | Eine einzelne erfasste Änderung rückgängig machen - von der KI oder von dir - und den vorherigen Wert des Felds wiederherstellen |
| restore_entity | Eine gelöschte oder archivierte Notiz oder Aufgabe oder ein gelöschtes oder abgesagtes Ereignis zurückholen |
| create_tag | Einen neuen Tag erstellen oder einen automatisch vorgeschlagenen Tag zu einem dauerhaften machen |
| set_tag_pinned | Einen Tag anheften oder lösen, damit er ganz oben einsortiert wird |
| delete_tag | Einen Tag entfernen (kann mit restore_tag wiederhergestellt werden) |
| restore_tag | Einen gelöschten Tag zurückholen |
Alle Schreib- und Löschvorgänge erscheinen sofort auf deinen verbundenen Geräten (iPhone, Web-App).
Tools-Referenz
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 |
Eingabelimits
| Feld | Maximale Länge | Verwendet in |
|---|---|---|
| title | 200 Zeichen | Notiz, Aufgabe, Ereignis erstellen/aktualisieren |
| description | 2.000 Zeichen | Aufgabe, Ereignis erstellen/aktualisieren |
| summary | 1.000 Zeichen (fest) | Notiz erstellen/aktualisieren. Wird in deinen Berichten verwendet, halte sie also kurz |
| transcript | planabhängig: Pro 20.000 / Ultra 50.000 | Notiz erstellen/aktualisieren. Langer Haupttext, nicht in Berichten |
| text | planabhängig: Pro 20.000 / Ultra 50.000 (wenn kein Audio gesendet wird) | process_note |
| location | 200 Zeichen | Ereignis erstellen/aktualisieren |
| tags | 20 Tags | Notiz, Aufgabe, Ereignis erstellen/aktualisieren |
| search query | 500 Zeichen | search |
| audio_base64 | etwa 7 MB Audio (die gesamte Anfrage ist auf 10 MB begrenzt) | process_note |
Wenn du ein Limit überschreitest, gibt das Tool eine Fehlermeldung zurück wie "title too long (max 200 chars, got 250)".
Fehlerbehandlung
Die meisten Tools geben Fehler als JSON zurück:
{"error": "description of what went wrong"}
Fehler zu Plan, Scope und Eingabelimit kommen als Tool-Fehler mit derselben Meldung zurück.
Häufige Fehler:
| Fehler | Wann |
|---|---|
"This TellDone connection is read-only. Creating and editing needs the Pro or Ultra plan." | Schreib-Tool im Lesemodus aufgerufen (Free und Basic oder Pro und Ultra auf Lesen umgestellt) |
"Daily limit reached: the Free plan includes 100 TellDone requests a day..." | Free hat die 100 Anfragen des Tages aufgebraucht |
"Daily limit reached (N/M today)" | Du hast heute über KI-Assistenten so viele Elemente erstellt, wie dein Plan erlaubt (process_note, create_note, create_task und create_event zählen jeweils) |
"Notes limit reached (X/Y this month)" | Das monatliche Notizlimit deines Plans ist aufgebraucht |
"Invalid note_id format" | Ein String, der keine UUID ist, wurde als ID übergeben |
"Note not found" | Die ID existiert nicht oder gehört einem anderen Nutzer |
"Task not found or already completed" | complete_task für eine nicht vorhandene oder schon erledigte Aufgabe |
"title too long (max 200 chars, got N)" | Eingabelimit überschritten |
"Too many tags (max 20)" | Mehr als 20 Tags übergeben |
Fehler auf HTTP-Ebene:
| Code | Bedeutung |
|---|---|
| 401 | Ungültiges, widerrufenes oder gelöschtes Token (beim Deaktivieren von MCP wird dein Token gelöscht, beim Neuerzeugen wird es ersetzt) |
| 429 | Ratenlimit überschritten (5 Anfragen/s, Spitzen bis 20) |
In Free wird das Erreichen des Limits von 100 Anfragen pro Tag als Tool-Fehlermeldung gemeldet (nicht als HTTP-Code) und um Mitternacht in der in deinem Konto gespeicherten Zeitzone zurückgesetzt.
Anwendungsbeispiele
Alle Beispiele nutzen cURL mit dem MCP-JSON-RPC-Protokoll. Ersetze YOUR_TOKEN durch dein Zugriffstoken.
Daten lesen
# 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}}}'
Daten schreiben (Pro und 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>"}}}'
Eine erfolgreiche Antwort sieht so aus:
{
"jsonrpc": "2.0",
"id": 11,
"result": {
"content": [{"type": "text", "text": "{\"id\":\"...\",\"title\":\"Review PR\",\"status\":\"todo\"}"}]
}
}
Schreib- und Update-Tools geben kurze Antworten zurück, meist id, title und status. Lösch-Tools geben id und deleted zurück. Um nach einem Schreibvorgang alle Details (Tags, Priorität, Frist usw.) zu bekommen, mach einen anschließenden Leseaufruf wie get_tasks oder get_note.
Token-Verwaltung
| Aktion | So geht's |
|---|---|
| Token ansehen | iPhone: Einstellungen > Integrationen > KI-Agenten (MCP) > Für Entwickler (oder im Web: Einstellungen > Integrationen > KI-Agenten (MCP)), auf Anzeigen tippen |
| Token kopieren | Tippe neben dem Token auf Kopieren |
| Neu erstellen | Tippe auf Token neu erstellen und bestätige. Das alte Token funktioniert sofort nicht mehr. Assistenten, die per OAuth-Anmeldung verbunden sind, sind nicht betroffen; trenne sie unter Verbundene Apps |
| Modus ändern | Pro und Ultra: Wähle Nur lesen oder Lesen & schreiben. Free und Basic sind immer nur Lesen |
| Deaktivieren | Tippe auf Deaktivieren und bestätige („Damit wird der Zugriff für alle verbundenen KI-Tools widerrufen.“). Dein Token wird gelöscht, und alle Verbindungen enden. Wenn du MCP wieder aktivierst, bekommst du ein neues Token, und Apps, die per Anmeldung (OAuth) verbunden sind, funktionieren wieder, ohne dass du dich neu anmeldest. Um eine App endgültig zu entfernen, tippe unter Verbundene Apps auf Trennen |
Was du deinen KI-Agenten fragen kannst
Sobald die Verbindung steht, frag dein KI-Tool zum Beispiel:
Deinen Tag Revue passieren lassen:
- „Woran habe ich heute gearbeitet?“
- „Zeig mir meine Notizen von dieser Woche“
- „Welche Aufgaben sind überfällig?“
Aufgaben verwalten:
- „Erstelle eine Aufgabe: Quartalsbericht prüfen, hohe Priorität, Frist Freitag“
- „Markiere die Figma-Aufgabe als erledigt“
- „An welchen Aufgaben arbeite ich gerade?“
Suchen und analysieren:
- „Finde alle Notizen zur Marketingstrategie“
- „Welche Ereignisse habe ich nächste Woche?“
- „Fasse meine Tagesberichte der letzten Woche zusammen“
Vorausplanen:
- „Erstelle ein Ereignis: Team-Standup morgen um 10 Uhr“
- „Was steht diese Woche in meinem Kalender?“
- „Zeig mir meine häufigsten Tags - wofür brauche ich die meiste Zeit?“
Dein Assistent kann deine Notizen, Aufgaben, Ereignisse und Berichte lesen und komplexe Fragen beantworten, indem er Informationen aus mehreren Tools kombiniert. In Pro und Ultra mit eingeschaltetem Lesen und Schreiben kann er sie auch erstellen, aktualisieren und löschen.
Gut zu wissen
- Integrationen und Automatisierungen -
process_notefunktioniert wie eine Aufnahme, daher gehen seine Notiz, Aufgaben und Ereignisse an deine verbundenen Integrationen und Webhook-Automatisierungen. Elemente, die du mit den anderen Schreib-Tools erstellst, bearbeitest oder löschst, verhalten sich genau wie in der App: Sie erreichen deine verbundenen Integrationen (Ereignisse und Änderungen an Notizen nur Notion) und deine Automatisierungen. Wenn du eine Aufgabe mitrestore_entitywiederherstellst oder ihren Abschluss mitundo_change_log_entryrückgängig machst, wird sie auch in den Integrationen wieder geöffnet, mit denen sie synchronisiert war. - Änderungen durch einen KI-Assistenten - sie werden im Änderungsverlauf des Elements als Änderung durch einen Assistenten gekennzeichnet. Sie werden nicht genutzt, um die Spracherkennung von TellDone zu trainieren, und nicht auf die anderen Elemente der Notiz übertragen. Änderungen über einen Assistenten teilen sich mit der App das Limit von 30 Änderungen pro Minute.
- Semantische Suche - Notizen, die mit
process_noteodercreate_noteerstellt wurden, bekommen beide Embeddings und tauchen daher nach kurzer Verzögerung in der semantischen Suche auf. - Datumsfilter - bei Notizen sind Daten UTC-Tage. Bei Ereignissen sind Daten deine eigenen lokalen Tage, und ein Ereignis, das den Zeitraum überlappt, ist enthalten. Bei Aufgaben ist der Filter das Fristdatum.
Sicherheit
- Jeder Nutzer bekommt ein eigenes 384-Bit-Zugriffstoken
- Dein Token wird sofort widerrufen, wenn du MCP deaktivierst oder das Token neu erzeugst
- Jede Anfrage ist auf dein Konto beschränkt, dein Agent kann also nur auf deine eigenen Daten zugreifen
- Die Verbindung nutzt HTTPS mit Ratenbegrenzung (5 Anfragen/s, Spitzen bis 20)
- OAuth-Verbindungen nutzen PKCE mit einmal verwendbaren Autorisierungscodes und kurzlebigen Zugriffstoken - du kannst eine Verbindung jederzeit in der App widerrufen
Für einen technischen Einblick - Discovery-Endpunkte, Token-Laufzeiten, der vollständige OAuth-Ablauf - sieh dir unsere Open-Source-Connector-Referenz unter github.com/exp78/telldone-mcp an oder rufe https://api.telldone.app/.well-known/oauth-protected-resource direkt auf.
Datenschutz und Datenfluss
Ein verbundenes KI-Tool bekommt deine Daten nur, wenn es TellDone aufruft, meist weil du etwas gefragt hast. Es erhält nur die Antworten auf diese Aufrufe, im Rahmen der Berechtigungen, die du bestätigt hast. Um den Zugriff einzuschränken, wechsle auf Nur lesen, trenne die App unter Verbundene Apps oder erstelle es neu oder deaktiviere dein Zugriffstoken in den Einstellungen. Alle Details findest du in der Datenschutzerklärung, oder schreib bei Fragen an support@telldone.app.
Fehlerbehebung
| Symptom | Ursache / Lösung |
|---|---|
| Die OAuth-Zustimmungsseite sagt „Wrong email or password“ | Nutze die E-Mail und das Passwort, mit denen du dich in der App anmeldest, oder wähle auf derselben Seite Mit Apple anmelden / Mit Google anmelden. |
| Verbunden, aber die KI kann nichts erstellen oder bearbeiten | Dein Plan ist Free oder Basic (nur Lesen), dein Modus ist Nur Lesen, oder die Verbindung hat keine Schreibrechte. Wenn du dich verbunden hast, bevor du ein Upgrade gemacht hast, trenne die App unter Verbundene Apps und verbinde sie neu. Deinen Modus kannst du in den Einstellungen prüfen. |
| Fehler „Insufficient scope“ von einem Tool | Die Verbindung hat diese Berechtigung nicht. In Free und Basic werden nie Schreibrechte vergeben, Erstellen und Bearbeiten braucht also Pro oder Ultra. Wenn du dich verbunden hast, bevor du ein Upgrade gemacht hast, trenne die App unter Verbundene Apps und verbinde sie neu. |
Das kopierte Snippet sagt YOUR_TOKEN und der Client kann sich nicht verbinden | Du hast es kopiert, während das Token verdeckt war. Tippe unter Für Entwickler auf Anzeigen und kopiere das Snippet dann erneut. |
| Tools erscheinen gar nicht | MCP ist in deinem Konto nicht aktiviert (Einstellungen > Integrationen > KI-Agenten (MCP) > Aktivieren). |
| „Daily limit reached“ | Zwei Limits nutzen diese Meldung. „Daily limit reached: the Free plan includes 100 TellDone requests a day“ ist das Anfragelimit von Free. „Daily limit reached (N/M today)“ bedeutet, dass du heute über KI-Assistenten so viele Elemente erstellt hast, wie dein Plan erlaubt: process_note, create_note, create_task und create_event z ählen jeweils, auch in Pro und Ultra. Beide werden um Mitternacht in der in deinem Konto gespeicherten Zeitzone zurückgesetzt. |
| Mein Client lässt mich nur aus einer Liste von Connectors wählen, und TellDone ist nicht dabei | TellDone ist noch in keinem Connector-Verzeichnis eines Clients - füge es als eigenen Connector mit der MCP-URL hinzu oder nutze die Methode mit Bearer-Token. |
Siehe auch
- Webhook-Automatisierungen - Daten automatisch an externe Dienste senden
- Todoist - eigene Aufgabensynchronisierung in beide Richtungen
- Notion - eigene Notion-Integration