MCP App Store
by KeenEthics

Overview

Connect your TCFCAN account to access authorized practice records and diagnose personalized learning priorities based on your learning history. Review mistakes with ChatGPT anytime to understand grammar, translations, and even the French cultural context behind them. You can also create listening or reading practice calendars, subscribe to them directly in your calendar app, and review each day according to plan.

Tools

get_attempt_detail

ChatGPT
Read diagnostic detail for one connected-account attempt referenced by get_recent_attempts or get_wrong_book. Wrong-book references recheck current membership, publication and source permission. For listening/reading, sourceExcerpts contains French transcript/passage paragraphs with separate translations; answerOptions contains selected/correct labels, French originalText and translations. Null originalText and missing_option_text mean the option text is unavailable, not a complete answer. Only evidenceExcerpts marked verified_answer_evidence are stored answer evidence; no_stored_evidence does not mean source context is absent. Source context is limited to 12 whole paragraphs and 4000 characters including translations; check truncated.source before claiming completeness. Display occurredAtLocal with displayTime.timeZone; utc_fallback means the client did not provide a valid timezone. Rejects database IDs and does not return audio URLs or internal metadata.

get_learning_context

ChatGPT
Read the connected account shared goal and deterministic diagnostic facts. For an unspecified or all-module diagnosis, assessment, progress review, or weakness request, ask the user to choose listening, reading, writing, or speaking before calling this tool; never guess from recent activity. A single-module read displays its diagnosis card by default from the SAME facts, with no second render call or enable flag required. Set showDiagnosisCard=false only for planning or fact-only reads. Never copy facts into card arguments. Keep AI judgments and advice in conversation text only. periodComparisons uses one queriedAt for exact non-overlapping current/previous 7-day and 30-day UTC windows with sample counts. questionBankProgress gives published source-permitted, semantically deduplicated all-time totals and objective CEFR-level progress; because each level is deduplicated independently, do not add levels to infer the overall unique total. objectiveLevelPerformance gives separate last-30-day accuracy and duration samples. objectiveLevelEstimates deterministically returns listening/reading estimates: complete_set_average averages every complete practice-set and completed mock-exam 0-699 score and is medium confidence, or high when completed mock exams exceed five; synthetic_39 uses the most recent semantically deduplicated answers in the fixed A1:4, A2:6, B1:9, B2:10, C1:6, C2:4 distribution and is low confidence. Copy those results exactly. Only level_performance_required leaves the CEFR/NCLC judgment to ChatGPT from objectiveLevelPerformance, always at low confidence and in text, never in the card. subjectiveTaskPerformance directly aggregates last-30-day writing/speaking attempts and scores by Tâche; use it instead of averaging setPerformance rows. setPerformance returns up to 80 last-30-day set/task groups across the requested modules, most recently active first. setPerformanceCoverage counts matching groups for this account and optional module filter, not question-bank totals. If truncated, do not describe returned groups as complete or infer no practice from an absent module. subjectiveDimensionSummaries aggregates only recorded 0-4 writing/speaking dimensions and never treats missing scores as zero. scoreStandards reuses TCFCAN CEFR/NCLC bands. Current vocabulary, walkman, inventories and saved plans remain state/history, not evidence of mastery. Do not infer trends from unequal samples, add overlapping inventories or invent duration.

get_practice_question

ChatGPT
Read exactly one published, permitted exercise in listening, reading, writing or speaking, without personal attempts or scores. Optional topicId/task filters apply only to writing/speaking; level only to listening/reading. With no questionRef, selects the first matching question in stable ID order, not a personalized recommendation or an unseen question. No pagination or bulk IDs. Reuse the returned account-bound questionRef to explain the SAME question; references expire after 30 minutes and cannot be used as attemptRef. Default practice mode excludes correct answers, explanations and listening transcripts. Use explanation mode only when the user asks to reveal or discuss the solution. Writing materials and permitted existing writing/speaking guidance are included; restricted or absent guidance must not be invented as stored content. Listening audio is available on the practice page only; do not claim audio playback in this conversation. A null question means no available match. Does not submit answers, grade, save progress or modify data.

get_recent_attempts

ChatGPT
Read bounded recent TCFCAN attempts and deterministic full-window aggregates for the connected account. Display occurredAtLocal with displayTime.timeZone; utc_fallback means the client did not provide a valid timezone. The query window remains UTC. Does not diagnose, recommend, or read full answers and feedback.

get_topic_catalog

ChatGPT
Read writing or speaking topic categories and static deduplicated question counts per topic and Tache. No question text or examples are returned; call get_practice_question for one exercise when requested. Restricts inventory to published and permitted sources, including standalone speaking Tache1. Optional topicId and task narrow the catalog. Counts ignore personal answer history: they are NOT remaining questions or mastery. Multi-tag topic counts and task subtotals must not be added to infer a global total. Existing practice history filtering can make the practice page differ from this static inventory. Does not export the question bank or change data.

get_wrong_book

ChatGPT
Read the connected account current listening/reading wrong book, not a recent-days window. For a general overview use view=summary: whole-book totalCount, statistics.byLevel (A1-C2 plus unknown) and maxWrongCount, no question list. For a list use view=list, optional level and sort=recent (last actual wrong answer, null last) or most_wrong (recorded wrong count); omitted sort preserves question_id order. No quantity specified means one page of at most 20, no clarification required. Explicitly requested fewer questions may be displayed from that page; do not skip its undisplayed entries when continuing. totalCount/statistics always describe the full permitted book; matchedCount describes the level filter; returnedCount/coveredCount describe listed, NOT reviewed questions. Continue only on request, reusing cursor with the SAME level and sort. Do not fetch all pages automatically. Each exact question appears once; members include incorrect or guessed answers not removed, within published and permitted sources. wrongCount counts all retained isCorrect=false history for current members, including reset, practice, wrong-book and recorded mock-exam errors, excluding time-only or guessed-correct records. lastWrongAt is null if never recorded wrong. Counts are not error rates or proficiency; mock-exam correct answers are not fully represented. Use attemptRef with get_attempt_detail for content, not questionRef. For analysis with no quantity start with at most 5 details, disclose actual successful coverage and stop on RATE_LIMITED; never claim whole-book analysis. Pages are live, not a snapshot; history or membership changes can shift ordering and counts. No writes or bulk question content.

list_available_practice

ChatGPT
List available TCFCAN training entry points for the connected account. timeGuidance supplies exam-wide average seconds per listening/reading question, writing/speaking task allocations, and a small quality-review sample of listening audio playback times by level. These are planning references, not verified completion durations: reading speed, replay, answering and feedback time vary. A maxDurationMinutes budget does not filter entry points or promise they fit. Use it to suggest an approximate question count or task, and tell the user to select the questions/task on the practice page. Per-entry estimatedMinutes remains unknown. Does not recommend, read answers, or modify data.

render_study_plan_card

ChatGPT
Generate a listening/reading calendar with mode=calendar, scope, totalDays (15–180) or examDate (YYYY-MM-DD), strategy, timeZone, locale and restDayMode (NONE=no fixed weekly rest, SUNDAY=Sundays off, WEEKEND=Saturday and Sunday off). Confirm missing rest preferences. Workload and estimated study hours are returned outputs; do not ask users for daily time or question budgets. The server computes the schedule, ending the day before an exam date. At 60 days or fewer use REVERSE_HIGH_SCORE without explaining this implementation restriction. Never supply daily tasks. After user confirmation save returned parameters with save_study_plan mode=calendar. To reopen a saved calendar use mode=saved_calendar and recordRef; ownership is checked server-side. Without mode, retain the short text plan workflow. No completion tracking.

save_study_plan

ChatGPT
Save only after explicit user confirmation. For calendar use mode=calendar with final confirmed scope, locale, timeZone, startsOn, totalDays, strategy and restDayMode from the preview; never transcribe daily tasks or workload estimates. If parameters change, preview again before saving. The server validates and stores parameters, regenerating with the same scheduler. Cross-day previews must be renewed. After successful calendar saving, show the exact subscription.httpsUrl as the primary Calendar subscription address in a fenced text block, and the exact subscription.downloadUrl as a Download calendar (ICS) Markdown link. Do not display Webcal. Use neutral instructions: subscriptions refresh later changes; downloads contain the current plan and do not update. For ICS, explain creating a dedicated TCFCAN calendar before importing and selecting that calendar as the target; it can later be deleted as a whole. Never promise automatic creation of a dedicated calendar or tell users to delete Work/Personal calendars. Never invent or alter URLs or claim the calendar was already added. If an address is missing, say so without repeating a save. Without mode retain today/next7Days/next30Days text plans. Never automatically retry an uncertain write; check get_learning_context mode=planning for the latest calendar first.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

Similar Apps