Dostęp MCP (agenci AI)
MCP jest teraz w pełni dostępny na iPhonie (oprócz aplikacji webowej). Ekran iPhone'a odzwierciedla ten z przeglądarki i zawiera te same snippety konfiguracyjne dla wszystkich obsługiwanych klientów AI.
Dostęp MCP wymaga planu Pro lub Ultra. Oba plany dostają pełny dostęp read + write (27 narzędzi) i mogą przełączyć się na tryb tylko do odczytu, jeśli wolisz.
MCP (Model Context Protocol) pozwala podłączyć asystentów programistycznych AI i narzędzia automatyzacji bezpośrednio do twoich danych TellDone. Po podłączeniu twój agent AI może czytać twoje notatki, zadania, wydarzenia, raporty, tagi i historię zmian - oraz tworzyć, aktualizować, usuwać i przywracać elementy. Łącznie jest 27 narzędzi: 10 do odczytu danych i 17 do zapisu.
Dostępne zarówno w aplikacji iPhone (Ustawienia → Integracje → Agenci AI), jak i w aplikacji webowej (Ustawienia → AI Agents).
Dwa sposoby połączenia
Klienta AI możesz uwierzytelnić na dwa sposoby - oba są w pełni obsługiwane:
- OAuth 2.1 (zalecane) - standardowy przepływ zgody "Zaloguj się przez TellDone". Tego używa interfejs konektorów w Claude Desktop oraz Claude.ai. Nie kopiujesz żadnych tokenów - logujesz się swoim kontem TellDone i zatwierdzasz uprawnienia, o które prosi klient.
- Token bearer - skopiuj swój osobisty token dostępu z Ustawień i wklej go do konfiguracji klienta. Najprostsze dla skryptów, narzędzi CLI i klientów, które nie mają wbudowanego przepływu OAuth.
| Klient | Zalecane |
|---|---|
| Claude Desktop / Cowork | OAuth - dodaj własny konektor z adresem MCP, a potem zaloguj się |
| Claude Code (CLI) | Dowolne - claude mcp add przeprowadzi cię przez OAuth w przeglądarce, albo dodaj nagłówek Bearer dla metody tokenowej |
| Skrypty lub własny kod | Token bearer - najprościej zautomatyzować |
| Klient, który pozwala wybierać tylko z katalogu gotowych konektorów | Na razie użyj tokena bearer albo mostka mcp-remote - TellDone nie jest jeszcze w żadnym katalogu konektorów |
Wymagania planów
| Plan | MCP |
|---|---|
| Free | Zablokowane |
| Basic | Zablokowane |
| Pro | Read + Write (27 narzędzi) - można przełączyć na Read-only |
| Ultra | Read + Write (27 narzędzi) - można przełączyć na Read-only |
Ekran w aplikacji
Ekran Agenci AI ma trzy stany w zależności od planu i tego, czy MCP jest włączony.
Zablokowane (Free i Basic)
Jeśli jesteś na planie Free lub Basic, ekran wyjaśnia, do czego służy MCP, i pokazuje przycisk Ulepsz. Naciśnięcie otwiera paywall, gdzie możesz przejść na Pro lub Ultra.
Wyłączone (Pro i Ultra, funkcja off)
Jeśli jesteś na Pro lub Ultra, ale jeszcze nie włączyłeś MCP, ekran pokazuje krótkie podsumowanie tego, co potrafi twój plan (liczba narzędzi, tryb dostępu, limity) oraz przycisk Włącz. Naciśnij, by wygenerować token połączenia i rozpocząć integrację.
Włączone
Po włączeniu ekran pokazuje wszystko, czego potrzebujesz, by podłączyć klienta AI:
- Przełącznik trybu - na Ultra możesz przełączać między Read-only a Read + Write. Na Pro tryb jest stale ustawiony na Read + Write.
- Wiersz Token dostępu z przełącznikiem oka, by pokazać lub ukryć token, oraz przyciskiem kopiowania.
- Selektor konfiguracji z zakładkami Claude Code, Cursor, Windsurf i Inne. Pasujący snippet kodu pojawia się pod zakładkami - po prostu skopiuj i wklej do swojego klienta AI.
- Przycisk Wygeneruj ponownie - rotuje token natychmiast i rozłącza wszystkie aktywne sesje korzystające ze starego.
- Przycisk Wyłącz - wyłącza MCP i usuwa token. Możesz włączyć ponownie później, ale wydany zostanie nowy token.
Trzymaj swój token połączenia w tajemnicy. Każdy z tokenem może uzyskać dostęp do twoich danych TellDone. Użyj Wygeneruj ponownie, jeśli kiedykolwiek podejrzewasz, że token wyciekł.
Jak włączyć
MCP możesz skonfigurować z każdej platformy:
- iPhone: Ustawienia → Integracje → Agenci AI (MCP)
- Web: app.telldone.app → Ustawienia → AI Agents
Kroki:
- Naciśnij Włącz.
- Wybierz tryb dostępu (tylko Ultra - Pro zawsze ma Read + Write).
- Pokaż i skopiuj token za pomocą ikon oka i kopiowania.
- Wybierz narzędzie w sekcji Setup (Claude Code, Cursor, Windsurf lub Inne).
- Wklej snippet do konfiguracji klienta AI.
Podłączanie przez OAuth
OAuth to zalecana droga dla Claude Desktop, Claude.ai, Cowork i Claude Code - logujesz się swoim kontem TellDone, zamiast przenosić token z miejsca na miejsce.
Adres MCP dla OAuth: https://api.telldone.app/mcp/user (bez końcówki /mcp - to inny adres, używany tylko w metodzie z tokenem bearer poniżej)
Claude Desktop / Cowork
- W kliencie wybierz Add custom connector.
- Podaj adres serwera:
https://api.telldone.app/mcp/user - Klient otworzy stronę zgody TellDone w twojej przeglądarce. Zobaczysz, która aplikacja prosi o dostęp, o jakie dokładnie uprawnienia jej chodzi, oraz formularz logowania.
- Zaloguj się e-mailem i hasłem konta TellDone, a potem kliknij Allow.
- Klient automatycznie otrzyma token dostępu i połączy się - nie musisz nic kopiować.
Logowanie na stronie zgody odbywa się e-mailem i hasłem konta TellDone. Jeśli twoje konto ma tylko logowanie przez Apple lub Google (bez ustawionego hasła), na razie skorzystaj z metody z tokenem bearer poniżej.
Claude Code
OAuth (otwiera logowanie w przeglądarce):
claude mcp add --transport http telldone https://api.telldone.app/mcp/user
Claude Code sam wykrywa przepływ OAuth, ale nie zaloguje cię przy pierwszym wywołaniu - uruchom /mcp w Claude Code i wybierz Authenticate, by otworzyć logowanie w przeglądarce. Potem token dostępu będzie odświeżany automatycznie - nic nie musisz pilnować.
Token bearer (bez przeglądarki, dobre dla konfiguracji headless):
claude mcp add telldone --transport http \
https://api.telldone.app/mcp/user/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
Swój YOUR_TOKEN znajdziesz w aplikacji: Ustawienia → Integracje → Agenci AI → skopiuj token (zobacz Jak włączyć powyżej).
Podłączanie przez token bearer
Dla klientów bez wbudowanej obsługi OAuth - Cursor, Windsurf i innych - wklej swój osobisty token dostępu bezpośrednio do konfiguracji klienta. Zastąp YOUR_TOKEN tokenem ze swoich ustawień we wszystkich przykładach poniżej.
Cursor
Dodaj do .cursor/mcp.json:
{
"mcpServers": {
"telldone": {
"url": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
Windsurf
Dodaj do .codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"telldone": {
"serverUrl": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
Inne
Użyj tych snippetów dla klientów, których selektor w aplikacji grupuje pod Inne.
Codex
Dodaj do 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
Inni klienci MCP
Każde narzędzie obsługujące MCP po HTTP może się połączyć. Użyj endpointa https://api.telldone.app/mcp/user/mcp z nagłówkiem autoryzacji Bearer YOUR_TOKEN.
Jeśli twój klient lub proxy rezerwuje nagłówek Authorization (np. niektóre bramki w stylu Smithery), wyślij token w X-MCP-Token: YOUR_TOKEN. Oba nagłówki działają; jeśli oba są obecne, wygrywa Authorization.
Testowanie połączenia
Możesz sprawdzić, czy twój token działa, prostym poleceniem cURL:
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}'
Pomyślna odpowiedź wymienia wszystkie dostępne narzędzia.
Uprawnienia (scopes)
Połączenia OAuth mają przypisane uprawnienia (scopes) - podczas logowania widzisz dokładnie, o co prosi klient, i zatwierdzasz to wprost.
| Scope | Pozwala aplikacji... |
|---|---|
notes:read | Czytać twoje notatki, wyszukiwać, otwierać pełne szczegóły notatki |
notes:write | Tworzyć, edytować i usuwać notatki (oraz uruchamiać pipeline notatek głosowych) |
tasks:read / tasks:write | Czytać / tworzyć, edytować, ukończać i usuwać zadania |
events:read / events:write | Czytać / tworzyć, edytować i usuwać wydarzenia |
reports:read | Czytać twoje raporty dzienne, tygodniowe, miesięczne i roczne |
tags:read / tags:write | Wyświetlać twoje tagi / tworzyć i zmieniać nazwy tagów |
profile:read | Czytać dane twojego profilu i subskrypcji |
offline_access | Pozostać połączonym, gdy cię nie ma (wydaje token odświeżania, więc nie musisz logować się co sesję) |
Scopes to górna granica, a nie gwarancja - połączenie z samym notes:read nie wywoła narzędzia zapisu, cokolwiek byś mu kazał. Twój plan to druga bramka, nałożona na scopes.
Połączenia z tokenem bearer nie mają osobnych scopes - rządzi nimi wyłącznie tryb read/write z twojego planu.
Co możesz robić
Narzędzia odczytu (10) - Pro i Ultra
| Narzędzie | Co robi |
|---|---|
| get_notes | Lista notatek z filtrami (tagi, zakres dat, wyszukiwanie tekstu) |
| get_note | Pojedyncza notatka z podrzędnymi zadaniami, wydarzeniami i pełnym transkryptem |
| get_notes_full | Wiele notatek z osadzonymi zadaniami i wydarzeniami w jednym wywołaniu |
| get_tasks | Lista zadań filtrowana według statusu (to-do, done, all), tagów lub dat |
| get_events | Lista wydarzeń kalendarzowych, filtruj po zakresie dat |
| get_reports | Czytaj raporty dzienne, tygodniowe, miesięczne i roczne (pełny markdown) |
| get_tags | Zobacz wszystkie tagi posortowane według użycia |
| get_profile | Zobacz dane konta i statystyki użycia |
| search | Wyszukuj w notatkach, zadaniach i wydarzeniach (tekstowe + semantyczne dla notatek) |
| get_change_log | Zobacz historię zmian notatki, zadania lub wydarzenia oraz to, czy każda edycja została cofnięta |
Narzędzie search obsługuje wyszukiwanie semantyczne notatek - znajduje wyniki według znaczenia, nie tylko po słowach kluczowych. Na przykład wyszukiwanie "spotkania o budżecie" znajdzie notatki o dyskusjach finansowych, nawet jeśli nie zawierają słowa "budżet".
Narzędzia zapisu (17) - Pro i Ultra
| Narzędzie | Co robi |
|---|---|
| process_note | Pełny pipeline AI - wyślij tekst lub audio, otrzymaj notatkę z zadaniami, wydarzeniami i tagami |
| create_note | Dodaj zwykłą notatkę tekstową (bez analizy AI) |
| create_task | Dodaj zadanie z priorytetem, terminem, przypomnieniem i tagami |
| create_event | Dodaj wydarzenie kalendarzowe z datą, godziną, lokalizacją, przypomnieniami, uczestnikami i powtarzaniem |
| update_note | Zmień tytuł, podsumowanie, typ, tagi, priorytet lub status notatki |
| update_task | Zmień tytuł, opis, priorytet, termin, przypomnienie, tagi lub status zadania |
| complete_task | Oznacz zadanie jako zrobione |
| update_event | Zmień szczegóły wydarzenia, czas, lokalizację, przypomnienia, uczestników, powtarzanie, tagi lub status |
| delete_note | Usuń notatkę i wszystkie powiązane zadania i wydarzenia |
| delete_task | Usuń zadanie |
| delete_event | Usuń wydarzenie |
| undo_change_log_entry | Cofnij pojedynczą śledzoną edycję - zrobioną przez AI lub twoją własną - przywracając poprzednią wartość pola |
| restore_entity | Przywróć usuniętą lub zarchiwizowaną notatkę, zadanie lub wydarzenie |
| create_tag | Utwórz nowy tag albo zamień automatycznie zasugerowany tag na stały |
| set_tag_pinned | Przypnij lub odepnij tag, żeby sortował się na górze |
| delete_tag | Usuń tag (można go przywrócić przez restore_tag) |
| restore_tag | Przywróć usunięty tag |
Wszystkie operacje zapisu i usunięcia pojawiają się natychmiast na podłączonych urządzeniach (telefon, aplikacja webowa) przez synchronizację w czasie rzeczywistym.
Referencja narzędzi
get_notes
Lista notatek z opcjonalnym filtrowaniem. Filtry dat używają recorded_at (kiedy nagrałeś notatkę głosową), nie created_at.
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
limit | int | 20 | Liczba notatek do zwrócenia (max 50) |
offset | int | 0 | Pomiń tyle notatek (do paginacji, max 10000) |
tags | string | - | Filtruj po tagach, rozdzielone przecinkami (dopasowuje dowolny) |
search | string | - | Wyszukiwanie tekstu w tytule i podsumowaniu |
date_from | string | - | Data początkowa, YYYY-MM-DD (włącznie) |
date_to | string | - | Data końcowa, YYYY-MM-DD (wyłącznie) |
standalone_only | bool | false | Gdy true, ukrywa notatki uzupełniające (notatki powiązane z nadrzędną notatką, zadaniem lub wydarzeniem) i zwraca tylko samodzielne notatki |
Zwraca: listę notatek z id, title, summary, type, tags, priority, status, recorded_at, created_at.
get_note
Pobierz pojedynczą notatkę z pełnym transkryptem i wszystkimi powiązanymi zadaniami i wydarzeniami.
| Parametr | Typ | Opis |
|---|---|---|
note_id | string | UUID notatki |
Zwraca: notatkę z title, summary, transcript, type, tags, priority, status, metadata, created_at, plus tablicami tasks[] i events[].
Zwraca też transcript_speakers (wypowiedzi transkryptu z etykietami mówców, dla spotkań z kilkoma mówcami - w przeciwnym razie null), speaker_count (null, chyba że nagranie zostało podzielone według mówców) oraz parent_note_id/parent_task_id/parent_event_id (ustawiane, gdy ta notatka jest edycją-uzupełnieniem innego elementu). Każdy wpis tasks[]/events[] zawiera też reminders_at/recurrence_rule (zadania) lub reminder_minutes/attendees/recurrence_rule (wydarzenia).
get_notes_full
Pobierz wiele notatek z ich zadaniami i wydarzeniami w jednym wywołaniu. Te same filtry co get_notes, ale każda notatka zawiera osadzone tablice tasks[] i events[].
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
limit | int | 10 | Liczba notatek (max 20) |
offset | int | 0 | Pomiń tyle notatek |
tags | string | - | Filtruj po tagach |
date_from | string | - | Data początkowa, YYYY-MM-DD |
date_to | string | - | Data końcowa, YYYY-MM-DD |
standalone_only | bool | false | Gdy true, ukrywa notatki uzupełniające (notatki powiązane z nadrzędną notatką, zadaniem lub wydarzeniem) i zwraca tylko samodzielne notatki |
get_tasks
Lista zadań z filtrowaniem.
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
status | string | "todo" | Filtr: todo, done lub all |
limit | int | 30 | Liczba zadań (max 100) |
offset | int | 0 | Pomiń tyle zadań |
tags | string | - | Filtruj po tagach, rozdzielone przecinkami |
date_from | string | - | Data początkowa, YYYY-MM-DD - filtruje po terminie (deadline); zadania bez terminu są wykluczone |
date_to | string | - | Data końcowa, YYYY-MM-DD - filtruje po terminie (deadline); zadania bez terminu są wykluczone |
Zwraca: listę zadań z id, title, description, status, priority, tags, deadline, reminder_at, reminders_at, completed_at, completed_by, source, created_at. reminder_at odzwierciedla pierwszy wpis reminders_at dla zgodności wstecznej - użyj reminders_at, aby zobaczyć wszystkie przypomnienia zadania.
get_events
Lista wydarzeń kalendarzowych z filtrem zakresu dat.
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
limit | int | 30 | Liczba wydarzeń (max 100) |
offset | int | 0 | Pomiń tyle wydarzeń |
date_from | string | - | Data początkowa, YYYY-MM-DD (filtruje po czasie startu wydarzenia) |
date_to | string | - | Data końcowa, YYYY-MM-DD |
Zwraca: listę wydarzeń z id, title, description, status, start_at, end_at, location, is_all_day, tags, note_id, reminder_minutes, attendees, recurrence_rule, created_at.
get_reports
Pobierz wygenerowane przez AI raporty z pełną treścią markdown.
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
report_type | string | "daily" | Typ: daily, weekly, monthly lub yearly |
limit | int | 5 | Liczba raportów (max 10) |
Zwraca: listę raportów z id, type, period_start, period_end, content_md, created_at.
Raporty miesięczne mogą mieć 3 000-5 000 słów. Użyj limit=1, jeśli twoje narzędzie AI ma ciasne okno kontekstu.
get_tags
Pobierz wszystkie tagi posortowane najpierw przypięte, potem według liczby użyć.
Bez parametrów. Zwraca do 100 tagów, każdy z tag, usage_count, is_pinned, is_manual.
get_profile
Pobierz dane konta i statystyki użycia.
Bez parametrów. Zwraca email, display_name, locale, transcription_locale, timezone, subscription, mcp_mode, created_at i stats (liczby notatek/zadań/wydarzeń).
search
Wyszukuj w notatkach, zadaniach i wydarzeniach jednocześnie. Dla notatek obsługuje zarówno wyszukiwanie tekstowe, jak i semantyczne (znajduje wyniki według znaczenia za pomocą embeddingów AI).
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
query | string | wymagane | Tekst wyszukiwania (max 500 znaków) |
limit | int | 20 | Maks. wyników na typ (max 20) |
semantic | bool | true | Włącz wyszukiwanie semantyczne dla notatek |
Zwraca wyniki pogrupowane po typie: notes[], tasks[], events[]. Każdy wynik ma id, type, title, detail, created_at.
Ustaw semantic=false dla szybszego wyszukiwania tylko tekstowego.
get_change_log
Zobacz historię zmian notatki, zadania lub wydarzenia - każdą edycję wykonaną przez AI z uzupełnienia oraz każdą ręczną edycję, którą sam wprowadziłeś, od najnowszej.
| Parametr | Typ | Domyślnie | Opis |
|---|---|---|---|
entity | string | wymagane | notes, tasks lub events |
entity_id | string | wymagane | UUID elementu |
include_manual | bool | false | Dołącz też twoje ręczne edycje, nie tylko te zrobione przez AI |
Zwraca: listę wpisów zmian z id (użyj go jako entry_id do cofnięcia), field_name, old_value, new_value, source (follow_up, smart_context lub manual), origin_note_id, edited_at oraz reverted_at (ustawiane po cofnięciu).
process_note (Pro i Ultra)
Pełny pipeline AI - działa tak samo jak nagrywanie w aplikacji. Wyślij tekst lub audio, a TellDone zrobi transkrypcję, analizę AI i utworzy uporządkowaną notatkę z wyodrębnionymi zadaniami, wydarzeniami, tagami i embeddingami.
To narzędzie jest asynchroniczne: zwraca natychmiast audio_id i przetwarza w tle. Wyniki przychodzą przez synchronizację w czasie rzeczywistym na podłączone urządzenia, lub możesz odpytywać przez get_notes().
| Parametr | Typ | Opis |
|---|---|---|
text | string | Tekst do analizy (pomija transkrypcję, jeśli nie ma audio) |
audio_base64 | string | Plik audio zakodowany base64 (do 50MB, wyzwala transkrypcję) |
audio_format | string | m4a, ogg, wav, mp3, aac lub webm (domyślnie: m4a) |
parent_task_id | string | UUID zadania, do którego to jest uzupełnienie |
parent_note_id | string | UUID notatki, do której to jest uzupełnienie |
parent_event_id | string | UUID wydarzenia, do którego to jest uzupełnienie |
Musisz podać text lub audio_base64 (lub oba - audio ma priorytet do transkrypcji).
Zwraca: {"audio_id": "...", "status": "processing", "mode": "text-only"} lub "mode": "audio+stt", jeśli podano audio.
process_note podlega limitom twojego planu (uploady na dzień, notatki na miesiąc, maks. długość tekstu). Użyj get_profile, by sprawdzić bieżące użycie.
create_note (Pro i Ultra)
Utwórz zwykłą notatkę tekstową natychmiast. Nie wyzwala analizy AI - nie wyodrębnia zadań ani wydarzeń. Aby uzyskać pełną analizę AI z wyodrębnianiem zadań/wydarzeń, użyj zamiast tego process_note.
| Parametr | Typ | Limit | Opis |
|---|---|---|---|
title | string | 200 znaków | Wymagane |
summary | string | 1000 znaków | Opcjonalne. Krótka zapowiedź (1-3 zdania). Trafia do promptów raportów, więc trzymaj zwięźle |
transcript | string | zależy od planu | Opcjonalne. Długi tekst pokazany w szczegółach notatki. Nie trafia do raportów. Limity: Free 2 000 / Basic 8 000 / Pro 20 000 / Ultra 50 000 znaków |
type | string | - | Opcjonalne. task, idea, info (domyślnie), status, meeting, event lub reflection |
tags | string | 20 tagów | Rozdzielone przecinkami, opcjonalne |
create_task (Pro i Ultra)
Utwórz nowe zadanie.
| Parametr | Typ | Limit | Opis |
|---|---|---|---|
title | string | 200 znaków | Wymagane |
description | string | 2000 znaków | Opcjonalne |
priority | string | - | low, medium (domyślnie) lub high |
deadline | string | - | YYYY-MM-DD, opcjonalne |
reminder_at | string | - | Datetime ISO 8601 (np. 2026-04-15T09:00:00Z), opcjonalne |
tags | string | 20 tagów | Rozdzielone przecinkami, opcjonalne |
note_id | string | - | UUID, by powiązać zadanie z nadrzędną notatką, opcjonalne |
create_event (Pro i Ultra)
Utwórz wydarzenie kalendarzowe.
| Parametr | Typ | Limit | Opis |
|---|---|---|---|
title | string | 200 znaków | Wymagane |
start_at | string | - | Datetime ISO 8601, wymagane |
end_at | string | - | Datetime ISO 8601 (domyślnie: start + 1 godzina) |
description | string | 2000 znaków | Opcjonalne |
location | string | 200 znaków | Opcjonalne |
is_all_day | bool | - | Domyślnie: false |
tags | string | 20 tagów | Rozdzielone przecinkami, opcjonalne |
reminder_minutes | string | - | Minuty przed wydarzeniem rozdzielone przecinkami (np. 15,60), opcjonalne |
attendees | string | - | Imiona lub e-maile rozdzielone przecinkami, opcjonalne |
recurrence_rule | string | - | Ciąg RRULE (np. FREQ=WEEKLY;BYDAY=MO,WE,FR), opcjonalne |
note_id | string | - | UUID, by powiązać wydarzenie z nadrzędną notatką, opcjonalne |
update_note (Pro i Ultra)
Zaktualizuj jedno lub więcej pól w istniejącej notatce. Zmieniane są tylko pola, które podasz.
| Parametr | Typ | Opis |
|---|---|---|
note_id | string | Wymagane, UUID notatki |
title | string | Nowy tytuł (max 200 znaków) |
summary | string | Nowe podsumowanie (max 1000 znaków, podaj spację " ", by wyczyścić) |
transcript | string | Nowy transkrypt (limit zależny od planu, podaj spację " ", by wyczyścić) |
type | string | task, idea, info, status, meeting, event lub reflection |
tags | string | Tagi rozdzielone przecinkami (zastępują wszystkie istniejące, max 20) |
priority | string | low, medium lub high |
status | string | active lub archived |
Dla notatek utworzonych przez pipeline głosowy transcript to oryginalne wyjście speech-to-text. Nadpisanie zastępuje kanoniczne źródło - rozważ dopisywanie do niego, jeśli chcesz zachować oryginał.
update_task (Pro i Ultra)
Zaktualizuj jedno lub więcej pól w istniejącym zadaniu. Zmieniane są tylko pola, które podasz.
| Parametr | Typ | Opis |
|---|---|---|
task_id | string | Wymagane, UUID zadania |
title | string | Nowy tytuł |
description | string | Nowy opis (podaj spację " ", by wyczyścić) |
priority | string | low, medium lub high |
deadline | string | YYYY-MM-DD (podaj spację, by wyczyścić) |
status | string | todo lub done |
tags | string | Tagi rozdzielone przecinkami (zastępują wszystkie istniejące, max 20) |
reminder_at | string | Datetime ISO 8601 (podaj spację, by wyczyścić) |
Ustawienie status na done zapisuje też, kiedy i jak zadanie zostało ukończone.
complete_task (Pro i Ultra)
Skrót do oznaczenia zadania jako zrobione.
| Parametr | Typ | Opis |
|---|---|---|
task_id | string | Wymagane, UUID zadania |
Zwraca błąd, jeśli zadanie nie istnieje lub jest już ukończone.
update_event (Pro i Ultra)
Zaktualizuj jedno lub więcej pól w istniejącym wydarzeniu. Zmieniane są tylko pola, które podasz.
| Parametr | Typ | Opis |
|---|---|---|
event_id | string | Wymagane, UUID wydarzenia |
title | string | Nowy tytuł |
description | string | Nowy opis (podaj spację, by wyczyścić) |
start_at | string | Nowy czas początku (ISO 8601) |
end_at | string | Nowy czas końca (ISO 8601) |
location | string | Nowa lokalizacja (podaj spację, by wyczyścić) |
status | string | confirmed, tentative lub cancelled |
tags | string | Tagi rozdzielone przecinkami (zastępują wszystkie istniejące, max 20) |
is_all_day | string | "true" lub "false" |
reminder_minutes | string | Minuty przed wydarzeniem rozdzielone przecinkami (np. 15,60) |
attendees | string | Imiona lub e-maile rozdzielone przecinkami |
recurrence_rule | string | Ciąg RRULE (podaj spację, by wyczyścić) |
delete_note (Pro i Ultra)
Usuń notatkę. Usuwa też wszystkie zadania i wydarzenia utworzone z tej notatki.
| Parametr | Typ | Opis |
|---|---|---|
note_id | string | Wymagane, UUID notatki |
delete_task (Pro i Ultra)
Usuń zadanie.
| Parametr | Typ | Opis |
|---|---|---|
task_id | string | Wymagane, UUID zadania |
delete_event (Pro i Ultra)
Usuń wydarzenie.
| Parametr | Typ | Opis |
|---|---|---|
event_id | string | Wymagane, UUID wydarzenia |
undo_change_log_entry (Pro i Ultra)
Cofnij pojedynczą śledzoną edycję - przywraca pole do wartości sprzed tej edycji, niezależnie od tego, czy zmianę wprowadziło AI (z nagrania-uzupełnienia), czy ty bezpośrednio.
| Parametr | Typ | Opis |
|---|---|---|
entity | string | Wymagane, notes, tasks lub events |
entity_id | string | Wymagane, UUID elementu |
entry_id | string | Wymagane, id wpisu zmiany z get_change_log |
Zwraca: {"entry_id", "entity_type", "entity_id", "field_name", "restored_value", "reverted_at"}. Cofnięcie tego samego wpisu drugi raz zwraca błąd - jest już cofnięty.
restore_entity (Pro i Ultra)
Przywróć usuniętą lub zarchiwizowaną notatkę, zadanie lub wydarzenie.
| Parametr | Typ | Opis |
|---|---|---|
entity | string | Wymagane, notes, tasks lub events |
entity_id | string | Wymagane, UUID elementu |
Zwraca: przywrócony element w formacie JSON.
create_tag (Pro i Ultra)
Utwórz nowy tag albo zamień istniejący automatycznie zasugerowany tag na stały.
| Parametr | Typ | Opis |
|---|---|---|
tag | string | Wymagane, 1-50 znaków (przechowywany małymi literami) |
category | string | Opcjonalne |
set_tag_pinned (Pro i Ultra)
Przypnij lub odepnij tag, żeby sortował się na górze twojej listy tagów.
| Parametr | Typ | Opis |
|---|---|---|
tag | string | Wymagane |
pinned | bool | Wymagane |
Tagów zawierających znak / nie można przypiąć.
delete_tag (Pro i Ultra)
Usuń tag. Można go przywrócić przez restore_tag.
| Parametr | Typ | Opis |
|---|---|---|
tag | string | Wymagane |
restore_tag (Pro i Ultra)
Przywróć usunięty tag.
| Parametr | Typ | Opis |
|---|---|---|
tag | string | Wymagane |
Limity wejścia
| Pole | Maks. długość | Używane w |
|---|---|---|
| title | 200 znaków | create/update notatki, zadania, wydarzenia |
| description | 2 000 znaków | create/update zadania, wydarzenia |
| summary | 1 000 znaków (twardy) | create/update notatki. Trafia do promptów raportów, krótkie z uwagi na koszt tokenów |
| transcript | zależnie od planu: Free 2 000 / Basic 8 000 / Pro 20 000 / Ultra 50 000 | create/update notatki. Długi tekst, nie w raportach |
| location | 200 znaków | create/update wydarzenia |
| tags | 20 tagów | create/update notatki, zadania, wydarzenia |
| zapytanie wyszukiwania | 500 znaków | search |
| audio_base64 (po dekodowaniu) | 50 MB | process_note |
Jeśli przekroczysz limit, narzędzie zwraca komunikat błędu, np. "title too long (max 200 chars, got 250)".
Obsługa błędów
Wszystkie narzędzia zwracają JSON. Błędy mają taki format:
{"error": "description of what went wrong"}
Częste błędy:
| Błąd | Kiedy |
|---|---|
"MCP access is read-only..." | Wywołano narzędzie zapisu w trybie tylko do odczytu |
"Invalid note_id format" | Przekazano ciąg, który nie jest UUID |
"Note not found" | ID nie istnieje albo należy do innego użytkownika |
"Task not found or already completed" | complete_task na nieistniejącym lub już zrobionym zadaniu |
"title too long (max 200 chars, got N)" | Przekroczono limit wejścia |
"Too many tags (max 20)" | Podano ponad 20 tagów |
Błędy poziomu HTTP:
| Kod | Znaczenie |
|---|---|
| 401 | Nieprawidłowy lub brak tokena Bearer |
| 403 | MCP wyłączone albo plan nie pozwala na MCP |
| 429 | Przekroczono limit (5 req/s, burst do 20) |
Przykłady użycia
Wszystkie przykłady używają cURL z protokołem MCP JSON-RPC. Zastąp YOUR_TOKEN swoim tokenem połączenia.
Odczyt danych
# 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}}}'
Zapis danych (Pro i 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 recurring 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>"}}}'
Pomyślna odpowiedź wygląda tak:
{
"jsonrpc": "2.0",
"id": 10,
"result": {
"content": [{"type": "text", "text": "{\"id\":\"...\",\"title\":\"Review PR\",\"status\":\"todo\"}"}]
}
}
Narzędzia zapisu i aktualizacji zwracają minimalne odpowiedzi tylko z id, title i status. Aby uzyskać pełne szczegóły (tagi, priorytet, termin itd.) po zapisie, wykonaj kolejne wywołanie odczytu, np. get_tasks lub get_note.
Zarządzanie tokenem
| Akcja | Jak |
|---|---|
| Pokaż token | iPhone Ustawienia → Integracje → Agenci AI (lub web Ustawienia → AI Agents), naciśnij ikonę oka |
| Skopiuj token | Naciśnij ikonę kopiowania obok tokena |
| Wygeneruj ponownie | Naciśnij Wygeneruj ponownie i potwierdź. Stary token przestaje działać natychmiast, a aktywne sesje zostają rozłączone |
| Zmień tryb | Tylko Ultra - przełączaj między Read-only a Read + Write. Na Pro tryb jest stale ustawiony na Read + Write |
| Wyłącz | Naciśnij Wyłącz i potwierdź. Token zostaje usunięty, a wszystkie połączenia kończą się. Możesz włączyć ponownie później (zostanie wydany nowy token) |
O co możesz pytać agenta AI
Po podłączeniu pytaj swoje narzędzie AI o rzeczy takie jak:
Przegląd dnia:
- "Nad czym dziś pracowałem?"
- "Pokaż moje notatki z tego tygodnia"
- "Jakie zadania są zaległe?"
Zarządzanie zadaniami:
- "Utwórz zadanie: przejrzyj raport kwartalny, wysoki priorytet, termin piątek"
- "Oznacz zadanie Figma jako zrobione"
- "Nad jakimi zadaniami pracuję?"
Wyszukiwanie i analiza:
- "Znajdź wszystkie notatki o strategii marketingowej"
- "Jakie wydarzenia mam w przyszłym tygodniu?"
- "Podsumuj moje raporty dzienne z zeszłego tygodnia"
Planowanie:
- "Utwórz wydarzenie: standup zespołu jutro o 10:00"
- "Co mam w kalendarzu w tym tygodniu?"
- "Pokaż moje najczęstsze tagi - na czym spędzam najwięcej czasu?"
Agent AI ma pełny dostęp do twoich notatek, zadań, wydarzeń i raportów. Może czytać, tworzyć, aktualizować i usuwać dane oraz odpowiadać na złożone pytania, łącząc informacje z wielu narzędzi.
Ważne uwagi
- Dwa sposoby tworzenia notatek -
create_notetworzy zwykłą notatkę tekstową natychmiast (bez analizy AI).process_noteuruchamia pełny pipeline AI (taki sam jak nagrywanie w aplikacji) - analizuje tekst, wyodrębnia zadania i wydarzenia, generuje tagi i embeddingi. Użyjprocess_note, gdy chcesz, by TellDone myślał za ciebie. - Brak synchronizacji integracji - elementy utworzone lub zaktualizowane przez MCP nie wyzwalają automatyzacji webhooków ani synchronizacji integracji (Todoist, Notion). Pojawią się w aplikacjach przy następnej synchronizacji.
- Wyszukiwanie semantyczne zależy od narzędzia - notatki utworzone przez
process_notedostają embeddingi i pojawiają się w wyszukiwaniu semantycznym. Notatki utworzone przezcreate_notenie dostają embeddingów, więc pojawiają się tylko w wyszukiwaniu tekstowym. - Odpowiedzi zapisu są minimalne - narzędzia create i update zwracają tylko
id,titleistatus. Aby uzyskać wszystkie pola po zapisie, wykonaj kolejne wywołanie odczytu. - Filtry dat używają UTC - parametry
date_from/date_tosą porównywane jako znaczniki UTC. Dla użytkowników w strefach innych niż UTC daty graniczne mogą obejmować lub wykluczać elementy z sąsiednich dni. - Limit zapytań - 5 zapytań na sekundę, z burstami do 20. Dla operacji masowych rozłóż zapytania w czasie.
Bezpieczeństwo
- Każdy użytkownik dostaje unikalny 384-bitowy token połączenia
- Twój token jest unieważniany natychmiast, gdy wyłączysz MCP lub wygenerujesz ponownie
- Wszystkie dane są ściśle izolowane do twojego konta - twój agent może uzyskać dostęp tylko do twoich danych
- Każde żądanie jest ograniczone do twojego użytkownika - agent nie ma żadnej możliwości dostępu do danych innego użytkownika
- Połączenie używa HTTPS z limitem zapytań (5 req/s, burst do 20)
- Połączenia OAuth używają PKCE z jednorazowymi kodami autoryzacyjnymi i krótko żyjącymi tokenami dostępu - połączenie możesz w każdej chwili unieważnić z poziomu aplikacji
Jeśli chcesz zajrzeć głębiej od strony technicznej - endpointy discovery, czasy życia tokenów, pełny przepływ OAuth - sprawdź naszą otwartoźródłową referencję konektora na github.com/exp78/telldone-mcp albo odpytaj bezpośrednio https://api.telldone.app/.well-known/oauth-protected-resource.
Prywatność i przepływ danych
Twoje dane trafiają do podłączonego narzędzia AI tylko wtedy, gdy wprost poprosisz je o wykonanie czegoś - na przykład gdy każesz mu odczytać albo zmienić twoje notatki. Narzędzie dostaje wyłącznie odpowiedzi na konkretne wywołania, które wykonuje, w granicach uprawnień, które zatwierdziłeś. Kontrola jest po twojej stronie: zmień tryb read/write w swoim planie, zawęź scopes OAuth zatwierdzane przy logowaniu albo wygeneruj ponownie lub wyłącz token bearer - wszystko z poziomu Ustawień. Pełne szczegóły znajdziesz w Polityce prywatności, a z pytaniami pisz na support@telldone.app.
Rozwiązywanie problemów
| Objaw | Przyczyna / rozwiązanie |
|---|---|
| Strona zgody OAuth pokazuje "Wrong email or password" | Użyj e-maila i hasła konta TellDone (tego, którym logujesz się do aplikacji). Jeśli twoje konto ma tylko logowanie przez Apple lub Google i nie ma hasła, skorzystaj zamiast tego z metody z tokenem bearer. |
| Połączenie działa, ale AI nie może nic utworzyć ani zmienić | Twój plan lub tryb jest tylko do odczytu, albo połączenie nie dostało scopes zapisu - połącz ponownie i zatwierdź je, albo sprawdź tryb w Ustawieniach. |
| Narzędzie zwraca błąd "Insufficient scope" | Połączenie OAuth nie dostało tego scope. Połącz ponownie i zatwierdź uprawnienie, którego narzędzie potrzebuje. |
| Narzędzia w ogóle się nie pojawiają | MCP nie jest włączone na twoim koncie (Ustawienia → Agenci AI) albo twój plan nie obejmuje MCP. |
| Mój klient pozwala wybierać tylko z listy konektorów, a nie ma na niej TellDone | TellDone nie jest jeszcze w katalogu konektorów żadnego klienta - dodaj go jako własny konektor z adresem MCP albo użyj metody z tokenem bearer. |
Zobacz też
- Automatyzacje webhookami - automatyczne wysyłanie danych do usług zewnętrznych
- Todoist - dedykowana dwukierunkowa synchronizacja zadań
- Notion - dedykowana integracja Notion