- Brand
- AlgoApp
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
Create and edit AlgoApp flashcards directly in ChatGPT. Review draft cards in an editable preview and save the cards you choose. Attach original audio, organize decks in folders, archive or remove decks, manage study groups and sharing, view account details, read app release notes, and contact support. Audio uses link-based playback over HTTPS with long SHA-256 file identifiers. Anyone with an audio link can play the recording without a separate sign-in.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- AlgoApp
- Access
- Account required
- First tracked
- 2026-11-13
- Tool count
- 27
- Market
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Not discoverable in ChatGPT yet
ChatGPT now suggests Plugins on its own when they match a user's request, but not every Plugin is being surfaced yet.We haven’t seen AlgoApp suggested yet. Sign up and we’ll track it, and your Discoverability Score will appear here once ChatGPT starts surfacing it.
What discovery looks like

Get alerts for AlgoApp
Get updates when AlgoApp’s Discoverability Score or category rank changes.
Competitive lineup
27 tools agents can invoke
Save selected cards in a deck. ## Return Value Returns saved, deck_id, knol_count (verified cards), knol_ids (all attempted IDs, in input order), and per-card results. Only saved=true confirms every card was read back with the requested values. Keep knol_ids for subsequent update_cards calls. If saved=false, inspect those IDs with list_cards before retrying to avoid duplicates. ## Parameters - deck_id: The hex deck ID to add cards into (from create_deck or list_decks). - knols: Array of objects with a values map (keys MUST match deck field names). ## Usage Call this when the user has asked to save/create these cards, including approval in the draft widget or chat. An explicit request to create and save cards can be completed directly through MCP; the widget is optional. Pass the deck_id from create_deck (or list_decks) and only the requested knols. Include values for each field except TTS fields with a source. This adds NEW cards (maximum 100 per call); use update_cards for existing cards to preserve IDs and review history. Retrying can create duplicates. After a successful call, confirm cards were saved and include the https://web.algoapp.ai link. For original audio, call upload_audio first and place its field_value string verbatim in values under a deck field with type "audio". Example values: {"Audio":"<field_value from upload_audio>","Spanish":"¿Dónde está la estación?","Meaning":"Where is the station?","Notes":"Dónde asks about location."}. Use create_deck/update_deck to configure these fields and custom formatting. Bare audio IDs, URLs, and base64 data are not audio field values. Refer to the create_deck tool description for examples of deck configs. Example input: { "deck_id": "<HEX_DECK_ID>", "knols": [ { "values": { "Text": "hola", "Translation": "hello" } } ] }
save_cards
Share an existing AlgoApp deck into a study group the authenticated user belongs to. A new share can send push notifications to existing group members that cannot be recalled.
Invite one or more members to an AlgoApp study group by email. Sends invitation emails that cannot be recalled; repeating a request may resend them.
Cancel the authenticated user's active renewable subscription. Stripe subscriptions are scheduled to stop auto-renewing at the end of the current billing period. Apple subscriptions cannot be canceled here, so the tool returns Apple management instructions instead.
Prepare unsaved draft cards for an existing AlgoApp deck and open the editable card table widget. Does not save cards or modify the deck. Never call this immediately after create_deck in the same request, because create_deck already returns draft cards and opens the widget. Pass the deck_id, the full deck config including config.fields, and the draft card values. Include values for every field except TTS fields with a source, and populate translation fields too. For original audio, call upload_audio first and copy its field_value into a field configured as type audio. When the user explicitly asks to save/create the cards, save_cards can persist them directly through MCP without widget interaction. Otherwise show drafts in the widget or chat for approval before saving. Use update_cards for changes to existing saved cards. Do not call this when the user asks not to create cards.
Create a new AlgoApp deck and draft cards. Use this when the user asks to create a new deck in AlgoApp. For draft cards in an existing deck, use create_cards. This immediately saves an empty private deck; card values remain unsaved drafts until save_cards is called with the user's authorization. Retrying creates another deck. ## Return Value Returns structured data containing deck_id and card_count, and opens the editable draft cards widget. ## Usage In a single call, provide name, full config, and knols to draft. This tool creates the deck and opens the draft cards widget. Do not call create_cards after this in the same request; this tool already provides the draft cards for the widget. When the widget is available, keep chat output brief and let the user review and save selected cards there. When the user explicitly requests creation AND saving, complete save_cards directly using the returned deck_id; no widget interaction is required. Otherwise show the returned drafts in the widget or chat for approval before saving. ## Parameters Refer to input schema for formal definition. At a higher level, a deck has a name and a config, which specifies the "fields" of the deck. New decks default to FSRS when config.settings.reviewMode is omitted or null. To request Classic/grades, set config.settings.reviewMode to {"name":"srs"}. Other explicit choices include {"name":"fsrs"}, {"name":"shuffled"}, and {"name":"in_created_order","skip":0}. An explicit mode and its options, such as FSRS desiredRetention, are preserved. Each field has at least these attributes: - name - type - sides -- This MUST ALWAYS be an array with 2 elements, containing 0's and 1's only. It indicates whether the field shows on the front side and/or the back side. A "1" in the first element means "show on the front side". A "1" in the second element means "show on the back side". NOTE: a deck must *always* have at least one field that shows on the front (e.g. via { ..., "sides": [1, 1] }) and one that shows on the back but not on the front (e.g. { ..., "sides": [0, 1] }). In general, a field that is visible on the front should *also* be visible on the back (i.e. use "sides": [1, 1] rather than "sides": [1, 0]). knols is required. Include values for every field except TTS fields with a source. A TTS field without a source needs a text value. Populate translation fields too so the user can review them before saving. ## Example Deck Configs ### Original Spanish audio with subtitles, meanings, and notes First call upload_audio with the original recording bytes and its MIME type. Use the returned field_value verbatim as knols[].values.Audio. It is native audio markup, not a URL or a TTS prompt. Example config (supports custom CSS and front/back templates): { "fields": [ {"name":"Audio","type":"audio","sides":[1,1]}, {"name":"Spanish","type":"text","sides":[1,1],"attributes":{"lang":"es-ES","fontSizePx":24}}, {"name":"Meaning","type":"text","sides":[0,1],"attributes":{"lang":"en-US"}}, {"name":"Notes","type":"richtext","sides":[0,1]} ], "templates": [ "<div class=\"listening\">{{Audio}}<div class=\"subtitle\">{{Spanish}}</div></div>", "{{FrontSide}}<hr /><div class=\"meaning\">{{Meaning}}</div><div class=\"notes\">{{Notes}}</div>" ], "css": ".subtitle { font-size: 24px; margin-top: 1em; } .notes { font-size: 16px; opacity: .85; }" } Example card values: {"Audio":"<field_value from upload_audio>","Spanish":"¿Dónde está la estación?","Meaning":"Where is the station?","Notes":"Dónde asks about location; está is a form of estar."}. After create_deck, call save_cards with the returned deck_id to persist authorized cards; it returns their IDs for future update_cards calls. ### Language (Japanese) Example Japanese language deck config, with Japanese text on the front with the default furigana setting of "hint" to show the furigana when a user long-presses the flip button, English on the back (auto-translated from the Japanese), and also a TTS field that automatically picks up the contents of the Japanese field from the front and reads it aloud: { "fields": [ { "name": "Japanese", "type": "japanese", "sides": [ 1, 1 ], "attributes": { "furiganaMode": "hint" } }, { "name": "Meaning", "type": "text", "sides": [ 0, 1 ], "attributes": { "lang": "en-US" }, "source": { "type": "translation", "source": { "type": "ref", "name": "Japanese" } } }, { "name": "Japanese-tts", "type": "tts", "sides": [ 1, 1 ], "source": { "type": "ref", "name": "Japanese" } } ], "base": "japanese", "name": "Japanese", "settings": { "reviewMode": { "name": "fsrs" } } } ### Language (General) Example language deck config (Spanish front with TTS, English back auto-translated from that Spanish field (which is named "Text")): { "fields": [ { "name": "Text", "type": "tts", "sides": [ 1, 1 ], "attributes": { "lang": "es-ES" } }, { "name": "Translation", "type": "text", "sides": [ 0, 1 ], "attributes": { "lang": "en-US" }, "source": { "type": "translation", "source": { "type": "ref", "name": "Text" } } } ], "base": "language", "name": "Language" }
Create a persistent empty AlgoApp folder, including a nested folder, without creating or changing any decks or cards. Uses folder_path (up to 512 characters excluding a shared-folder prefix) with :: between levels. Existing folders are returned with created=false and their settings preserved. Returns folder_path, created, and verified; success is reported only after the folder can be read back. Use list_folders first to find existing folders. A path under an existing study-group folder creates shared structure and requires that folder's organization permission; it does not invite members or change permissions. Creating a shared root or sharing a personal folder is not supported here. Archive and study-plan names are reserved. Personal example: {"folder_path":"Languages::Japanese"}. Shared subfolder example: append ::Practice to an exact shared folder_path from list_folders. Use move_decks_to_folder afterward to file existing decks.
Create a new AlgoApp study group for the authenticated user. Providing invite_emails sends invitation emails that cannot be recalled.
Create an AlgoApp support ticket for the authenticated user when they explicitly ask to contact support. Sends the request and account details to support staff and triggers a confirmation email to the account address.
Remove one or more selected decks from the authenticated user's library by exact deck ID. Use list_decks to identify the user's selection; include_archived=true also finds archived decks. Requires an explicit mode and supports up to 100 unique IDs. mode="archive" hides decks from the active library, preserving cards, review history, folder assignments, and sharing. They can be restored in AlgoApp's Archive. mode="permanent" uses AlgoApp's permanent library removal: removes this user's ownership/subscription, folder tags, and incoming direct shares, and dismisses group decks for this user. For owned decks it also removes study-group deck shares and may remove emptied legacy folder shares, affecting group members' access. This is not an archive and cannot be undone through Archive. It does not promise physical erasure of cards, review records, or other users' copies. Use permanent only when the user requests permanent removal. Returns removed_deck_ids containing only IDs whose removal was verified, and one result per requested ID. removed=true means every requested deck reached the requested state. On partial or uncertain results, inspect the errors and list_decks with include_archived=true before retrying. Archive one: {"deck_ids":["0123456789abcdef0123456789abcdef"],"mode":"archive"}. Permanently remove several: {"deck_ids":["0123456789abcdef0123456789abcdef","fedcba9876543210fedcba9876543210"],"mode":"permanent"}.
Get account profile details for the authenticated user, including email, name, verification status, and active products.
Get recent AlgoApp release notes for the current or requested platform.
Get full details for a study group, including members, pending invites, and shared decks.
Get the authenticated user's current subscription status, including whether access is active, the billing provider (apple or stripe) when available from the API, and the current expiration time if one exists.
Read saved AlgoApp cards, including their stable knol_id, field values, and creation/modification dates. Use list_decks to find deck_id and field configuration. Use the returned knol_id in update_cards; do not recreate an existing card with save_cards. Audio values use <audio id="..." type="audio/..." /> markup and refer to persistent blobs. Omit knol_ids to list a deck in ID order, or provide up to 100 exact IDs to inspect specific cards (including uncertain writes). Returns cards, total_count for the selected set, and next_offset; pass next_offset as offset until it is null. Default limit is 50, maximum 100. Pages are not a snapshot when other clients edit the deck. Example: {"deck_id":"<DECK_ID>","limit":50}. Targeted example: {"deck_id":"<DECK_ID>","knol_ids":["<KNOL_ID>"]}.
List available decks with their configuration and folder tags. Archived decks are excluded by default; use {"include_archived":true} to also find archived deck IDs for permanent removal. Returns JSON like { decks: [ { deck_id: "<HEX_DECK_ID>", name: "<DECK_NAME>", tags: ["Languages::Japanese"], config: { ... } }, ... ] }. Use deck_id with delete_decks to archive or permanently remove selected decks, or move_decks_to_folder to organize them without changing cards or review history. Use list_folders for destinations, list_cards to find existing card IDs, update_cards to patch saved cards, create_cards to draft new cards, or save_cards to save new cards. For original audio use upload_audio and a config.fields entry with type audio.
List the authenticated user's synced personal and study-group folders, including empty folders and parent paths. Each entry has folder_path, shared, can_organize, and deck_ids for decks filed directly in that folder (not its descendants). Deck IDs can include archived decks; use list_decks with include_archived=true to inspect them. Archive and study-plan system folders are excluded. Empty folders created only locally in an older client cannot be listed until synced. Use the exact folder_path with create_folder or move_decks_to_folder. Nested paths use ::, for example Languages::Japanese. Preserve __group_folder_ prefixes for shared folders: they identify the correct group's folder even when names overlap. can_organize=false means shared structure is read-only for this account. Example input: {}.
List the authenticated user's study groups.
Move one or up to 100 existing decks by ID into an existing folder. Use list_decks for deck IDs and list_folders for the exact folder_path; create_folder can create a destination first. Replaces previous personal folder assignments while retaining deck IDs, cards, card IDs, card values, review history, and deck archive markers. This does not copy or recreate decks. For a shared destination, requires organization permission. Contributing an owned deck makes it available to that study group's members under the folder's existing permissions. Existing shared decks can move within that shared folder; moving them out or across shared roots requires removing them from their shared folder first. A deck received through a direct share or subscription can be filed personally but cannot be contributed to a group unless owned. Returns moved_deck_ids containing only verified moves and a result for every selected deck. moved=true means all requested moves were verified. A batch can partially succeed; inspect results and list_folders before retrying. One deck: {"deck_ids":["0123456789abcdef0123456789abcdef"],"folder_path":"Languages::Japanese"}. Several decks: {"deck_ids":["0123456789abcdef0123456789abcdef","fedcba9876543210fedcba9876543210"],"folder_path":"Exam prep"}.
Remove a deck share from an AlgoApp study group. This only removes the group share; it does not delete the deck itself.
Remove a member from an AlgoApp study group. Accepts either member_user_id or member_email.
Rename an existing AlgoApp study group.
Share an AlgoApp deck with one or more email addresses. Sends sharing emails that cannot be recalled; repeating a request may resend them.
Update the authenticated user's AlgoApp account display name.
Update existing AlgoApp cards by stable knol_id, including adding or replacing original audio. Each values object is a PATCH: provide only the fields to change. The server reads the current card, merges those fields, and issues UPDATE operations with the same IDs. Unspecified field values, creation dates, tags, ink notes, and review history are preserved. An empty string explicitly clears a field. All targets and values are checked before submitting the batch (maximum 100 cards). Use list_cards to find IDs and current values. Optional expected_modified_at, copied from list_cards, rejects an already-stale edit before submission; the upstream API does not support atomic compare-and-swap, so avoid overlapping edits from other clients. After submission the server reads every card back. Only updated=true confirms all changes; results gives each ID's verification outcome. If verification fails, inspect those IDs before retrying. For audio, call upload_audio first and copy its field_value verbatim into a field configured as type "audio". Add new fields with update_deck before assigning them. Example: {"deck_id":"<DECK_ID>","knols":[{"knol_id":"<KNOL_ID>","values":{"Audio":"<field_value from upload_audio>","Notes":"Listen for the linking between words."}}]}. This keeps the Spanish subtitles, English meaning, and every other field. To update only a subtitle: {"deck_id":"<DECK_ID>","knols":[{"knol_id":"<KNOL_ID>","values":{"Spanish":"¿Dónde está la estación?"}}]}. Use save_cards only for NEW cards.
Update an existing AlgoApp deck's name and full config when the user requests a change. Replaces the previous name and config while preserving the deck's description, creation date, and sharing status. ## Return Value Returns JSON like { deck_id: "<HEX_ENCODED_DECK_ID>", config: { ... } } only after reading back the requested name and config. If verification fails, read the deck before retrying; the write may already have applied. ## Parameters - deck_id: The hex deck ID to update (from create_deck or list_decks). - name: Deck name to keep (or update). - config: The full replacement deck config. ## Usage Use this after create_deck if the user wants adjustments to the deck structure. Provide the full config you want saved. Refer to the create_deck tool description for examples of deck configs. Example input: { "deck_id": "<HEX_DECK_ID>", "name": "My Deck", "config": { "fields": [ { "name": "Front", "type": "text", "sides": [1, 1] }, { "name": "Back", "type": "text", "sides": [0, 1] } ] } }
Upload an original audio file to persistent AlgoApp blob storage. Send the file's bytes as standard base64 in data_base64 and its actual MIME type in mime_type (for example audio/mpeg for MP3, audio/mp4 for M4A, or audio/wav). Example input: {"data_base64":"<base64-encoded original file bytes>","mime_type":"audio/mpeg"}. Audio is transferred over HTTPS and identified by the SHA-256 hash of its original bytes. Playback uses link-based access: anyone with the exact audio URL can play or download it without a separate sign-in. Upload recordings only when the user requests it, and respect their intended audience when sharing audio links or cards. For audio-deletion requests, direct the user to AlgoApp Support. Retrying identical bytes may replace the stored MIME metadata. Maximum decoded size: 10 MiB. Supports MP3, M4A/MP4 audio, WAV, Ogg/Opus, WebM audio, AAC, FLAC, and AIFF. Does not transcribe, generate speech, or transcode the recording. Local file paths and URLs are not file bytes; read and base64-encode the file in the calling agent's environment. Returns uploaded, audio_id (a persistent SHA-256 blob ID), mime_type, size_bytes, audio_url, and field_value. Success means storage accepted the bytes and its download Content-Type was checked. Retrying identical bytes reuses the same ID. Copy field_value verbatim into a card's values map under a field whose deck config has type "audio". Example result: {"uploaded":true,"audio_id":"<SHA256>","mime_type":"audio/mpeg","field_value":"<audio id=\"<SHA256>\" type=\"audio/mpeg\" />",...}. Example save_cards input: {"deck_id":"<DECK_ID>","knols":[{"values":{"Audio":"<field_value from upload_audio>","Spanish":"¿Dónde está la estación?","Meaning":"Where is the station?","Notes":"Dónde asks about location."}}]}. Define all four fields in create_deck or update_deck first. Use update_cards with the same field_value to add or replace audio on an existing card. Uploading alone does not change a card.
AlgoApp ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve AlgoApp's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.


