MCP App Store
by KeenEthics

Overview

ToText brings the voice notes you record with the ToText iPhone app into ChatGPT. Ask about a meeting, a class, an interview or a voice memo, and ChatGPT answers from your own transcripts, summaries and tasks. What you can do - Search your titles, summaries, tasks and transcript passages. Search is built for Hebrew: it ignores niqqud and final letters and finds words that carry prefixes such as ו, ה, ב, ל, מ, ש and כ. - Open a recording's summary and tasks, or read its transcript with timestamps to see exactly when something was said. - Keep tasks up to date: add a task, reword it, mark tasks done or open, or delete one. - Rename a recording, change its tags, mark it as a favorite, or rewrite its summary. The original AI summary is kept. - Check your connection, the number of shared recordings and the last successful phone sync. Changes sync both ways. The ToText app automatically shares finished recordings while it is open and online. Edits made in ChatGPT return to your iPhone on the app's next successful sync while it is open and online. Use your saved text in Hebrew, English and other languages. This connection reads the transcripts, summaries and tasks already saved by the ToText iPhone app, in the languages they were saved in. It does not transcribe new audio in ChatGPT. Who it is for People who record meetings, classes, interviews and voice memos with ToText on iPhone and want to find what was said, follow up, and keep their tasks in order from ChatGPT or Codex. Before you start - You need the ToText app for iPhone. The connection starts in the app: tap Connect to ChatGPT, review what will be shared, and sign in with Apple. Then connect ToText in ChatGPT with the same Apple account. - Only text is shared: titles, dates, summaries, tasks, tags and transcripts. Audio is never stored in the cloud copy. - Your cloud copy is stored in the EU. You can request its deletion in the ToText app; the Privacy Policy explains deletion limits. Limitations - ToText works only with your own library. - ToText cannot delete recordings and does not send email or messages. Drafts, such as follow-up emails, stay in your conversation. - Audio uploads from ChatGPT are not available in this release. Record in the ToText iPhone app instead. - Search matches words, not translations. Search in the recording's language; transcript search may cover recent recordings only, and ToText reports limited coverage. - Changes made in ChatGPT reach your iPhone on the app's next successful sync while it is open and online.

Tools

create_task

ChatGPT
Adds 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.

delete_task

ChatGPT
Deletes 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

ChatGPT
Interactive 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

ChatGPT
Read 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

ChatGPT
Use 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

ChatGPT
Interactive 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

ChatGPT
Read 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

ChatGPT
Data 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

ChatGPT
Reads 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

ChatGPT
Interactive 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

ChatGPT
Filter 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

ChatGPT
Interactive 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

ChatGPT
Retrieve 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

ChatGPT
Data 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

ChatGPT
Background 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

ChatGPT
Data 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_recordings_data

ChatGPT
Find 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

ChatGPT
Marks 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

ChatGPT
Changes 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

ChatGPT
Replaces 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

ChatGPT
Replaces 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.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

Similar Apps