본문으로 건너뛰기

AI 에이전트 (MCP)

모든 플랜에서 쓸 수 있어요

MCP는 모든 플랜에서 작동해요. Free와 Basic은 읽기 도구 10개를 모두 읽기 전용으로 쓸 수 있어요 (Free는 하루 100회 요청으로 제한돼요). Pro와 Ultra는 전체 읽기 및 쓰기 접근(도구 27개)을 쓰고, 원하면 읽기 전용 모드로 바꿀 수 있어요.

MCP(Model Context Protocol)를 쓰면 ChatGPT, Claude 같은 AI 어시스턴트와 코딩 어시스턴트, 자동화 도구를 TellDone 데이터에 바로 연결할 수 있어요. 연결하면 어시스턴트가 노트, 작업, 이벤트, 리포트, 태그, 변경 기록을 읽을 수 있어요. Pro 이상에서는 항목을 만들고, 수정하고, 삭제하고, 복원할 수도 있어요. 도구는 27개예요. 읽기용 10개(모든 플랜)와 쓰기용 17개(Pro 이상)예요.

iPhone에서 **설정 > 연동 > AI 에이전트 (MCP)**를 열면 액세스 토큰이 기본적으로 가려진 MCP 설정 화면이 나와요.

iPhone에서 토큰이 가려진 설정 AI 에이전트

웹에서는 이렇게 보여요.

웹에서 액세스 토큰이 숨겨진 설정 AI 에이전트

연결하는 두 가지 방법​

AI 클라이언트를 연결하는 방법은 두 가지예요.

  1. TellDone으로 로그인 (OAuth) (추천) - TellDone 계정으로 로그인하고 앱이 요청하는 권한을 승인해요. ChatGPT와 Claude가 이 방식을 쓰며, 복사할 토큰이 없어요.
  2. Bearer 토큰 - 설정에서 액세스 토큰을 복사해 클라이언트 설정에 붙여넣어요. 스크립트, 명령줄 도구, 기본 OAuth 흐름이 없는 클라이언트에 가장 간단해요.
클라이언트추천 방식
ChatGPT (chatgpt.com 또는 ChatGPT 데스크톱 앱, 모바일 앱 제외)OAuth - MCP URL로 사용자 지정 MCP 서버를 추가한 다음 로그인
Claude (웹사이트, Desktop, iPhone 앱) / CoworkOAuth - MCP URL로 사용자 지정 커넥터를 추가한 다음 로그인
Claude Code (CLI)당분간은 Bearer 토큰 - 토큰을 넣어 Authorization 헤더를 추가
스크립트 또는 직접 만든 코드Bearer 토큰 - 자동화하기 가장 간단해요
목록에 있는 커넥터 중에서만 고를 수 있는 클라이언트MCP URL로 TellDone을 사용자 지정 커넥터로 추가하거나 Bearer 토큰을 사용하세요. TellDone은 아직 어떤 커넥터 디렉터리에도 없어요

플랜별 요구 사항​

플랜MCP
Free읽기 전용 (읽기 도구 10개), 하루 100회 요청
Basic읽기 전용 (읽기 도구 10개), 하루 한도 없음
Pro읽기 및 쓰기 (도구 27개) - 읽기 전용 모드로 전환 가능
Ultra읽기 및 쓰기 (도구 27개) - 읽기 전용 모드로 전환 가능

Free의 하루 100회 요청 한도는 도구 호출만 세어요. 연결, 로그인, 도구 목록 조회는 포함되지 않아요. 하루는 계정에 저장된 시간대를 따르고 자정에 초기화돼요. 한도에 도달하면 어시스턴트가 그렇다는 메시지를 받아요. 쓰기 도구는 Free와 Basic에서 거부돼요. 액세스 토큰을 쓰면 연결이 읽기 전용이고 만들기와 수정은 Pro 이상이 필요하다고 응답해요. 로그인(OAuth)을 쓰면 대부분 "Insufficient scope"로 응답해요. Free와 Basic 연결에는 쓰기 권한이 주어지지 않기 때문이에요.

앱 안의 화면​

설정 > 연동을 열고 AI 에이전트 섹션에서 **AI 에이전트 (MCP)**를 누르세요. 화면에는 "ChatGPT, Claude 등 AI 어시스턴트가 TellDone의 노트, 작업, 이벤트를 다룰 수 있게 해요."라는 문구와 현재 플랜이 나와요.

  • Free: "현재 플랜: 읽기 전용 접근, 하루 100회 요청. 쓰기는 Pro에서 가능해요."
  • Basic: "현재 플랜: 읽기 전용 접근"
  • Pro와 Ultra: "현재 플랜: 읽기 및 쓰기 접근"

MCP가 꺼져 있는 동안에는 활성화를 눌러 켜세요.

활성화하면 화면에 이런 항목이 나와요.

  • 접근 모드 (Pro와 Ultra) - 언제든 읽기 전용이나 읽기 및 쓰기를 고를 수 있어요.
  • 어시스턴트 연결 - ChatGPT, Claude, 다른 어시스턴트의 연결 단계예요. 어시스턴트 안에서 TellDone에 로그인하므로 토큰은 필요 없어요.
  • 연결된 앱 - 연결한 어시스턴트 목록이고, 각각 연결 해제 버튼이 있어요. 첫 연결 전까지는 비어 있어요.
  • 개발자용 (기본적으로 접혀 있음) - 액세스 토큰 필드(가려져 있고 보기 / 숨기기와 복사 포함), 토큰 재생성, 그리고 준비된 텍스트와 자체 복사 버튼이 있는 Claude Code / Cursor / 기타 전환이 있어요. Claude Code는 claude mcp add 명령을, Cursor는 .cursor/mcp.json용 JSON을, 기타는 서버 주소와 OAuth 로그인 옵션, Authorization: Bearer 헤더를 알려줘요. 토큰이 가려져 있는 동안 스니펫에는 YOUR_TOKEN이 들어 있어요. 보기를 누르면 실제 토큰이 들어가요.

웹에도 같은 컨트롤이 다른 배치로 있고, 접히는 개발자 섹션은 없어요. 복사 버튼이 있는 OAuth 주소, 토큰 컨트롤, 연결 해제가 있는 연결된 앱, 클라이언트 선택지가 여섯 개(Claude Code, Cursor, Windsurf, Codex, OpenClaw, cURL)인 Manual bearer token setup이에요. 웹에서는 토큰 필드가 숨겨져 있어도 스니펫에 항상 실제 토큰이 들어 있으니 토큰과 똑같이 다루세요.

  • 문서 - 이 페이지로 가는 링크예요.
  • 비활성화 - MCP를 꺼요. "연결된 모든 AI 도구의 접근이 해제돼요."라고 나오며 확인해요. 토큰이 삭제되고 모든 연결이 중지돼요. MCP를 다시 활성화하면 새 토큰이 발급되고, 로그인(OAuth)으로 연결한 앱은 다시 로그인하지 않아도 작동해요. 앱을 완전히 제거하려면 연결된 앱에서 연결 해제를 누르세요.
팁

액세스 토큰은 비공개로 유지하세요. 토큰이 있는 사람은 누구나 TellDone 데이터에 접근할 수 있어요. 유출이 의심되면 토큰 재생성을 누르세요.

활성화하는 방법​

두 플랫폼 어디서든 MCP를 설정할 수 있어요.

  • iPhone: 설정 > 연동 > AI 에이전트 (MCP)
  • 웹: app.telldone.app > 설정 > 연동 > AI agents (MCP)

단계는 이래요.

  1. 활성화를 누르세요.
  2. Pro와 Ultra에서는 접근 모드(읽기 전용 또는 읽기 및 쓰기)를 고르세요. Free와 Basic은 읽기 전용이에요.
  3. ChatGPT나 Claude를 연결하려면 어시스턴트 연결에서 해당 항목을 누르고 단계를 따르세요 (아래 참고). 토큰은 필요 없어요.
  4. iPhone에서 코딩 클라이언트를 쓰려면 개발자용을 열고 보기를 누른 다음 Claude Code, Cursor, 기타 중 하나를 고르고 스니펫 아래의 복사를 누르세요. 보기를 누르기 전에 복사하면 스니펫에 토큰 대신 YOUR_TOKEN이 들어 있어요. 웹에서는 Manual bearer token setup에서 클라이언트를 고르고 스니펫을 복사하세요. 이미 토큰이 들어 있어요.
  5. 스니펫을 클라이언트나 설정 파일에 붙여넣으세요.

OAuth로 연결하기​

ChatGPT, Claude, Cowork에는 OAuth를 추천해요. 토큰을 복사하는 대신 TellDone 계정으로 로그인해요.

OAuth용 MCP URL: https://api.telldone.app/mcp/user

같은 서버가 https://api.telldone.app/mcp/user/mcp에서도 응답하고, 두 주소 모두 Bearer 토큰을 받아요. OAuth 로그인에는 첫 번째 주소를 쓰세요.

ChatGPT​

사용자 지정 MCP 서버는 chatgpt.com이나 ChatGPT 데스크톱 앱에서 추가할 수 있어요. ChatGPT 모바일 앱에서는 사용자 지정 커넥터를 추가할 수 없고, TellDone 앱에는 이렇게 나와요. "ChatGPT 앱에서는 카탈로그에 있는 커넥터만 추가할 수 있어요." TellDone에서 안내를 내 컴퓨터로 보내기를 누르면 컴퓨터에서 안내를 받을 수 있어요. 거기서 한 번 추가하면 ChatGPT 모바일 앱에서도 TellDone을 쓸 수 있어요.

앱에 나오는 단계는 이래요.

  1. 컴퓨터에서 chatgpt.com/plugins를 열고 Add를 클릭한 다음 Add custom MCP server를 선택하세요.
  2. 이름을 TellDone으로 정하고, 아래 주소(https://api.telldone.app/mcp/user)를 붙여넣은 다음 OAuth를 선택하세요.
  3. 확인하고 설치한 후 TellDone에 로그인하고 접근을 허용하세요.

메뉴 이름이 바뀌었다면 OpenAI의 사용자 지정 MCP 서버 가이드를 참고하세요.

Claude (웹사이트, Desktop, iPhone 앱) / Cowork​

앱에 나오는 단계는 이래요.

  1. Claude에서 Customize → Connectors를 열고 Add custom connector를 누르세요.
  2. 아래 주소(https://api.telldone.app/mcp/user)를 붙여넣으세요.
  3. TellDone에 로그인하고 접근을 허용하세요.

로그인하면 TellDone의 동의 페이지에 어떤 앱이 접근을 요청하는지, 그리고 요청하는 권한이 정확히 무엇인지 나와요. TellDone 이메일과 비밀번호로 로그인하고 Allow access를 클릭하세요. 또는 Apple로 로그인이나 Google로 로그인을 누르면 같은 단계에서 접근이 승인돼요. Claude가 알아서 연결되며 복사할 토큰은 없어요.

메뉴 이름이 바뀌었다면 Anthropic의 사용자 지정 커넥터 추가 가이드를 참고하세요.

Bearer 토큰으로 연결하기​

Claude Code, Cursor, 기본 OAuth 로그인이 없는 다른 클라이언트에서는 액세스 토큰을 클라이언트 설정에 직접 붙여넣으세요. 아래 모든 예시에서 YOUR_TOKEN을 설정에 있는 토큰으로 바꾸세요.

Claude Code (Bearer 토큰)​

claude mcp add --transport http telldone \
https://api.telldone.app/mcp/user/mcp \
--header "Authorization: Bearer YOUR_TOKEN"

직접 입력할 필요는 없어요. 설정 > 연동 > AI 에이전트 (MCP) > 개발자용에서 보기를 누르고 Claude Code를 고른 다음 복사를 누르세요. 복사한 명령에 이미 토큰이 들어 있어요.

Cursor​

.cursor/mcp.json에 추가하세요 (또는 보기를 누른 뒤 개발자용 > Cursor에서 복사하세요).

{
"mcpServers": {
"telldone": {
"url": "https://api.telldone.app/mcp/user/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}

다른 클라이언트​

다른 MCP 클라이언트 설정이에요.

Codex​

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

다른 MCP 클라이언트​

HTTP로 MCP를 지원하는 도구라면 어디든 연결할 수 있어요. 엔드포인트 https://api.telldone.app/mcp/user/mcp에 Bearer YOUR_TOKEN 인증 헤더를 쓰세요.

대체 인증 헤더

클라이언트나 프록시가 Authorization 헤더를 따로 쓰는 경우(예: 일부 Smithery 방식 게이트웨이)에는 토큰을 X-MCP-Token: YOUR_TOKEN으로 보내세요. 두 헤더 모두 작동하고, 둘 다 있으면 Authorization이 우선해요.

연결 테스트하기​

간단한 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}'

성공하면 사용할 수 있는 모든 도구가 응답에 나열돼요.

권한 (스코프)​

OAuth 연결은 스코프가 있어요. 로그인할 때 클라이언트가 무엇을 요청하는지 정확히 보고 직접 승인해요.

스코프앱이 할 수 있는 일
notes:read노트를 읽고 노트 상세 전체를 열기 (search 도구는 tasks:read와 events:read도 필요)
notes:write노트 만들기, 수정, 삭제 (process_note는 tasks:write와 events:write도 필요)
tasks:read / tasks:write작업 읽기 / 작업 만들기, 수정, 완료, 삭제
events:read / events:write이벤트 읽기 / 이벤트 만들기, 수정, 삭제
reports:read일간, 주간, 월간, 연간 리포트 읽기
tags:read / tags:write태그 목록 보기 / 태그 만들기, 고정, 삭제, 복원
profile:read계정 정보와 구독 읽기
offline_access로그인 유지 (세션마다 다시 로그인하지 않도록 refresh token 발급)

스코프는 연결이 할 수 있는 일을 제한해요. notes:read만 있는 연결은 쓰기 도구를 호출할 수 없어요. 플랜이 그 위에 두 번째 제한을 걸어요.

Bearer 토큰 연결에는 개별 스코프가 없어요. 플랜의 읽기/쓰기 모드로만 제어돼요.

할 수 있는 일​

읽기 도구 (10) - 모든 플랜​

도구하는 일
get_notes필터(태그, 날짜 범위, 텍스트 검색)로 노트 목록 보기
get_note연결된 작업, 이벤트, 받아쓰기 전체와 함께 노트 하나 보기
get_notes_full여러 노트를 작업, 이벤트와 함께 한 번에 가져오기
get_tasks상태(할 일, 완료, 전체), 태그, 날짜로 작업 목록 보기
get_events날짜 범위로 걸러서 캘린더 이벤트 목록 보기
get_reports일간, 주간, 월간, 연간 리포트 읽기 (마크다운 전체)
get_tags사용 빈도순으로 모든 태그 보기
get_profile계정 정보와 노트, 작업, 이벤트 개수 보기
search노트, 작업, 이벤트 전체 검색 (노트는 텍스트 + 의미 검색)
get_change_log노트, 작업, 이벤트의 수정 기록과 각 수정이 취소됐는지 보기
팁

search 도구는 노트에 대해 의미 검색을 지원해요. 키워드만이 아니라 뜻으로 결과를 찾아요. 예를 들어 "예산 관련 회의"를 검색하면 "예산"이라는 단어가 없어도 재무 논의에 관한 노트를 찾아요.

쓰기 도구 (17) - Pro와 Ultra​

도구하는 일
process_note전체 AI 파이프라인 - 텍스트나 오디오를 보내면 작업, 이벤트, 태그가 있는 노트를 돌려줘요
create_note일반 텍스트 노트 추가 (AI 분석 없음)
create_task우선순위, 마감일, 알림, 태그가 있는 작업 추가
create_event날짜, 시간, 장소, 알림, 참석자, 반복 규칙이 있는 캘린더 이벤트 추가
update_note노트 제목, 요약, 유형, 태그, 우선순위, 상태 변경
update_task작업 제목, 설명, 우선순위, 마감일, 알림, 태그, 상태 변경
complete_task작업을 완료로 표시
update_event이벤트 세부 정보, 시간, 장소, 알림, 참석자, 반복 규칙, 태그, 상태 변경
delete_note노트 삭제. 노트의 작업과 이벤트는 그대로 남아요
delete_task작업 삭제
delete_event이벤트 삭제
undo_change_log_entry추적된 수정 하나를 취소 - AI가 한 것이든 내가 한 것이든 필드를 이전 값으로 되돌려요
restore_entity삭제되거나 보관된 노트나 작업, 삭제되거나 취소된 이벤트를 되돌리기
create_tag새 태그를 만들거나, 자동 추천된 태그를 영구 태그로 바꾸기
set_tag_pinned태그를 고정하거나 고정 해제해서 맨 위에 정렬
delete_tag태그 제거 (restore_tag로 복원 가능)
restore_tag삭제된 태그 되돌리기

모든 쓰기와 삭제 작업은 연결된 기기(휴대폰, 웹 앱)에 바로 나타나요.

도구 참조​

get_notes​

필터를 적용해 노트 목록을 가져와요. 날짜 필터는 recorded_at(음성 노트를 녹음한 시각)을 쓰고, 그 값이 없는 노트는 created_at을 써요.

ParameterTypeDefaultDescription
limitint20Number of notes to return (max 50)
offsetint0Skip this many notes (for pagination, max 10000)
tagsstring-Filter by tags, comma-separated (matches any)
searchstring-Text search on title and summary
date_fromstring-Start date, YYYY-MM-DD (inclusive)
date_tostring-End date, YYYY-MM-DD (exclusive)
standalone_onlyboolfalseWhen true, hides follow-up notes (notes attached to a parent note/task/event) and returns only standalone notes

반환값: id, title, summary, type, tags, priority, status, recorded_at, created_at이 담긴 노트 목록.

get_note​

받아쓰기 전체와 연결된 모든 작업, 이벤트가 담긴 노트 하나를 가져와요.

ParameterTypeDescription
note_idstringThe note's UUID

반환값: title, summary, transcript, type, tags, priority, status, metadata, created_at이 담긴 노트와 tasks[], events[] 배열.

transcript_speakers(화자 표시가 붙은 받아쓰기 구간. 화자가 여러 명인 회의에만 있고 아니면 null), speaker_count(녹음이 화자별로 나뉜 경우에만 값이 있고 아니면 null), parent_note_id/parent_task_id/parent_event_id(이 노트가 다른 항목의 후속 수정일 때 설정)도 함께 반환해요. tasks[]/events[] 항목에는 reminders_at/recurrence_rule(작업) 또는 reminder_minutes/attendees/recurrence_rule(이벤트)도 들어 있어요.

get_notes_full​

여러 노트를 작업, 이벤트와 함께 한 번의 호출로 가져와요. search를 제외하면 get_notes와 필터가 같고, 각 노트에 tasks[]와 events[]가 포함돼요.

ParameterTypeDefaultDescription
limitint10Number of notes (max 20)
offsetint0Skip this many notes
tagsstring-Filter by tags
date_fromstring-Start date, YYYY-MM-DD
date_tostring-End date, YYYY-MM-DD
standalone_onlyboolfalseWhen true, hides follow-up notes (notes attached to a parent note/task/event) and returns only standalone notes

get_tasks​

필터를 적용해 작업 목록을 가져와요.

ParameterTypeDefaultDescription
statusstring"todo"Filter: todo, done, or all
limitint30Number of tasks (max 100)
offsetint0Skip this many tasks
tagsstring-Filter by tags, comma-separated
date_fromstring-Start date, YYYY-MM-DD (filters by deadline; tasks without a deadline are excluded)
date_tostring-End date, YYYY-MM-DD (filters by deadline; tasks without a deadline are excluded)

반환값: id, title, description, status, priority, tags, deadline, reminder_at, reminders_at, completed_at, completed_by, source, created_at이 담긴 작업 목록. reminder_at은 하위 호환을 위해 reminders_at의 첫 항목과 같아요. 작업의 알림을 모두 보려면 reminders_at을 쓰세요.

get_events​

날짜 범위로 걸러서 캘린더 이벤트 목록을 가져와요.

ParameterTypeDefaultDescription
limitint30Number of events (max 100)
offsetint0Skip this many events
date_fromstring-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_tostring-Last day, YYYY-MM-DD, in your own time zone (inclusive)

반환값: id, title, description, status, start_at, end_at, location, is_all_day, tags, note_id, reminder_minutes, attendees, recurrence_rule, created_at이 담긴 이벤트 목록.

get_reports​

AI가 만든 리포트를 마크다운 전체 내용과 함께 가져와요.

ParameterTypeDefaultDescription
report_typestring"daily"Type: daily, weekly, monthly, or yearly
limitint5Number of reports (max 10)

반환값: id, type, period_start, period_end, content_md, created_at이 담긴 리포트 목록.

노트

월간 리포트는 길어요 (1,000단어를 훌쩍 넘는 경우가 많아요). AI 도구의 컨텍스트 창이 좁다면 limit=1을 쓰세요.

get_tags​

모든 태그를 고정된 것 먼저, 그다음 사용 횟수순으로 가져와요.

매개변수는 없어요. 최대 100개의 태그를 반환하고, 각각 tag, usage_count, is_pinned, is_manual이 들어 있어요.

get_profile​

계정 정보와 노트, 작업, 이벤트 개수를 가져와요.

매개변수는 없어요. email, display_name, locale, transcription_locale, timezone, subscription, mcp_mode, created_at, stats(노트/작업/이벤트 개수)를 반환해요.

노트, 작업, 이벤트를 한 번에 검색해요. 노트는 텍스트 검색과 의미 검색(AI 임베딩으로 뜻을 기준으로 결과 찾기)을 모두 지원해요.

ParameterTypeDefaultDescription
querystringrequiredSearch text (max 500 characters)
limitint20Max results per type (max 20)
semanticbooltrueEnable semantic search for notes

유형별로 묶어 notes[], tasks[], events[]로 결과를 반환해요. 각 결과에는 id, type, title, detail, created_at이 있어요.

더 빠른 텍스트 전용 검색을 하려면 semantic=false로 설정하세요.

get_change_log​

노트, 작업, 이벤트의 수정 기록을 최신순으로 봐요. AI가 한 후속 수정과 내가 직접 한 수동 수정이 모두 나와요.

ParameterTypeDefaultDescription
entitystringrequirednotes, tasks, or events
entity_idstringrequiredThe item's UUID
include_manualboolfalseAlso include your own manual edits, not just AI-made ones

반환값: id(취소할 때 entry_id로 사용), field_name, old_value, new_value, source(follow_up, smart_context, TellDone이 노트 사이에 반영한 이름 수정인 correction_sync, 또는 manual), origin_note_id, edited_at, reverted_at(취소되면 설정)이 담긴 변경 항목 목록.

process_note (Pro와 Ultra)​

전체 AI 파이프라인이에요. 앱에서 녹음하는 것과 똑같이 작동해요. 텍스트나 오디오를 보내면 TellDone이 변환하고 AI로 분석해서, 추출한 작업, 이벤트, 태그, 임베딩이 포함된 구조화된 노트를 만들어요.

이 도구는 비동기예요. audio_id와 함께 바로 응답하고 백그라운드에서 처리해요. 결과는 실시간 동기화로 연결된 기기에 도착하고, get_notes()로 조회해서 확인할 수도 있어요.

ParameterTypeDescription
textstringRequired. 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_base64stringBase64-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_formatstringm4a, ogg, wav, mp3, aac, or webm (default: m4a)
parent_task_idstringUUID of a task this is a follow-up to
parent_note_idstringUUID of a note this is a follow-up to
parent_event_idstringUUID of an event this is a follow-up to

항상 text를 보내세요. TellDone이 오디오를 변환하게 하려면 text를 빈 문자열("")로 두고 audio_base64를 보내세요. text가 비어 있지 않으면 TellDone은 그 내용을 받아쓰기로 쓰고 오디오는 변환하지 않아요. 부모 ID 세 개 중 최대 하나만 설정하세요.

반환값: {"audio_id": "...", "status": "processing", "mode": "text-only"}. 오디오를 보냈다면 "mode": "audio+stt".

노트

process_note에는 플랜의 할당량(하루 업로드, 월 노트 수, 최대 텍스트 길이)이 적용돼요. get_profile은 노트, 작업, 이벤트 개수만 보여주고 한도는 보여주지 않아요. 사용량은 앱의 설정 > 사용량에서 확인하세요.

create_note (Pro와 Ultra)​

일반 텍스트 노트를 바로 만들어요. AI 분석은 실행되지 않아서 작업이나 이벤트가 추출되지 않아요. TellDone이 작업과 이벤트를 찾게 하려면 process_note를 쓰세요.

ParameterTypeLimitDescription
titlestring200 charsRequired
summarystring1000 charsOptional. Short teaser (1-3 sentences). Used in your reports, so keep it short
transcriptstringplan-basedOptional. Long-form body shown in the note detail. Not included in reports. Limits: Pro 20,000 / Ultra 50,000 chars
typestring-Optional. task, idea, info (default), status, meeting, event, or reflection
tagsstring20 tagsComma-separated, optional
suppress_external_syncboolean-선택 사항, 기본값 false. 가져오거나 한꺼번에 만드는 항목에는 true로 설정하세요. 그러면 항목이 연결된 앱이나 자동화로 전송되지 않아요

create_task (Pro와 Ultra)​

새 작업을 만들어요. 작업은 연결된 Todoist, Notion, Microsoft To Do에도 만들어지고, 자동화는 task.created를 받아요. suppress_external_sync: true를 보내면 이렇게 되지 않아요.

ParameterTypeLimitDescription
titlestring200 charsRequired
descriptionstring2000 charsOptional
prioritystring-low, medium (default), or high
deadlinestring-YYYY-MM-DD, optional
reminder_atstring-ISO 8601 datetime (for example 2026-04-15T09:00:00Z), optional
tagsstring20 tagsComma-separated, optional
note_idstring-UUID to link task to a parent note, optional
suppress_external_syncboolean-선택 사항, 기본값 false. 가져오거나 한꺼번에 만드는 항목에는 true로 설정하세요. 그러면 항목이 연결된 앱이나 자동화로 전송되지 않아요

create_event (Pro와 Ultra)​

캘린더 이벤트를 만들어요. 이벤트는 연결된 Notion에도 만들어지고, 자동화는 calendar_event.created를 받아요. suppress_external_sync: true를 보내면 이렇게 되지 않아요.

ParameterTypeLimitDescription
titlestring200 charsRequired
start_atstring-ISO 8601 datetime, required
end_atstring-ISO 8601 datetime (default: start + 1 hour; for an all-day event, one day)
descriptionstring2000 charsOptional
locationstring200 charsOptional
is_all_daybool-Default: false
tagsstring20 tagsComma-separated, optional
reminder_minutesstring-Comma-separated minutes before event (for example 15,60), optional
attendeesstring-Comma-separated names or emails, optional
recurrence_rulestring-RRULE string (for example FREQ=WEEKLY;BYDAY=MO,WE,FR), optional. Rules more frequent than hourly, or that can never happen, are refused
note_idstring-UUID to link event to a parent note, optional
suppress_external_syncboolean-선택 사항, 기본값 false. 가져오거나 한꺼번에 만드는 항목에는 true로 설정하세요. 그러면 항목이 연결된 앱이나 자동화로 전송되지 않아요

update_note (Pro와 Ultra)​

기존 노트의 필드를 하나 이상 수정해요. 보낸 필드만 바뀌어요. 앱에서 노트를 수정할 때와 똑같이 작동해요. 제목, 요약, 태그, 유형은 Notion 페이지에 반영되고, 자동화는 note.updated를 받아요. 수정 내용은 변경 기록에 남아서 되돌릴 수 있어요. 받아쓰기를 바꾸면 저장되고 Notion에도 전송되지만, 변경 기록에는 남지 않아요.

ParameterTypeDescription
note_idstringRequired, the note's UUID
titlestringNew title (max 200 chars)
summarystringNew summary (max 1000 chars, pass a space " " to clear)
transcriptstringNew transcript (plan-based limit, pass a space " " to clear)
typestringtask, idea, info, status, meeting, event, or reflection
tagsstringComma-separated tags (replaces all existing tags, max 20)
prioritystringlow, medium, or high
statusstringactive or archived
주의

음성 파이프라인으로 만든 노트에서 transcript는 음성을 글로 변환한 원본이에요. 덮어쓰면 원래 말한 내용이 바뀌어요. 보존하려면 바꾸지 말고 받아쓰기 뒤에 덧붙이세요.

update_task (Pro와 Ultra)​

기존 작업의 필드를 하나 이상 수정해요. 보낸 필드만 바뀌어요. 앱에서 작업을 수정할 때와 똑같이 작동해요. 변경 내용은 Todoist, Notion, Microsoft To Do에 있는 사본에 반영되고, 자동화는 task.updated를 받아요. 수정 내용은 작업의 변경 기록에 남아서 되돌릴 수 있어요. status를 완료로 설정하면 complete_task와 똑같이 작업이 완료돼요. 마감일은 날짜만 보내거나 날짜와 시간을 함께 보낼 수 있어요(날짜만 사용돼요). 태그는 하나당 최대 50자예요.

ParameterTypeDescription
task_idstringRequired, the task's UUID
titlestringNew title
descriptionstringNew description (pass a space " " to clear)
prioritystringlow, medium, or high
deadlinestringYYYY-MM-DD. This tool can't clear a deadline; clear it in the app
statusstringtodo or done
tagsstringComma-separated tags (replaces all existing tags, max 20)
reminder_atstringISO 8601 datetime (pass a space to clear)

status를 done으로 설정하면 작업이 언제 어떻게 완료됐는지도 기록돼요.

complete_task (Pro와 Ultra)​

작업을 완료로 표시하는 바로가기예요.

ParameterTypeDescription
task_idstringRequired, the task's UUID

작업이 없거나 이미 완료됐다면 오류를 반환해요.

update_event (Pro와 Ultra)​

기존 이벤트의 필드를 하나 이상 수정해요. 보낸 필드만 바뀌어요. 앱에서 이벤트를 수정할 때와 똑같이 작동해요. 변경 내용은 Notion 페이지에 반영되고, 자동화는 calendar_event.updated를 받아요. 수정 내용은 변경 기록에 남아서 되돌릴 수 있어요.

ParameterTypeDescription
event_idstringRequired, the event's UUID
titlestringNew title
descriptionstringNew description (pass a space to clear)
start_atstringNew start time (ISO 8601)
end_atstringNew end time (ISO 8601)
locationstringNew location (pass a space to clear)
statusstringconfirmed, tentative, or cancelled
tagsstringComma-separated tags (replaces all existing tags, max 20)
is_all_daystring"true" or "false"
reminder_minutesstringComma-separated minutes before event (for example 15,60, pass a space to clear)
attendeesstringComma-separated names or emails (pass a space to clear)
recurrence_rulestringRRULE string (pass a space to clear)

delete_note (Pro와 Ultra)​

노트를 삭제해요. 노트만 삭제되고 그 작업과 이벤트는 그대로 남아요. 앱에서 삭제할 때와 똑같이 작동해서 자동화는 note.deleted를 받아요. Notion에 있는 노트 사본은 지워지지 않아요 (앱에서도 지우지 않아요).

ParameterTypeDescription
note_idstringRequired, the note's UUID

delete_task (Pro와 Ultra)​

작업을 삭제해요. 앱에서 삭제할 때와 똑같이 작동해서 Todoist, Notion, Microsoft To Do에 있는 사본도 삭제되고, 자동화는 task.deleted를 받아요. restore_entity로 되돌릴 수 있어요.

ParameterTypeDescription
task_idstringRequired, the task's UUID

delete_event (Pro와 Ultra)​

이벤트를 삭제해요. 앱에서 삭제할 때와 똑같이 작동해서 자동화는 calendar_event.deleted를 받아요. Notion에 있는 이벤트 페이지는 지워지지 않아요 (앱에서도 지우지 않아요).

ParameterTypeDescription
event_idstringRequired, the event's UUID

undo_change_log_entry (Pro와 Ultra)​

추적된 수정 하나를 취소해요. 후속 녹음에서 AI가 한 수정이든 내가 직접 한 수정이든, 필드를 그 수정 이전 값으로 되돌려요.

ParameterTypeDescription
entitystringRequired, notes, tasks, or events
entity_idstringRequired, the item's UUID
entry_idstringRequired, the change entry's id from get_change_log

반환값: {"entry_id", "entity_type", "entity_id", "field_name", "restored_value", "reverted_at"}. 같은 항목을 두 번 취소하면 이미 취소됐다는 오류를 반환해요.

restore_entity (Pro와 Ultra)​

삭제되거나 보관된 노트나 작업, 삭제되거나 취소된 이벤트를 되돌려요.

ParameterTypeDescription
entitystringRequired, notes, tasks, or events
entity_idstringRequired, the item's UUID

반환값: 복원된 항목(JSON).

create_tag (Pro와 Ultra)​

새 태그를 만들거나, 자동 추천된 기존 태그를 영구 태그로 바꿔요.

ParameterTypeDescription
tagstringRequired, 1-50 characters (stored lowercase)
categorystringOptional

set_tag_pinned (Pro와 Ultra)​

태그를 고정하거나 고정 해제해서 태그 목록 맨 위에 정렬해요.

ParameterTypeDescription
tagstringRequired
pinnedboolRequired

/ 문자가 들어간 태그는 고정할 수 없어요.

delete_tag (Pro와 Ultra)​

태그를 제거해요. restore_tag로 되돌릴 수 있어요.

ParameterTypeDescription
tagstringRequired

restore_tag (Pro와 Ultra)​

삭제된 태그를 되돌려요.

ParameterTypeDescription
tagstringRequired

입력 한도​

필드최대 길이사용되는 곳
title200자노트, 작업, 이벤트 만들기/수정
description2,000자작업, 이벤트 만들기/수정
summary1,000자 (엄격)노트 만들기/수정. 리포트에 쓰이니 짧게 유지하세요
transcript플랜별: Pro 20,000 / Ultra 50,000노트 만들기/수정. 긴 본문이며 리포트에는 들어가지 않아요
text플랜별: Pro 20,000 / Ultra 50,000 (오디오를 보내지 않을 때)process_note
location200자이벤트 만들기/수정
tags20개노트, 작업, 이벤트 만들기/수정
search query500자search
audio_base64오디오 약 7MB (요청 전체는 10MB로 제한)process_note

한도를 넘으면 도구가 "title too long (max 200 chars, got 250)" 같은 오류 메시지를 반환해요.

오류 처리​

대부분의 도구는 오류를 JSON으로 반환해요.

{"error": "description of what went wrong"}

플랜, 스코프, 입력 한도 오류는 같은 메시지의 도구 오류로 돌아와요.

흔한 오류는 이래요.

오류발생 시점
"This TellDone connection is read-only. Creating and editing needs the Pro or Ultra plan."읽기 전용 모드에서 쓰기 도구를 호출함 (Free와 Basic, 또는 읽기 전용으로 바꾼 Pro와 Ultra)
"Daily limit reached: the Free plan includes 100 TellDone requests a day..."Free 플랜이 하루 100회 요청을 모두 사용함
"Daily limit reached (N/M today)"오늘 AI 어시스턴트로 플랜이 허용하는 만큼 항목을 만듦 (process_note, create_note, create_task, create_event가 각각 포함)
"Notes limit reached (X/Y this month)"플랜의 월 노트 한도를 모두 사용함
"Invalid note_id format"ID로 UUID가 아닌 문자열을 전달함
"Note not found"ID가 없거나 다른 사용자의 것임
"Task not found or already completed"없거나 이미 완료된 작업에 complete_task를 호출함
"title too long (max 200 chars, got N)"입력 한도 초과
"Too many tags (max 20)"태그를 20개보다 많이 전달함

HTTP 수준 오류는 이래요.

코드의미
401잘못되었거나 해제되었거나 삭제된 토큰 (MCP를 비활성화하면 토큰이 삭제되고, 재생성하면 교체돼요)
429속도 제한 초과 (초당 5건, 최대 20건까지 버스트)

Free에서 하루 100회 요청 한도에 도달하면 HTTP 코드가 아니라 도구 오류 메시지로 알려주며, 계정에 저장된 시간대의 자정에 초기화돼요.

사용 예시​

모든 예시는 MCP JSON-RPC 프로토콜로 cURL을 써요. YOUR_TOKEN을 액세스 토큰으로 바꾸세요.

데이터 읽기​

# 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}}}'

데이터 쓰기 (Pro와 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>"}}}'

성공 응답은 이렇게 생겼어요.

{
"jsonrpc": "2.0",
"id": 11,
"result": {
"content": [{"type": "text", "text": "{\"id\":\"...\",\"title\":\"Review PR\",\"status\":\"todo\"}"}]
}
}
노트

쓰기와 수정 도구는 대부분 id, title, status 정도의 짧은 응답을 반환해요. 삭제 도구는 id와 deleted를 반환해요. 쓰기 후 전체 세부 정보(태그, 우선순위, 마감일 등)가 필요하면 get_tasks나 get_note 같은 읽기 호출을 이어서 하세요.

토큰 관리​

작업방법
토큰 보기iPhone 설정 > 연동 > AI 에이전트 (MCP) > 개발자용 (웹에서는 설정 > 연동 > AI agents (MCP)), 보기를 누르세요
토큰 복사토큰 옆의 복사를 누르세요
재생성토큰 재생성을 누르고 확인하세요. 이전 토큰은 즉시 작동을 멈춰요. OAuth 로그인으로 연결한 어시스턴트는 영향을 받지 않아요. 연결된 앱에서 연결을 해제하세요
모드 변경Pro와 Ultra: 읽기 전용 또는 읽기 및 쓰기를 고르세요. Free와 Basic은 항상 읽기 전용이에요
비활성화비활성화를 누르고 확인하세요 ("연결된 모든 AI 도구의 접근이 해제돼요."). 토큰이 삭제되고 모든 연결이 중지돼요. MCP를 다시 활성화하면 새 토큰이 발급되고, 로그인(OAuth)으로 연결한 앱은 다시 로그인하지 않아도 작동해요. 앱을 완전히 제거하려면 연결된 앱에서 연결 해제를 누르세요

AI 에이전트에게 물어볼 수 있는 것​

연결하고 나면 AI 도구에 이런 걸 물어보세요.

하루 돌아보기:

  • "오늘 뭐 했지?"
  • "이번 주 노트 보여줘"
  • "기한이 지난 작업이 뭐야?"

작업 관리:

  • "작업 만들어줘: 분기 보고서 검토, 높은 우선순위, 마감일은 금요일"
  • "Figma 작업을 완료로 표시해줘"
  • "지금 하고 있는 작업이 뭐야?"

검색과 분석:

  • "마케팅 전략에 관한 노트를 모두 찾아줘"
  • "다음 주에 무슨 이벤트가 있어?"
  • "지난주 일간 리포트를 요약해줘"

앞날 계획:

  • "이벤트 만들어줘: 내일 오전 10시 팀 스탠드업"
  • "이번 주 캘린더에 뭐가 있어?"
  • "내 상위 태그 보여줘. 어디에 시간을 가장 많이 쓰고 있지?"

어시스턴트는 노트, 작업, 이벤트, 리포트를 읽고 여러 도구의 정보를 합쳐 복잡한 질문에 답할 수 있어요. 읽기 및 쓰기를 켠 Pro와 Ultra에서는 이것들을 만들고, 수정하고, 삭제할 수도 있어요.

알아 두면 좋아요​

  • 연동과 자동화 - process_note는 녹음과 똑같이 작동해서 그 노트, 작업, 이벤트가 연결된 연동과 webhook 자동화로 가요. 다른 쓰기 도구로 만들거나 수정하거나 삭제한 항목은 앱에서와 똑같이 연결된 연동(이벤트와 노트 수정은 Notion으로만 가요)과 자동화로 가요. restore_entity로 작업을 복원하거나 undo_change_log_entry로 작업의 완료를 취소하면, 동기화되어 있던 연동에서도 그 작업이 다시 열려요.
  • AI 어시스턴트가 한 수정 - 항목의 변경 기록에 어시스턴트가 한 수정으로 표시돼요. 이런 수정은 TellDone 음성 인식을 학습시키는 데 쓰이지 않고, 노트의 다른 항목에도 복사되지 않아요. 어시스턴트를 통한 수정은 앱과 같은 한도(1분에 30번)를 함께 써요.
  • 의미 검색 - process_note나 create_note로 만든 노트에는 모두 임베딩이 생겨서, 잠시 뒤에 의미 검색에 나타나요.
  • 날짜 필터 - 노트는 날짜가 UTC 기준 날이에요. 이벤트는 내 현지 날짜이고, 범위와 겹치는 이벤트도 포함돼요. 작업은 마감일 기준으로 걸러요.

보안​

  • 사용자마다 고유한 384비트 액세스 토큰을 받아요
  • MCP를 비활성화하거나 토큰을 재생성하면 토큰이 즉시 해제돼요
  • 모든 요청은 내 계정 범위로 제한되므로 에이전트는 내 데이터에만 접근할 수 있어요
  • 연결은 속도 제한이 있는 HTTPS를 써요 (초당 5건, 최대 20건까지 버스트)
  • OAuth 연결은 PKCE와 일회용 인증 코드, 수명이 짧은 액세스 토큰을 써요. 앱에서 언제든 연결을 해제할 수 있어요

기술적으로 더 자세히 알고 싶다면(디스커버리 엔드포인트, 토큰 수명, 전체 OAuth 흐름) 오픈 소스 커넥터 참조 github.com/exp78/telldone-mcp를 보거나, https://api.telldone.app/.well-known/oauth-protected-resource를 직접 조회해 보세요.

개인정보와 데이터 흐름​

연결된 AI 도구는 TellDone을 호출할 때만 내 데이터를 받아요. 보통은 내가 무언가를 물어봤을 때예요. 승인한 권한 범위 안에서 그 호출의 응답만 받아요. 접근을 제한하려면 읽기 전용으로 바꾸거나, 연결된 앱에서 앱 연결을 해제하거나, 설정에서 액세스 토큰을 재생성하거나 비활성화하세요. 자세한 내용은 개인정보 처리방침을 보거나 support@telldone.app으로 문의하세요.

문제 해결​

증상원인 / 해결 방법
OAuth 동의 페이지에 "Wrong email or password"라고 나와요앱에 로그인할 때 쓰는 이메일과 비밀번호를 사용하거나, 같은 페이지에서 Apple로 로그인 / Google로 로그인을 선택하세요.
연결은 됐는데 AI가 아무것도 만들거나 수정하지 못해요플랜이 Free나 Basic(읽기 전용)이거나, 모드가 읽기 전용이거나, 연결에 쓰기 권한이 없어요. 업그레이드하기 전에 연결했다면 연결된 앱에서 앱 연결을 해제하고 다시 연결하세요. 설정에서 모드를 확인할 수 있어요.
도구에서 "Insufficient scope" 오류가 나요연결에 그 권한이 없어요. Free와 Basic에서는 쓰기 권한이 절대 주어지지 않아서 만들기와 수정은 Pro나 Ultra가 필요해요. 업그레이드하기 전에 연결했다면 연결된 앱에서 앱 연결을 해제하고 다시 연결하세요.
복사한 스니펫에 YOUR_TOKEN이라고 나와서 클라이언트가 연결되지 않아요토큰이 가려진 상태에서 복사했어요. 개발자용에서 보기를 누른 다음 스니펫을 다시 복사하세요.
도구가 전혀 나타나지 않아요계정에서 MCP가 활성화되지 않았어요 (설정 > 연동 > AI 에이전트 (MCP) > 활성화).
"Daily limit reached"이 메시지를 쓰는 한도가 두 가지예요. "Daily limit reached: the Free plan includes 100 TellDone requests a day"는 Free의 요청 한도예요. "Daily limit reached (N/M today)"는 오늘 AI 어시스턴트로 플랜이 허용하는 만큼 항목을 만들었다는 뜻이에요. process_note, create_note, create_task, create_event가 각각 포함되며 Pro와 Ultra도 마찬가지예요. 둘 다 계정에 저장된 시간대의 자정에 초기화돼요.
클라이언트에서 커넥터 목록 중에서만 고를 수 있는데 TellDone이 없어요TellDone은 아직 어떤 클라이언트의 커넥터 디렉터리에도 없어요. MCP URL로 사용자 지정 커넥터로 추가하거나 Bearer 토큰 방식을 쓰세요.

함께 보기​

  • Webhook 자동화 - 외부 서비스로 데이터를 자동으로 보내기
  • Todoist - 전용 양방향 작업 동기화
  • Notion - 전용 Notion 연동