Acces MCP (agenți AI)
MCP este acum complet disponibil pe iPhone (pe lângă aplicația web). Ecranul de pe iPhone îl oglindește pe cel web și include aceleași fragmente de configurare pentru toți clienții AI acceptați.
Accesul MCP necesită planul Pro sau Ultra. Ambele planuri primesc acces complet de citire + scriere (27 de instrumente) și pot comuta la modul doar citire dacă preferi.
MCP (Model Context Protocol) îți permite să conectezi asistenți AI de programare și instrumente de automatizare direct la datele tale TellDone. Odată conectat, agentul tău AI îți poate citi notele, sarcinile, evenimentele, rapoartele, etichetele și istoricul modificărilor - și poate crea, actualiza, șterge și restaura elemente. Sunt 27 de instrumente în total: 10 pentru citirea datelor și 17 pentru scriere.
Disponibil atât în aplicația de iPhone (Setări → Integrări → Agenți AI), cât și în aplicația web (Setări → Agenți AI).
Pe iPhone, Setări → Integrări → Agenți AI deschide ecranul de configurare MCP cu tokenul tău de acces mascat implicit:

Iar pe web:

Două moduri de conectare
Sunt două moduri de a autentifica un client AI, și ambele sunt complet acceptate:
- OAuth 2.1 (recomandat) - fluxul standard de consimțământ "Sign in with TellDone". Asta folosesc interfața de conector Claude Desktop și Claude.ai. Fără copiat tokenuri - te autentifici cu contul tău TellDone și aprobi permisiunile pe care le cere clientul.
- Token bearer - copiază tokenul tău personal de acces din Setări și lipește-l în configurația clientului tău. Cel mai simplu pentru scripturi, CLI-uri și clienți care nu au un flux OAuth încorporat.
| Client | Recomandat |
|---|---|
| Claude Desktop / Cowork | OAuth - adaugă un conector personalizat cu adresa URL MCP, apoi autentifică-te |
| Claude Code (CLI) | Oricare - claude mcp add te ghidează prin OAuth în browser, sau adaugă un antet Bearer pentru metoda cu token |
| Scripturi sau propriul tău cod | Token bearer - cel mai simplu de automatizat |
| Un client care acceptă doar alegerea dintr-un director de conectori listați | Folosește deocamdată puntea cu token bearer sau mcp-remote - TellDone nu este încă în niciun director de conectori |
Cerințe de plan
| Plan | MCP |
|---|---|
| Free | Blocat |
| Basic | Blocat |
| Pro | Citire + scriere (27 de instrumente) - poate comuta la modul Doar citire |
| Ultra | Citire + scriere (27 de instrumente) - poate comuta la modul Doar citire |
Ecranul din aplicație
Ecranul Agenți AI are trei stări, în funcție de planul tău și de faptul dacă MCP este activat.
Blocat (Free și Basic)
Dacă ești pe planul Free sau Basic, ecranul explică ce face MCP și afișează un buton Upgrade. Atingerea lui deschide paywall-ul de unde poți trece la Pro sau Ultra.
Dezactivat (Pro și Ultra, funcție oprită)
Dacă ești pe Pro sau Ultra, dar nu ai activat încă MCP, ecranul arată un scurt rezumat a ceea ce poate face planul tău (numărul de instrumente, modul de acces, cotele) și un buton Activează. Atinge-l pentru a genera tokenul tău de conectare și a porni integrarea.
Activat
Odată activat, ecranul arată tot ce ai nevoie pentru a conecta un client AI:
- Comutator de mod - pe Ultra poți comuta între Doar citire și Citire + scriere. Pe Pro modul este fixat la Citire + scriere.
- Rândul Token de acces cu un comutator de tip ochi pentru a afișa sau ascunde tokenul și un buton de copiere.
- Selectorul de configurare cu file pentru Claude Code, Cursor, Windsurf și Altele. Fragmentul de cod potrivit apare sub file - doar copiază-l și lipește-l în clientul tău AI.
- Butonul Regenerează - rotește tokenul imediat și deconectează orice sesiuni active care îl folosesc pe cel vechi.
- Butonul Dezactivează - oprește MCP și șterge tokenul. Poți reactiva mai târziu, dar va fi emis un token nou.
Ține tokenul tău de conectare privat. Oricine are tokenul îți poate accesa datele TellDone. Folosește Regenerează dacă bănuiești vreodată că tokenul s-a scurs.
Cum activezi
Poți configura MCP de pe oricare platformă:
- iPhone: Setări → Integrări → Agenți AI (MCP)
- Web: app.telldone.app → Setări → Agenți AI
Pași:
- Atinge Activează.
- Alege modul tău de acces (doar Ultra - Pro este mereu Citire + scriere).
- Afișează și copiază tokenul tău folosind iconițele de ochi și de copiere.
- Alege instrumentul tău în secțiunea Configurare (Claude Code, Cursor, Windsurf sau Altele).
- Lipește fragmentul în configurația clientului tău AI.
Conectarea cu OAuth
OAuth este calea recomandată pentru Claude Desktop, Claude.ai, Cowork și Claude Code - te autentifici cu contul tău TellDone în loc să copiezi un token peste tot.
Adresa URL MCP pentru OAuth: https://api.telldone.app/mcp/user (fără /mcp la final - aceea este o adresă diferită, folosită doar pentru calea cu token bearer de mai jos)
Claude Desktop / Cowork
- În client, alege Add custom connector.
- Introdu adresa URL a serverului:
https://api.telldone.app/mcp/user - Clientul deschide pagina de consimțământ a TellDone în browserul tău. Vei vedea ce aplicație cere acces, permisiunile exacte pe care le vrea și un formular de autentificare.
- Autentifică-te cu emailul și parola contului tău TellDone, apoi dă clic pe Allow.
- Clientul primește un token de acces automat și se conectează - fără tokenuri de copiat.
Autentificarea de pe pagina de consimțământ folosește emailul și parola contului tău TellDone. Dacă contul tău are doar Apple sau Google Sign In (fără parolă setată), folosește deocamdată metoda cu token bearer de mai jos.
Claude Code
OAuth (deschide o autentificare în browser):
claude mcp add --transport http telldone https://api.telldone.app/mcp/user
Claude Code descoperă fluxul OAuth automat, dar nu te autentifică la primul apel - rulează /mcp în Claude Code și alege Authenticate pentru a deschide autentificarea în browser. După aceea îți reîmprospătează tokenul de acces singur - nimic de întreținut.
Token bearer (fără browser, bun pentru configurări headless):
claude mcp add telldone --transport http \
https://api.telldone.app/mcp/user/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
Obține-ți YOUR_TOKEN din aplicație: Setări → Integrări → Agenți AI → Copiază tokenul (vezi Cum activezi mai sus).
Conectarea cu un token bearer
Pentru clienți fără suport OAuth încorporat - Cursor, Windsurf și altele - lipește tokenul tău personal de acces direct în configurația clientului. Înlocuiește YOUR_TOKEN cu tokenul din setările tale în toate exemplele de mai jos.
Cursor
Adaugă în .cursor/mcp.json:
{
"mcpServers": {
"telldone": {
"url": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
Windsurf
Adaugă în .codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"telldone": {
"serverUrl": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
Altele
Folosește aceste fragmente pentru clienții pe care selectorul din aplicație îi grupează sub Altele.
Codex
Adaugă în 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
Alți clienți MCP
Orice instrument care acceptă MCP peste HTTP se poate conecta. Folosește endpointul https://api.telldone.app/mcp/user/mcp cu un antet de autorizare Bearer YOUR_TOKEN.
Dacă clientul sau proxy-ul tău rezervă antetul Authorization (de exemplu, unele gateway-uri în stil Smithery), trimite tokenul în X-MCP-Token: YOUR_TOKEN în schimb. Ambele antete funcționează; dacă sunt prezente ambele, Authorization câștigă.
Testarea conexiunii tale
Poți verifica dacă tokenul tău funcționează cu o comandă cURL simplă:
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}'
Un răspuns reușit listează toate instrumentele disponibile.
Permisiuni (scopuri)
Conexiunile OAuth au scopuri delimitate - în timpul autentificării vezi exact ce cere clientul și aprobi explicit.
| Scop | Permite aplicației să... |
|---|---|
notes:read | Citească notele tale, să caute, să deschidă detaliile complete ale unei note |
notes:write | Creeze, editeze, șteargă note (și să ruleze fluxul de notă vocală) |
tasks:read / tasks:write | Citească / creeze, editeze, finalizeze și șteargă sarcini |
events:read / events:write | Citească / creeze, editeze și șteargă evenimente |
reports:read | Citească rapoartele tale zilnice, săptămânale, lunare și anuale |
tags:read / tags:write | Listeze etichetele tale / creeze și redenumească etichete |
profile:read | Citească profilul tău și informațiile de abonament |
offline_access | Rămână conectat când ești plecat (emite un token de reîmprospătare, ca să nu fie nevoie să te autentifici la fiecare sesiune) |
Scopurile sunt un plafon, nu o garanție - o conexiune cu doar notes:read nu poate apela un instrument de scriere, indiferent ce îi ceri. Planul tău este o a doua barieră, peste scopuri.
Conexiunile cu token bearer nu au scopuri delimitate individual - sunt guvernate doar de modul de citire/scriere al planului tău.
Ce poți face
Instrumente de citire (10) - Pro și Ultra
| Instrument | Ce face |
|---|---|
| get_notes | Listează note cu filtre (etichete, interval de date, căutare text) |
| get_note | Vizualizează o singură notă cu sarcinile, evenimentele subordonate și transcrierea completă |
| get_notes_full | Obține mai multe note cu sarcini și evenimente încorporate într-un singur apel |
| get_tasks | Listează sarcini filtrate după stare (de făcut, gata, toate), etichete sau date |
| get_events | Listează evenimente de calendar, filtrează după interval de date |
| get_reports | Citește rapoartele tale zilnice, săptămânale, lunare și anuale (markdown complet) |
| get_tags | Vizualizează toate etichetele tale sortate după utilizare |
| get_profile | Vezi informațiile contului tău și statisticile de utilizare |
| search | Caută în note, sarcini și evenimente (căutare text + semantică pentru note) |
| get_change_log | Vezi istoricul editărilor unei note, sarcini sau eveniment și dacă fiecare editare a fost anulată |
Instrumentul search acceptă căutarea semantică pentru note - găsește rezultate după sens, nu doar după cuvinte cheie. De exemplu, căutarea "ședințe despre buget" va găsi note despre discuții financiare chiar dacă nu conțin cuvântul "buget".
Instrumente de scriere (17) - Pro și Ultra
| Instrument | Ce face |
|---|---|
| process_note | Flux AI complet - trimite text sau audio, primești înapoi o notă cu sarcini, evenimente și etichete |
| create_note | Adaugă o notă text simplă (fără analiză AI) |
| create_task | Adaugă o sarcină cu prioritate, termen limită, memento și etichete |
| create_event | Adaugă un eveniment de calendar cu dată, oră, locație, mementouri, participanți și recurență |
| update_note | Schimbă titlul, rezumatul, tipul, etichetele, prioritatea sau starea notei |
| update_task | Schimbă titlul, descrierea, prioritatea, termenul limită, mementoul, etichetele sau starea sarcinii |
| complete_task | Marchează o sarcină ca finalizată |
| update_event | Schimbă detaliile, ora, locația, mementourile, participanții, recurența, etichetele sau starea evenimentului |
| delete_note | Șterge o notă și toate sarcinile și evenimentele legate de ea |
| delete_task | Șterge o sarcină |
| delete_event | Șterge un eveniment |
| undo_change_log_entry | Anulează o singură editare urmărită - făcută de AI sau de tine - restabilind valoarea anterioară a câmpului |
| restore_entity | Readu o notă, sarcină sau eveniment șters sau arhivat |
| create_tag | Creează o etichetă nouă sau transformă o etichetă sugerată automat într-una permanentă |
| set_tag_pinned | Fixează sau desfixează o etichetă ca să se sorteze în partea de sus |
| delete_tag | Elimină o etichetă (poate fi restaurată cu restore_tag) |
| restore_tag | Readu o etichetă ștearsă |
Toate operațiunile de scriere și ștergere apar instantaneu pe dispozitivele tale conectate (telefon, aplicație web) prin sincronizare în timp real.
Referință instrumente
get_notes
Listează note cu filtrare opțională. Filtrele de dată folosesc recorded_at (când ai înregistrat nota vocală), nu created_at.
| Parametru | Tip | Implicit | Descriere |
|---|---|---|---|
limit | int | 20 | Numărul de note de returnat (max 50) |
offset | int | 0 | Sari peste atâtea note (pentru paginare, max 10000) |
tags | string | - | Filtrează după etichete, separate prin virgulă (se potrivește cu oricare) |
search | string | - | Căutare text pe titlu și rezumat |
date_from | string | - | Data de început, YYYY-MM-DD (inclusiv) |
date_to | string | - | Data de sfârșit, YYYY-MM-DD (exclusiv) |
standalone_only | bool | false | Când e true, ascunde notele de continuare (note atașate unei note/sarcini/eveniment părinte) și returnează doar notele de sine stătătoare |
Returnează: listă de note cu id, title, summary, type, tags, priority, status, recorded_at, created_at.
get_note
Obține o singură notă cu transcrierea completă și toate sarcinile și evenimentele legate.
| Parametru | Tip | Descriere |
|---|---|---|
note_id | string | UUID-ul notei |
Returnează: nota cu title, summary, transcript, type, tags, priority, status, metadata, created_at, plus tablourile tasks[] și events[].
Returnează și transcript_speakers (intervenții de transcriere etichetate pe vorbitori, pentru ședințe cu mai mulți vorbitori - null altfel), speaker_count (null cu excepția cazului în care înregistrarea a fost împărțită pe vorbitori) și parent_note_id/parent_task_id/parent_event_id (setate când această notă este o editare de continuare a altui element). Fiecare intrare tasks[]/events[] include și reminders_at/recurrence_rule (sarcini) sau reminder_minutes/attendees/recurrence_rule (evenimente).
get_notes_full
Obține mai multe note cu sarcinile și evenimentele lor într-un singur apel. Aceleași filtre ca get_notes, dar fiecare notă include tasks[] și events[] încorporate.
| Parametru | Tip | Implicit | Descriere |
|---|---|---|---|
limit | int | 10 | Numărul de note (max 20) |
offset | int | 0 | Sari peste atâtea note |
tags | string | - | Filtrează după etichete |
date_from | string | - | Data de început, YYYY-MM-DD |
date_to | string | - | Data de sfârșit, YYYY-MM-DD |
standalone_only | bool | false | Când e true, ascunde notele de continuare (note atașate unei note/sarcini/eveniment părinte) și returnează doar notele de sine stătătoare |
get_tasks
Listează sarcini cu filtrare.
| Parametru | Tip | Implicit | Descriere |
|---|---|---|---|
status | string | "todo" | Filtru: todo, done sau all |
limit | int | 30 | Numărul de sarcini (max 100) |
offset | int | 0 | Sari peste atâtea sarcini |
tags | string | - | Filtrează după etichete, separate prin virgulă |
date_from | string | - | Data de început, YYYY-MM-DD (filtrează după termen limită; sarcinile fără termen limită sunt excluse) |
date_to | string | - | Data de sfârșit, YYYY-MM-DD (filtrează după termen limită; sarcinile fără termen limită sunt excluse) |
Returnează: listă de sarcini cu id, title, description, status, priority, tags, deadline, reminder_at, reminders_at, completed_at, completed_by, source, created_at. reminder_at oglindește prima intrare din reminders_at pentru compatibilitate retroactivă - folosește reminders_at pentru a vedea toate mementourile unei sarcini.
get_events
Listează evenimente de calendar cu filtrare pe interval de date.
| Parametru | Tip | Implicit | Descriere |
|---|---|---|---|
limit | int | 30 | Numărul de evenimente (max 100) |
offset | int | 0 | Sari peste atâtea evenimente |
date_from | string | - | Data de început, YYYY-MM-DD (filtrează după ora de început a evenimentului) |
date_to | string | - | Data de sfârșit, YYYY-MM-DD |
Returnează: listă de evenimente cu id, title, description, status, start_at, end_at, location, is_all_day, tags, note_id, reminder_minutes, attendees, recurrence_rule, created_at.
get_reports
Obține rapoartele tale generate de AI, cu conținut markdown complet.
| Parametru | Tip | Implicit | Descriere |
|---|---|---|---|
report_type | string | "daily" | Tip: daily, weekly, monthly sau yearly |
limit | int | 5 | Numărul de rapoarte (max 10) |
Returnează: listă de rapoarte cu id, type, period_start, period_end, content_md, created_at.
Rapoartele lunare pot avea 3.000-5.000 de cuvinte. Folosește limit=1 dacă instrumentul tău AI are o fereastră de context strânsă.
get_tags
Obține toate etichetele tale, sortate mai întâi după cele fixate, apoi după numărul de utilizări.
Fără parametri. Returnează până la 100 de etichete, fiecare cu tag, usage_count, is_pinned, is_manual.
get_profile
Obține informațiile contului tău și statisticile de utilizare.
Fără parametri. Returnează email, display_name, locale, transcription_locale, timezone, subscription, mcp_mode, created_at și stats (numărul de note/sarcini/evenimente).
search
Caută în note, sarcini și evenimente deodată. Pentru note, acceptă atât căutare text, cât și căutare semantică (găsește rezultate după sens folosind embeddings AI).
| Parametru | Tip | Implicit | Descriere |
|---|---|---|---|
query | string | obligatoriu | Text de căutare (max 500 de caractere) |
limit | int | 20 | Max rezultate per tip (max 20) |
semantic | bool | true | Activează căutarea semantică pentru note |
Returnează rezultate grupate pe tip: notes[], tasks[], events[]. Fiecare rezultat are id, type, title, detail, created_at.
Setează semantic=false pentru o căutare mai rapidă, doar text.
get_change_log
Vezi istoricul editărilor unei note, sarcini sau eveniment - fiecare editare de continuare făcută de AI și fiecare editare manuală făcută de tine, cele mai noi primele.
| Parametru | Tip | Implicit | Descriere |
|---|---|---|---|
entity | string | obligatoriu | notes, tasks sau events |
entity_id | string | obligatoriu | UUID-ul elementului |
include_manual | bool | false | Include și editările tale manuale, nu doar cele făcute de AI |
Returnează: listă de intrări de modificare cu id (folosește-l ca entry_id pentru anulare), field_name, old_value, new_value, source (follow_up, smart_context sau manual), origin_note_id, edited_at și reverted_at (setat odată anulat).
process_note (Pro și Ultra)
Flux AI complet - funcționează la fel ca înregistrarea în aplicație. Trimite text sau audio, iar TellDone va transcrie, va analiza cu AI și va crea o notă structurată cu sarcini, evenimente, etichete și embeddings extrase.
Acest instrument este asincron: revine imediat cu un audio_id și procesează în fundal. Rezultatele sosesc prin sincronizare în timp real către dispozitivele tale conectate, sau poți interoga cu get_notes().
| Parametru | Tip | Descriere |
|---|---|---|
text | string | Text de analizat (sare peste transcriere dacă nu e furnizat audio) |
audio_base64 | string | Fișier audio codificat Base64 (până la 50MB, declanșează transcrierea) |
audio_format | string | m4a, ogg, wav, mp3, aac sau webm (implicit: m4a) |
parent_task_id | string | UUID-ul unei sarcini la care aceasta este o continuare |
parent_note_id | string | UUID-ul unei note la care aceasta este o continuare |
parent_event_id | string | UUID-ul unui eveniment la care aceasta este o continuare |
Trebuie să furnizezi fie text, fie audio_base64 (sau ambele - audioul are prioritate pentru transcriere).
Returnează: {"audio_id": "...", "status": "processing", "mode": "text-only"} sau "mode": "audio+stt" dacă a fost furnizat audio.
process_note este supus cotelor planului tău (încărcări pe zi, note pe lună, lungime maximă a textului). Folosește get_profile pentru a-ți verifica utilizarea curentă.
create_note (Pro și Ultra)
Creează instantaneu o notă text simplă. Nu declanșează analiza AI - nu se extrag sarcini sau evenimente. Pentru analiză AI completă cu extragere de sarcini/evenimente, folosește process_note în schimb.
| Parametru | Tip | Limită | Descriere |
|---|---|---|---|
title | string | 200 de caractere | Obligatoriu |
summary | string | 1000 de caractere | Opțional. Teaser scurt (1-3 propoziții). Inclus în prompturile rapoartelor, așa că ține-l concis |
transcript | string | în funcție de plan | Opțional. Corp în format lung afișat în detaliile notei. Nu este inclus în rapoarte. Limite: Free 2.000 / Basic 8.000 / Pro 20.000 / Ultra 50.000 de caractere |
type | string | - | Opțional. task, idea, info (implicit), status, meeting, event sau reflection |
tags | string | 20 de etichete | Separate prin virgulă, opțional |
create_task (Pro și Ultra)
Creează o sarcină nouă.
| Parametru | Tip | Limită | Descriere |
|---|---|---|---|
title | string | 200 de caractere | Obligatoriu |
description | string | 2000 de caractere | Opțional |
priority | string | - | low, medium (implicit) sau high |
deadline | string | - | YYYY-MM-DD, opțional |
reminder_at | string | - | Datetime ISO 8601 (de exemplu, 2026-04-15T09:00:00Z), opțional |
tags | string | 20 de etichete | Separate prin virgulă, opțional |
note_id | string | - | UUID pentru a lega sarcina de o notă părinte, opțional |
create_event (Pro și Ultra)
Creează un eveniment de calendar.
| Parametru | Tip | Limită | Descriere |
|---|---|---|---|
title | string | 200 de caractere | Obligatoriu |
start_at | string | - | Datetime ISO 8601, obligatoriu |
end_at | string | - | Datetime ISO 8601 (implicit: start + 1 oră) |
description | string | 2000 de caractere | Opțional |
location | string | 200 de caractere | Opțional |
is_all_day | bool | - | Implicit: false |
tags | string | 20 de etichete | Separate prin virgulă, opțional |
reminder_minutes | string | - | Minute înainte de eveniment, separate prin virgulă (de exemplu, 15,60), opțional |
attendees | string | - | Nume sau emailuri separate prin virgulă, opțional |
recurrence_rule | string | - | Șir RRULE (de exemplu, FREQ=WEEKLY;BYDAY=MO,WE,FR), opțional |
note_id | string | - | UUID pentru a lega evenimentul de o notă părinte, opțional |
update_note (Pro și Ultra)
Actualizează unul sau mai multe câmpuri ale unei note existente. Doar câmpurile pe care le furnizezi sunt modificate.
| Parametru | Tip | Descriere |
|---|---|---|
note_id | string | Obligatoriu, UUID-ul notei |
title | string | Titlu nou (max 200 de caractere) |
summary | string | Rezumat nou (max 1000 de caractere, trimite un spațiu " " pentru a-l goli) |
transcript | string | Transcriere nouă (limită în funcție de plan, trimite un spațiu " " pentru a o goli) |
type | string | task, idea, info, status, meeting, event sau reflection |
tags | string | Etichete separate prin virgulă (înlocuiește toate etichetele existente, max 20) |
priority | string | low, medium sau high |
status | string | active sau archived |
Pentru notele create de fluxul vocal, transcript este ieșirea originală de transcriere vocală. Suprascrierea ei înlocuiește sursa canonică - ia în calcul să adaugi la ea în schimb, dacă vrei să păstrezi originalul.
update_task (Pro și Ultra)
Actualizează unul sau mai multe câmpuri ale unei sarcini existente. Doar câmpurile pe care le furnizezi sunt modificate.
| Parametru | Tip | Descriere |
|---|---|---|
task_id | string | Obligatoriu, UUID-ul sarcinii |
title | string | Titlu nou |
description | string | Descriere nouă (trimite un spațiu " " pentru a o goli) |
priority | string | low, medium sau high |
deadline | string | YYYY-MM-DD (trimite un spațiu pentru a-l goli) |
status | string | todo sau done |
tags | string | Etichete separate prin virgulă (înlocuiește toate etichetele existente, max 20) |
reminder_at | string | Datetime ISO 8601 (trimite un spațiu pentru a-l goli) |
Setarea status la done înregistrează și când și cum a fost finalizată sarcina.
complete_task (Pro și Ultra)
Scurtătură pentru a marca o sarcină ca finalizată.
| Parametru | Tip | Descriere |
|---|---|---|
task_id | string | Obligatoriu, UUID-ul sarcinii |
Returnează o eroare dacă sarcina nu există sau este deja finalizată.
update_event (Pro și Ultra)
Actualizează unul sau mai multe câmpuri ale unui eveniment existent. Doar câmpurile pe care le furnizezi sunt modificate.
| Parametru | Tip | Descriere |
|---|---|---|
event_id | string | Obligatoriu, UUID-ul evenimentului |
title | string | Titlu nou |
description | string | Descriere nouă (trimite un spațiu pentru a o goli) |
start_at | string | Oră de început nouă (ISO 8601) |
end_at | string | Oră de sfârșit nouă (ISO 8601) |
location | string | Locație nouă (trimite un spațiu pentru a o goli) |
status | string | confirmed, tentative sau cancelled |
tags | string | Etichete separate prin virgulă (înlocuiește toate etichetele existente, max 20) |
is_all_day | string | "true" sau "false" |
reminder_minutes | string | Minute înainte de eveniment, separate prin virgulă (de exemplu, 15,60) |
attendees | string | Nume sau emailuri separate prin virgulă |
recurrence_rule | string | Șir RRULE (trimite un spațiu pentru a-l goli) |
delete_note (Pro și Ultra)
Șterge o notă. Asta șterge și toate sarcinile și evenimentele create din această notă.
| Parametru | Tip | Descriere |
|---|---|---|
note_id | string | Obligatoriu, UUID-ul notei |
delete_task (Pro și Ultra)
Șterge o sarcină.
| Parametru | Tip | Descriere |
|---|---|---|
task_id | string | Obligatoriu, UUID-ul sarcinii |
delete_event (Pro și Ultra)
Șterge un eveniment.
| Parametru | Tip | Descriere |
|---|---|---|
event_id | string | Obligatoriu, UUID-ul evenimentului |
undo_change_log_entry (Pro și Ultra)
Anulează o singură editare urmărită - restabilește câmpul la valoarea lui dinaintea acelei editări, fie că editarea a fost făcută de AI (dintr-o înregistrare de continuare), fie de tine direct.
| Parametru | Tip | Descriere |
|---|---|---|
entity | string | Obligatoriu, notes, tasks sau events |
entity_id | string | Obligatoriu, UUID-ul elementului |
entry_id | string | Obligatoriu, id-ul intrării de modificare din get_change_log |
Returnează: {"entry_id", "entity_type", "entity_id", "field_name", "restored_value", "reverted_at"}. Anularea aceleiași intrări de două ori returnează o eroare - este deja anulată.
restore_entity (Pro și Ultra)
Readu o notă, sarcină sau eveniment șters sau arhivat.
| Parametru | Tip | Descriere |
|---|---|---|
entity | string | Obligatoriu, notes, tasks sau events |
entity_id | string | Obligatoriu, UUID-ul elementului |
Returnează: elementul restaurat ca JSON.
create_tag (Pro și Ultra)
Creează o etichetă nouă sau transformă o etichetă sugerată automat existentă într-una permanentă.
| Parametru | Tip | Descriere |
|---|---|---|
tag | string | Obligatoriu, 1-50 de caractere (stocat cu litere mici) |
category | string | Opțional |
set_tag_pinned (Pro și Ultra)
Fixează sau desfixează o etichetă ca să se sorteze în partea de sus a listei tale de etichete.
| Parametru | Tip | Descriere |
|---|---|---|
tag | string | Obligatoriu |
pinned | bool | Obligatoriu |
Etichetele care conțin un caracter / nu pot fi fixate.
delete_tag (Pro și Ultra)
Elimină o etichetă. Poate fi readusă cu restore_tag.
| Parametru | Tip | Descriere |
|---|---|---|
tag | string | Obligatoriu |
restore_tag (Pro și Ultra)
Readu o etichetă ștearsă.
| Parametru | Tip | Descriere |
|---|---|---|
tag | string | Obligatoriu |
Limite de intrare
| Câmp | Lungime maximă | Folosit în |
|---|---|---|
| title | 200 de caractere | create/update note, sarcină, eveniment |
| description | 2.000 de caractere | create/update sarcină, eveniment |
| summary | 1.000 de caractere (strict) | create/update note. Inclus în prompturile rapoartelor, ținut scurt pentru a controla costul de tokeni |
| transcript | în funcție de plan: Free 2.000 / Basic 8.000 / Pro 20.000 / Ultra 50.000 | create/update note. Corp în format lung, nu în rapoarte |
| location | 200 de caractere | create/update eveniment |
| tags | 20 de etichete | create/update note, sarcină, eveniment |
| interogare de căutare | 500 de caractere | search |
| audio_base64 (decodat) | 50 MB | process_note |
Dacă depășești o limită, instrumentul returnează un mesaj de eroare precum "title too long (max 200 chars, got 250)".
Gestionarea erorilor
Toate instrumentele returnează JSON. Erorile folosesc acest format:
{"error": "description of what went wrong"}
Erori frecvente:
| Eroare | Când |
|---|---|
"MCP access is read-only..." | Instrument de scriere apelat în modul doar citire |
"Invalid note_id format" | Șir non-UUID transmis ca ID |
"Note not found" | ID-ul nu există sau aparține altui utilizator |
"Task not found or already completed" | complete_task pe o sarcină inexistentă sau deja finalizată |
"title too long (max 200 chars, got N)" | Limită de intrare depășită |
"Too many tags (max 20)" | Au fost furnizate mai mult de 20 de etichete |
Erori la nivel HTTP:
| Cod | Semnificație |
|---|---|
| 401 | Token Bearer invalid sau lipsă |
| 403 | MCP dezactivat sau planul nu permite MCP |
| 429 | Limită de rată depășită (5 cereri/s, rafală până la 20) |
Exemple de utilizare
Toate exemplele folosesc cURL cu protocolul MCP JSON-RPC. Înlocuiește YOUR_TOKEN cu tokenul tău de conectare.
Citirea datelor
# 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}}}'
Scrierea datelor (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>"}}}'
Un răspuns reușit arată așa:
{
"jsonrpc": "2.0",
"id": 10,
"result": {
"content": [{"type": "text", "text": "{\"id\":\"...\",\"title\":\"Review PR\",\"status\":\"todo\"}"}]
}
}
Instrumentele de scriere și actualizare returnează răspunsuri minime, cu doar id, title și status. Pentru a obține detaliile complete (etichete, prioritate, termen limită etc.) după o scriere, fă un apel de citire de continuare precum get_tasks sau get_note.
Gestionarea tokenului
| Acțiune | Cum |
|---|---|
| Vezi tokenul | iPhone Setări → Integrări → Agenți AI (sau web Setări → Agenți AI), atinge iconița de ochi |
| Copiază tokenul | Atinge iconița de copiere de lângă token |
| Regenerează | Atinge Regenerează și confirmă. Tokenul vechi încetează să funcționeze imediat, iar orice sesiuni active se deconectează |
| Schimbă modul | Doar Ultra - comută între Doar citire și Citire + scriere. Pe Pro modul este fixat la Citire + scriere |
| Dezactivează | Atinge Dezactivează și confirmă. Tokenul este șters și toate conexiunile se opresc. Poți reactiva mai târziu (va fi emis un token nou) |
Ce îi poți cere agentului tău AI
Odată conectat, cere-i instrumentului tău AI lucruri precum:
Revizuiește-ți ziua:
- "La ce am lucrat azi?"
- "Arată-mi notele mele din această săptămână"
- "Ce sarcini sunt restante?"
Gestionează sarcini:
- "Creează o sarcină: revizuiește raportul trimestrial, prioritate ridicată, termen limită vineri"
- "Marchează sarcina Figma ca finalizată"
- "La ce sarcini lucrez?"
Caută și analizează:
- "Găsește toate notele despre strategia de marketing"
- "Ce evenimente am săptămâna viitoare?"
- "Rezumă rapoartele mele zilnice de săptămâna trecută"
Planifică din timp:
- "Creează un eveniment: standup de echipă mâine la ora 10"
- "Ce am în calendar săptămâna aceasta?"
- "Arată-mi etichetele mele de top - pe ce petrec cel mai mult timp?"
Agentul AI are acces complet la notele, sarcinile, evenimentele și rapoartele tale. Poate citi, crea, actualiza și șterge date și poate răspunde la întrebări complexe combinând informații din mai multe instrumente.
Note importante
- Două moduri de a crea note -
create_notecreează instantaneu o notă text simplă (fără analiză AI).process_noterulează fluxul AI complet (la fel ca înregistrarea în aplicație) - analizează textul, extrage sarcini și evenimente, generează etichete și embeddings. Foloseșteprocess_notecând vrei ca TellDone să gândească în locul tău. - Fără sincronizare cu integrări - elementele create sau actualizate prin MCP nu declanșează automatizări prin webhook sau sincronizări de integrare (Todoist, Notion). Vor apărea în aplicațiile tale la următoarea sincronizare.
- Căutarea semantică depinde de instrument - notele create cu
process_noteprimesc embeddings și apar în căutarea semantică. Notele create cucreate_notenu primesc embeddings, așa că apar doar în căutarea text. - Răspunsurile de scriere sunt minime - instrumentele de creare și actualizare returnează doar
id,titleșistatus. Pentru a ob ține toate câmpurile după o scriere, fă un apel de citire de continuare. - Filtrele de dată folosesc UTC - parametrii
date_from/date_tosunt comparați ca marcaje temporale UTC. Pentru utilizatorii din fusuri orare non-UTC, datele de graniță pot include sau exclude elemente din zilele adiacente. - Limită de rată - 5 cereri pe secundă, cu rafale până la 20. Pentru operațiuni în masă, ritmează-ți cererile.
Securitate
- Fiecare utilizator primește un token de conectare unic de 384 de biți
- Tokenul tău este revocat instantaneu când dezactivezi MCP sau îl regenerezi
- Toate datele sunt strict izolate la contul tău - agentul tău poate accesa doar propriile tale date
- Fiecare cerere este delimitată la utilizatorul tău - nu există niciun mod prin care un agent să acceseze datele altui utilizator
- Conexiunea folosește HTTPS cu limitare de rată (5 cereri/s, rafală până la 20)
- Conexiunile OAuth folosesc PKCE cu coduri de autorizare de unică folosință și tokenuri de acces cu durată scurtă de viață - poți revoca o conexiune oricând din aplicație
Pentru o analiză tehnică aprofundată - endpointuri de descoperire, durata de viață a tokenurilor, fluxul OAuth complet - vezi referința noastră de conector open-source la github.com/exp78/telldone-mcp sau interoghează direct https://api.telldone.app/.well-known/oauth-protected-resource.
Confidențialitate și fluxul de date
Datele tale sunt transmise unui instrument AI conectat doar când îi ceri explicit să facă ceva - de exemplu, când îi ceri să-ți citească sau să-ți modifice notele. Instrumentul primește doar răspunsurile la apelurile specifice pe care le face, delimitate la permisiunile pe care le-ai aprobat. Tu ești la comandă: schimbă modul de citire/scriere al planului tău, îngustează scopurile OAuth pe care le aprobi la autentificare sau regenerează și dezactivează tokenul tău bearer, toate din Setări. Vezi Politica de confidențialitate pentru toate detaliile sau scrie-ne la support@telldone.app cu întrebări.
Depanare
| Simptom | Cauză / remediu |
|---|---|
| Pagina de consimțământ OAuth spune "Wrong email or password" | Folosește emailul și parola contului tău TellDone (cel cu care te autentifici în aplicație). Dacă contul tău are doar Apple sau Google Sign In și nicio parolă, folosește metoda cu token bearer în schimb. |
| Conectat, dar AI nu poate crea sau edita nimic | Planul sau modul tău este doar citire, sau conexiunii nu i s-au acordat scopuri de scriere - reconectează-te și aprobă-le, sau verifică-ți modul în Setări. |
| Eroare "Insufficient scope" de la un instrument | Conexiunii OAuth nu i s-a acordat acel scop. Reconectează-te și aprobă permisiunea de care are nevoie instrumentul. |
| Instrumentele nu apar deloc | MCP nu este activat pe contul tău (Setări → Agenți AI), sau planul tău nu include MCP. |
| Clientul meu îmi permite doar să aleg dintr-o listă de conectori, iar TellDone nu e pe ea | TellDone nu este încă în directorul de conectori al niciunui client - adaugă-l ca un conector personalizat cu adresa URL MCP, sau folosește metoda cu token bearer. |
Vezi și
- Automatizări prin webhook - trimite date către servicii externe automat
- Todoist - sincronizare bidirecțională dedicată a sarcinilor
- Notion - integrare Notion dedicată