create_task
ChatGPTAdds one new task (action item) to a recording in the user's ToText library. Use when the user asks to add a to-do or action item to a specific recording. Every task belongs to a recording; get the recording id from search_recordings_data, list_recordings_data or get_recording_data first. The task is added open (not done) at the end of the list and appears in the ToText app on the next sync. Returns the new task with its id.
create_upload_link
ChatGPTAudio uploads from ChatGPT are not available in this release. Record in the ToText iPhone app and open it to sync; shared recordings can already be searched, read and edited. Only use this tool if get_account_status explicitly reports uploadsAvailable: true; otherwise do not request a link or promise transcription. When uploads are enabled, creates a one-time link to the ToText upload page for an audio file from the user's own device (m4a, mp3, wav, flac, ogg, webm, mp4, amr, aac; up to 600 MB). The link works once and is valid for 10 minutes. The link is limited to the account's available minutes, with at most 3 uploads in flight. Creating a link does not start or guarantee transcription. Use only when the user wants to upload an audio file they have. Never use it to fetch a URL, a web page or a file from the internet. If a link was actually created, show it to the user; get_upload_status reports its stored status.
delete_task
ChatGPTDeletes one task from the user's ToText library. The task is also removed from the ToText app on the next sync. Use only when the user clearly asks to delete or remove a task; to mark it finished use set_task_status instead. Deletes exactly one task per call; never delete in bulk without the user naming each task.
fetch
ChatGPTInteractive display only: open a search result card when explicitly requested. For background verification use fetch_recording_data. Open a search result as a recording card. A recording id returns metadata, summary and tasks; a passage id returns about 90 seconds around the moment, with times and neutral speaker labels. For background library comparison use review_library and verify candidate words/times with get_transcript, which has no card. For the full transcript use get_transcript.
fetch_recording_data
ChatGPTRead a search result ID, including a timestamped passage, for background verification. Returns data only, without a ToText card. Same filters, ordering, limits, coverage and cursor semantics as fetch. For an explicitly requested interactive display use fetch instead. Read every nextCursor when one is supplied.
get_account_status
ChatGPTUse this when the user asks about their ToText connection or limits: whether the iPhone library is shared for this signed-in identity, whether this is the reviewer demo rather than their personal library, their plan, the reported transcription minute balance, when the phone last synced, and how many recordings are shared. Requires host authorization; connected describes phone sharing, not overall OAuth health. It never shows prices or promotes upgrades.
get_recording
ChatGPTInteractive display only: open a recording card when explicitly requested. For background reading use get_recording_data. Read complete saved text with read_recording_text. Display one recording card with metadata, summary and task ids, not transcript. For background library comparisons use review_library and get_transcript without cards. For a follow-up email, read get_transcript from the start and follow nextCursor through all pages; show supported decisions and commitments with exact original-language quotes and times before drafting. If transcript coverage is unavailable or incomplete, say so. Draft only; never send.
get_recording_data
ChatGPTRead recording metadata, saved summary and task IDs for analysis. Summary and task text may be bounded; use read_recording_text for the complete saved text. Returns data only, without a ToText card. Same filters, ordering, limits, coverage and cursor semantics as get_recording. For an explicitly requested interactive display use get_recording instead. Read every nextCursor when one is supplied.
get_transcript
ChatGPTData only, no ToText widget. For background summary reading use get_recording_data rather than a display card. Use this when the exact words of one of the user's ToText voice notes matter: quotes, details the summary leaves out, or who said what. Returns the transcript in pages of about 8,000 characters, with segment times and neutral speaker labels (Speaker 1, Speaker 2). Copy quotations in the original language with their segment start time; add a labelled translation beside each quote when the user's language differs. Pass nextCursor for the next page, or startSec to jump to a moment (for example a passage time from search). Read remaining pages before claiming a complete meeting recap. Prefer get_recording_data for background reading when the summary is enough; get_recording is for an explicitly requested card.
get_upload_status
ChatGPTReads the stored status of an upload link created earlier: waiting_for_file, uploaded, transcribing, done (with the recording id and title), failed (with the reason) or expired. While audio uploads are disabled, unfinished statuses are historical snapshots, not a promise that a link can be used or transcription will finish. Direct the user to record in the ToText iPhone app and sync instead; do not create a new upload link. Leave out uploadId to check the most recent upload. When done, use get_recording_data with the returned recordingId to read the summary and tasks without a card.
list_recordings
ChatGPTInteractive display only: show a recording list when explicitly requested. For background filtering use list_recordings_data; for whole-library comparisons use review_library. Show the user an interactive ToText recording list by date, tag, favorite, open tasks or language, for example "show my recordings this week". Every call displays a card. Not for background library analysis: use review_library instead. Newest first, up to 25 per page with a cursor. Each item includes title, date, length, tags, open tasks and a summary preview. Use search for content and get_recording for details.
list_recordings_data
ChatGPTFilter recording metadata by dates, tags or favorites for background retrieval. For whole-library summary comparison prefer review_library. Returns data only, without a ToText card. Same filters, ordering, limits, coverage and cursor semantics as list_recordings. For an explicitly requested interactive display use list_recordings instead. Read every nextCursor when one is supplied.
list_tasks
ChatGPTInteractive display only: show a task board when explicitly requested. For analysis, filters and edit verification use list_tasks_data instead. Show the user's to-dos and action items from their ToText voice notes in their saved languages, across all recordings or one recording. Filters: open or done, recording, date range of the RECORDING, not a task due date. No task due date is inferred. Newest recordings first, tasks in their order within a recording, up to 50 per page with a cursor. Returns task ids for set_task_status, update_task and delete_task.
list_tasks_data
ChatGPTRetrieve and filter task IDs and text for analysis, checking state or preparing a requested edit. Text may be bounded; use read_recording_text with recordingId and taskId for full task text. Returns data only, without a ToText card. Same filters, ordering, limits, coverage and cursor semantics as list_tasks. For an explicitly requested interactive display use list_tasks instead. Read every nextCursor when one is supplied.
read_recording_text
ChatGPTData only: read the complete saved summary of one recording, or full task text when taskId is supplied. No translation or audio access. Returns bounded pages; follow every nextCursor. A changed source invalidates continuation: restart instead of joining different revisions. Does not edit anything or display a card.
review_library
ChatGPTBackground library-wide comparison or shortlisting, without recording cards. Up to 100 metadata/summary previews per byte-bounded page. Follow every nextCursor before library-wide conclusions. Previews are not full transcripts or exact moment evidence; verify candidate IDs with get_transcript. Use list_recordings only when the user wants a visible list.
scan_recordings_data
ChatGPTData only, no ToText card. Use for explicit full-library literal search/coverage or continuing after a partial ranked search. Start a separate scan, then follow every nextCursor with exactly the same query. Records are newest-first then ID, NOT globally ranked top ten. Results count matching recordings; each has the first metadata excerpt and up to two earliest matching transcript segments at least 60 seconds apart, not every occurrence. Coverage accumulates through the scan, including zero-hit pages. Do not call a negative result complete until traversalFinished AND completeCoverage are true. Pages observe each source live, not an atomic transcript snapshot; current-source edits or catalogue changes invalidate continuation. Deduplicate retries by scanId/pageId/matchId. Existing search_recordings_data remains ranked top-ten. Verify quotations with get_transcript.
search
ChatGPTInteractive display only: use when the user explicitly wants a visible search-results card. For analysis or repeated lookups use search_recordings_data instead. Find words in the user's own saved ToText titles, tags, summaries, tasks and transcripts, in their original languages. Hebrew prefixes, finals and niqqud are handled; unaccented Latin queries can match canonical accented forms. Explicit accents remain significant. This is literal word search, not translation or semantic search. Returns ranked top 10 hits, at most two passages per recording, not all matching passages. Quotes do not require an exact phrase. The language field is phone metadata, not verified speech detection. Use fetch for an explicitly requested result card; get_transcript verifies original words and times. Use list_recordings only for an explicitly requested browse card.
search_recordings_data
ChatGPTFind words in titles, tags, summaries, tasks and transcripts for background analysis. Literal word search, not translation or exact-phrase search; at most 10 results. Honor any partial-coverage note. Returns data only, without a ToText card. Same filters, ordering, limits, coverage and cursor semantics as search. For an explicitly requested interactive display use search instead. Read every nextCursor when one is supplied. Search is ranked top hits with no search cursor, not exhaustive matches; request includeCoverage for scan scope.
set_task_status
ChatGPTMarks 1 to 20 tasks in the user's ToText library as done (done: true) or open again (done: false). Use when the user says tasks are finished, or wants to reopen them. Get task ids from list_tasks_data or get_recording_data; verify changes without display cards. If any id is not found, nothing is changed. Returns the tasks with their new status.
update_recording
ChatGPTChanges the title, tags or favorite flag of one recording in the user's ToText library. Give only the fields to change. Tags: use tags to replace the whole list, or addTags / removeTags to change some. Each tag is at most 40 characters, and a recording has at most 20 tags. To change the summary use update_summary. The change appears in the ToText app on the next sync. Returns the updated recording.
update_summary
ChatGPTReplaces the summary of one recording in the user's ToText library with new text. Use when the user asks to rewrite, shorten, correct or extend a summary. Send the complete new summary, not a change description, based on the full saved summary from read_recording_text (follow nextCursor). The first AI-generated summary is kept as the original. The change appears in the ToText app on the next sync.
update_task
ChatGPTReplaces the text of one existing task in the user's ToText library. Use when the user asks to reword, correct or clarify a task. To mark a task done or open use set_task_status; to remove it use delete_task. Returns the updated task.