MindDory Brain
Server Details
Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- Hyneq00/minddory-mcp
- GitHub Stars
- 0
- Server Listing
- MindDory MCP Server
Available Tools
13 toolscapture_grammar_mistakeCapture grammar mistakeAInspect
Log a grammar mistake the user just made in the target language, creating a grammar point in their Minddory deck. Use it proactively whenever the user writes a target-language sentence with a clear, correctable error (wrong tense, agreement, word_choice, word_order, missing or wrong article, preposition, gender, conjugation, spelling, pluralization). By connecting Minddory the user opted IN to automatic capture, so log it as you go - do not ask permission first or turn it into a yes/no question. The user connected Minddory to catch and review these patterns; you do not need to announce each log. Pass the original text + correction + error_type. Multiple mistakes in one message = multiple calls.
VARIANT RULE: Always pass the user's full BCP-47 variant in the lang field (e.g. en-gb, not en) - get it from get_system_instructions on first turn. Before logging, check that the "error" is not actually a valid regional variant form (US past-simple vs UK present-perfect with "just/already", US "in the hospital" vs UK "in hospital", US "color" vs UK "colour", BR gerund vs PT "a + infinitive", etc.). When the variant is unspecified (base ISO only), treat ALL regional forms as valid. Better to skip a borderline call than to mark a valid variant form as wrong.
error_type must be one of: tense, agreement, word_choice, word_order, article, preposition, spelling, pluralization, conjugation, gender, other. Feeds the user's Grammar Patterns view at app.minddory.com/grammar.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | ISO target language code. | |
| user_text | Yes | The exact erroneous sentence/phrase the user wrote. | |
| correction | Yes | The corrected sentence/phrase. | |
| error_type | No | One of: tense, agreement, word_choice, word_order, article, preposition, spelling, pluralization, conjugation, gender, other. | |
| explanation | No | Short rationale (1-2 sentences). Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only indicating readOnlyHint=false and destructiveHint=false, the description adds rich behavioral context: proactive logging without user confirmation, respecting opt-in consent, passing the full BCP-47 variant, and handling regional variation nuances. It also explains the downstream impact on the Grammar Patterns view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though substantial, every sentence earns its place, covering purpose, proactive use, regional variant rules, error_type list, and integration output. The description is front-loaded with the core action and then details edge cases, making it well-structured and appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters and no output schema, the description fully addresses context: what the tool does, when to invoke it, how to handle ambiguous regional variants, which error_type to select, and where the result appears. No critical information is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds critical semantics beyond the schema, especially for the `lang` parameter, requiring the full BCP-47 variant (en-gb, not en) and instructing to retrieve it from get_system_instructions. It also reinforces the allowed error_type values and which parameters to pass, going beyond bare schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool logs a grammar mistake and creates a grammar point in the user's Minddory deck. It specifies the exact resource (grammar point) and verb (log/create), and distinguishes it from sibling tools like capture_word by focusing on grammar errors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Use it proactively whenever the user writes a target-language sentence with a clear, correctable error.' It also includes when-not-to-use (skip borderline calls, validate regional variants) and instructs not to ask permission or announce logs. This is comprehensive and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_wordCapture wordAInspect
Capture a target-language word or phrase to the user's Minddory vocabulary deck (a flashcard in the "Chat Discoveries" folder when the word is new, otherwise a context encounter). The user connected Minddory so their assistant builds their deck from real conversations, so use this proactively to log notable target-language vocabulary they encounter, use, or ask about. By connecting Minddory the user opted IN to automatic capture, so just capture as you chat - do not pause to ask permission for each word, and do not turn capturing into a yes/no question. You do not need to announce each capture, but answer honestly if the user asks what you have saved. Use the words array to capture several from one message; include a gloss (short source-language translation) and context (the sentence) when you can. Skip stop words, proper nouns, numbers, and words shorter than 3 characters (CJK / Hangul exempt). ALWAYS pass lang — the ISO code of the captured word's own language (you know it from the conversation); the call is rejected without it and the target language is never guessed. source_lang (the user's native language) is optional and defaults to their deck. This is the primary tracking signal of Minddory, so capture diligently.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | REQUIRED. ISO code of the captured word's own language (en, de, es, zh, ...). The call is rejected if omitted — never leave it blank or guess from prior context. | |
| word | No | Single-word capture (legacy). Use `words` for more than one. | |
| gloss | No | Short translation in the source language. Strongly recommended. | |
| words | No | Batch capture. Each entry is {word, gloss?, context?}. Prefer this when capturing 2+ words from the same message. | |
| context | No | The sentence where the word appeared. | |
| source_lang | No | ISO code of the user's native/source language. Optional — defaults to the source language of the user's existing deck. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate the tool is a write operation (readOnlyHint: false, destructiveHint: false). The description adds valuable behavioral context: the call is rejected without `lang`, the user has opted into automatic capture, no confirmation is needed, captures happen silently, and honesty is required if asked. This goes well beyond the annotations and sets clear expectations for agent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but each sentence adds functional value: purpose, user consent, usage policy, batching, language requirements, and capture heuristics. It is front-loaded with the action and destination, then branches into practical rules. While it could be trimmed slightly (e.g., repeating 'capture diligently'), the density is justified by the tool's central role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, the description covers the essential operational context: when to use, what to pass, how to structure multiple captures, and critical failure conditions. It does not describe return values or post-capture behavior, but that is not required for a capture action. The main omission is any note about idempotency or capacity limits, but overall it is sufficiently complete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description enriches it: it flags `lang` as mandatory (schema lacks a required list), explains the legacy `word` vs. batch `words` distinction, clarifies `gloss` and `context` usage, and notes `source_lang` defaults to the deck's language. This adds meaning beyond the raw property descriptions, such as the rejection behavior and batching preference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Capture a target-language word or phrase to the user's Minddory vocabulary deck,' and clearly distinguishes its scope as the primary word-capture tool, contrasted with siblings like capture_grammar_mistake. It states the exact action, destination, and context (flashcard vs. context encounter), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use proactively, don't pause for permission, don't announce every capture, batch with `words`, skip stop words/proper nouns/numbers/short words, and always pass `lang`. It does not explicitly compare against alternative capture tools (e.g., capture_grammar_mistake), but the context 'primary tracking signal of Minddory' implies precedence. Overall, strong guidance but no explicit exclusions for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_wordsCheck words against deckARead-onlyInspect
Batch lookup: for a list of target-language words, tell me which ones are already in the user's Minddory deck and how well they know each. Use this BEFORE glossing or capturing vocabulary from a message - it answers "which of these are actually new to this user" in one call, so you can skip words they have already mastered, gloss only the genuinely new ones, and notice when a word they are currently failing shows up in conversation. Each result is {word, in_deck, mastery, translation, next_review_at, due}; mastery is one of not_in_deck, new, review, struggling, mastered. The response also pulls out the three lists you usually act on - not_in_deck, known and struggling - so you do not have to sort them yourself; words in mid-review are in words only. Entries that could not be answered as sent are listed in skipped as {input, reason: blank|duplicate, answered_as?} - a duplicate WAS answered, under the entry named by answered_as. Omit lang and it resolves to the user's own primary learning language (lang_defaulted: true in the response says so); pass it whenever you know which language you are in. Prefer this over calling get_card once per word.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language tag of the words: a base ISO code with an optional region (en, en-us, es-419). Three-subtag tags such as zh-Hant-TW are not accepted. Omit it and the user's own primary learning language is used. | |
| words | Yes | The words or phrases to check, as written in the target language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (`readOnlyHint: true`) already cover read-only safety. The description goes beyond this by explaining the grouped output lists (`not_in_deck`, `known`, `struggling`), the `skipped` array behavior with the `answered_as` field, and the defaulting behavior of `lang`. The only minor gap is not detailing pagination or rate limits, but the provided context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but packed with valuable information, front-loading the main purpose. It covers usage, return structure, edge cases (`skipped`), and defaults. The only slight miss is being somewhat lengthy, but every sentence earns its place, making the informational density high.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch lookup tool with 2 params and no output schema, the description thoroughly explains the return values (mastery levels, `skipped` handling, `lang_defaulted`). It covers the main use case (pre-glossing check) and edge cases (duplicates, unknown languages), making it highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with useful descriptions for both `words` and `lang`. The description adds crucial information about the return structure, which the schema lacks. However, the schema already explains the parameters well, so while the description enhances understanding of behavior, it doesn't add significant semantic detail about the parameters themselves beyond what's already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Batch lookup: for a list of target-language words, tell me which ones are already in the user's Minddory deck and how well they know each.' It clearly explains the batch nature and differentiates itself from siblings like get_card by stating 'Prefer this over calling get_card once per word.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit instructions on when to use it ('Use this BEFORE glossing or capturing vocabulary from a message'), what it answers ('which of these are actually new to this user'), and explicitly names the alternative ('Prefer this over calling get_card once per word'). This meets the criteria for explicit exclusions and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_vocabGet active vocabularyARead-onlyInspect
Get the user's most actively encountered target-language words (from past capture_word + log_interaction events), ranked by frequency over a lookback window. Use to surface "frontier" words the user keeps touching when they ask "what should I learn next" or when you want context-aware suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language tag (en, en-us, pt-br). Matching is on the base code, so a variant finds encounters logged under any sibling. Omit it to include ALL languages - unlike the deck tools, this one is a cross-language frequency view. | |
| limit | No | Default 20. | |
| lookback_days | No | Default 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnlyHint annotation already signals a non-mutating operation, and the description adds meaningful behavioral context by stating that results are derived from capture_word and log_interaction events and are frequency-ranked. It doesn't describe output shape or empty-result behavior, but this is minor given the read-only, aggregated nature of the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core definition and followed by an actionable use-case statement. Every clause earns its place and no redundant material is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no required params, no nested objects, no output schema), and the description covers the source data, computation window, ranking, and intended use. The schema handles parameter details, so the description is complete for agent selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: lang, limit, and lookback_days all have descriptive text including defaults and matching behavior. The description adds no parameter-specific information, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with the specific action 'Get' and clearly defines the resource: 'the user's most actively encountered target-language words... ranked by frequency over a lookback window.' It distinguishes itself from sibling tools by explicitly sourcing from 'past capture_word + log_interaction events' and highlighting the frequency-rank aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance with 'Use to surface frontier words... when they ask what should I learn next or when you want context-aware suggestions.' This is clear when-to-use context, though it does not name alternative tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardGet card detailARead-onlyInspect
Single card detail by word (case-insensitive). Returns translation, mastery, and last 10 events.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Omit it and the user's own primary learning language is used. | |
| word | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral details beyond that: lookups are case-insensitive and the result includes translation, mastery, and the last 10 events. Since there is no output schema, these return details meaningfully set expectations. It does not cover not-found behavior, but enough is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the purpose, lookup behavior, and expected return fields with no filler or redundancy. Every phrase in the description adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only single-card lookup with two parameters and no output schema, this description is mostly complete: it identifies the key parameter, mentions case-insensitivity, and enumerates return contents. It could add a short note on not-found behavior or a clearer 'use this when' hint, but the current level is solid for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the schema documents 'lang' thoroughly, while 'word' only has length constraints. The description clarifies that 'word' is the lookup key and case-insensitive, adding some meaning beyond the schema. However, it does not fully compensate for all param semantics and does not mention lang behavior beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation as 'Get single card detail by word', with a specific resource (card), a specific lookup key (word), and explicit scope (a single card). This distinguishes it from sibling list-oriented tools like get_known_words and get_active_vocab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use this tool when you need the detail of one card by its word. However, it does not explicitly say when not to use it, mention prerequisites, or contrast with sibling tools such as check_words or get_known_words. Given the context is clear but exclusions are absent, an implied-usage score is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_known_wordsGet known wordsARead-onlyInspect
Words the user has verified known via flashcard practice. Paginated keyset on flashcards.id.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language tag of the words: base ISO with an optional region (en, en-us, pt-br). Omit it and the user's own primary learning language is used. | |
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to restate safety. It adds the pagination method (keyset on flashcards.id) which is useful behavioral context, but doesn't disclose details like whether results are sorted, or if the cursor is opaque. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The first sentence states the purpose, the second provides the pagination detail. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 optional params, no output schema) and the description covers the core purpose and pagination. However, it doesn't mention what the response contains (e.g., word objects, metadata) or any ordering guarantees, which could be important for an agent. Given the simplicity, it's adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'lang' has a description). The description adds context for 'lang' (user's primary learning language default) but doesn't explain 'limit' or 'cursor' beyond schema constraints. Since coverage is low, the description should compensate more, but it does add some value for the lang parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns words the user has verified as known via flashcard practice, with a specific pagination method (keyset on flashcards.id). It distinguishes from siblings like get_active_vocab and get_queue by focusing on known words, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving known words but doesn't explicitly state when to use this vs. alternatives like get_active_vocab or check_words. The pagination hint is useful but no exclusions or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_queueGet review queueARead-onlyInspect
Cards due now and due within the next 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | ||
| lang | No | Language tag of the queue: base ISO with an optional region (en, en-us, pt-br). Omit it and the user's own primary learning language is used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile, and the description adds a useful temporal behavior detail. However, it does not disclose ordering, pagination, how overdue cards are treated, or what the returned objects contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to the core meaning, making it highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only queue lookup, the description captures the essential return criterion and pairs well with the readOnlyHint annotation. However, the absence of an output schema and the unstated meaning of 'max' leave some details to be inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no information about either parameter. The schema describes 'lang' well but leaves 'max' with only min/max bounds, so the agent must infer that 'max' caps the returned queue size; with 50% schema coverage, the description should have compensated but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's purpose: it returns cards that are due now or within the next 24 hours. This specific time-based scope distinguishes it from siblings like get_known_words or get_active_vocab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The selection criterion is explicit ('due now' and 'due within the next 24 hours'), giving clear context for when an agent should request this queue. It does not explicitly name alternatives or exclusions, but the intended usage is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_activityGet recent activityARead-onlyInspect
Event log slice with optional surface filter and keyset pagination on answers.id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| surface | No | e.g. 'claude_mcp', 'app', 'cursor_mcp' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation by specifying keyset pagination on answers.id and an optional surface filter. This discloses the pagination mechanism and filtering capability, though it does not mention return format or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It efficiently conveys the core purpose, filter option, and pagination mechanism, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not explain the response shape or how pagination cursors are obtained, leaving ambiguity about the returned event entries. While the optional surface filter and pagination mechanism are covered, the return value remains underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only surface has a description). The description compensates by explaining that surface is a filter and that cursor uses keyset pagination based on answers.id, giving meaningful context. However, limit semantics are only provided by schema min/max, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a slice of the event log (recent activity) with optional surface filtering and keyset pagination on answers.id. It distinguishes from sibling tools like get_card and get_user_profile by focusing on activity events, using a specific verb-plus-resource structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use for reading recent activity events but does not explicitly state when to use it over siblings or when not to. No alternatives are named, so the agent must infer usage from the tool's purpose and name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_instructionsGet session instructionsARead-onlyInspect
Call this at the START of every new conversation, before your first reply, to load the user's Minddory setup and your role as their proactive language partner: CEFR level, target/source languages, due-card count, weak words, and how to capture. The user connected Minddory to actively improve their language through this chat, so use it to tailor your help to their level and goals. Pass lang when you know which language the user wants to practice right now - the language they are conversing in, or one they named explicitly (including a regional variant like en-us or en-gb) - so the returned profile is scoped to that language. Re-call this tool with the new lang if the user switches practice language or requests a specific variant mid-conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional ISO or BCP-47 tag of the language the user wants to practice in this conversation (en, en-us, de, pt-br). Defaults to the user's primary learning language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds the key behavioral detail that the returned profile is scoped to the `lang` parameter, defaulting to the user's primary learning language. It also explains the returned content, which goes beyond the annotation. Lacks info on edge cases like invalid lang or repeated calls, but is otherwise clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three long sentences, but every clause carries necessary instruction: when to call, what it returns, how to pass `lang`, and when to re-call. It is front-loaded with the most critical directive. Slightly dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description must convey what the tool returns, and it does: CEFR level, target/source languages, due-card count, weak words, and capture instructions. It also explains why this matters (tailoring help to the user's level and goals). For a single-parameter tool with clear return content, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers `lang` fully (ISO/BCP-47 tag, optional, default). The description adds contextual guidance: pass the language the user is 'conversing in' or 'named explicitly', and includes regional variant examples (en-us, en-gb). This extra meaning enriches the schema's baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'load the user's Minddory setup and your role as their proactive language partner' at the start of every conversation. It lists specific content (CEFR level, languages, due-card count, weak words) and distinguishes itself from sibling tools like get_user_profile or get_queue by being the session initializer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage instructions: 'Call this at the START of every new conversation, before your first reply' and when to pass `lang` (when the user is conversing in a language or names one). It also tells when to re-call ('if the user switches practice language or requests a specific variant mid-conversation').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileGet user profileARead-onlyInspect
Profile snapshot: CEFR level, target/source languages, due card count, weak words, recent lookups. Pass lang to scope the snapshot to one learning language (for users learning several); omit it for the user's primary language.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Optional ISO or BCP-47 tag (en, en-us, pt-br). Scopes the whole profile - level, due count, weak words - to that learning language. Omit for the user's primary language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds contextual detail about how the `lang` parameter scopes the entire snapshot and the fallback to the primary language. This goes beyond the annotation without contradicting it, though it does not disclose potential error conditions or response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence front-loading the key contents and the second providing parameter guidance. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description carries the burden of explaining what the tool returns, and it does so by listing the main fields. The optional parameter behavior is fully covered. It could be enhanced by noting the return type (e.g., 'returns a profile object'), but the current level is sufficient for a simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides thorough documentation for the single `lang` parameter, including examples and the omission behavior. The description largely restates the same information, so it adds minimal new semantic value beyond the schema's high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Profile snapshot' and enumerates the specific data included (CEFR level, languages, due card count, weak words, recent lookups), making the tool's function unambiguous. It also differentiates from sibling getters like get_card and get_queue by presenting a composite overview rather than a single resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to pass `lang` versus omit it, providing clear usage guidance for the optional parameter. It implicitly distinguishes this tool from more specific getters by framing it as a profile snapshot, though it does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_interactionLog interactionAInspect
Append a generic interaction event to the answers log. Use for lookups, AI discussions, and reading-in-context signals.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Scoped on the base, so the variant the session instructions ask you to send always matches. Omit it and the user's own primary learning language is used. | |
| type | Yes | ||
| word | Yes | ||
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation (readOnlyHint=false, destructiveHint=false). The description adds that it 'appends' a 'generic interaction event', which implies non-destructive append semantics. However, it does not disclose any further behavioral traits like side effects, permission requirements, or log size constraints. With annotations covering the safety profile, this is sufficient but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core action and then lists concrete use cases. No wasted words; every part contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (4 params, no output schema), and the description covers purpose and usage adequately. However, since parameter semantics are only partially covered and there is no output description, the description is incomplete for fully understanding behavior. It is minimally viable but could benefit from parameter examples or a note about what the log entry contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'lang' has a description). The description does not explain the 'type', 'word', or 'metadata' parameters, and the enum values for 'type' are not elaborated. Since the schema only clarifies 'lang', the description should compensate for the other parameters but fails to do so, leaving semantic gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Append' and the resource 'answers log', and specifies the three interaction domains (lookups, AI discussions, reading-in-context). This distinguishes it from sibling tools like capture_word or mark_demonstrated, which are about capturing or marking specific states.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('for lookups, AI discussions, and reading-in-context signals'), giving clear contexts. It does not enumerate when-not-to-use or alternatives, but the listed use cases are enough to guide selection relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_demonstratedMark word demonstratedAInspect
Confidence-weighted spaced-repetition boost when the user has used a word correctly: the card moves further out in the review schedule. Logs an answer row even if no flashcard exists.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Scoped on the base, so the variant the session instructions ask you to send always matches. Omit it and the user's own primary learning language is used. | |
| word | Yes | ||
| source | No | ||
| context | No | ||
| confidence | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-read-only (readOnlyHint=false) and non-destructive (destructiveHint=false), which is appropriate for a write operation that modifies the schedule. The description adds that it 'logs an answer row' and affects the review schedule, but does not disclose side effects like overwriting or requiring authentication. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and effect, and adds the critical edge case about missing flashcards. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no output schema, the description is reasonably complete: it explains the purpose, the effect on the schedule, and the edge case behavior. However, it lacks explicit guidance on parameter interactions (e.g., how 'source' and 'context' are used) and does not describe the return value or success criteria, but it is adequate for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, but the description clarifies the 'confidence' parameter: it determines the boost weight, and mentions the 'lang' parameter's behavior (scoped on base). However, it does not add semantic detail for 'word', 'source', or 'context'. The description adds some value beyond the schema but not enough to fully compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('mark') and resource ('word demonstrated'), and specifies the effect ('Confidence-weighted spaced-repetition boost...'). It distinguishes from the sibling tool 'mark_struggled' by indicating it is for correct usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use: when the user has used a word correctly InternetHigh, and implies the opposite for 'mark_struggled'. Also notes that it logs an answer row even if no flashcard exists, which is a key contextual detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_struggledMark word struggledAInspect
Spaced-repetition degrade for a word the user just got wrong: the card comes back sooner. ease_factor drops, interval resets, repetitions reset.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Scoped on the base, so the variant the session instructions ask you to send always matches. Omit it and the user's own primary learning language is used. | |
| word | Yes | ||
| source | No | ||
| context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses the effects of the operation: card comes back sooner, ease factor drops, interval resets, repetitions reset. This goes beyond the annotations (readOnlyHint=false, destructiveHint=false) by explaining exactly what changes occur, which is valuable for the agent to understand side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and to the point, using two sentences to convey the action and its results. There is no unnecessary verbosity or repetition, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the purpose and behavioral effects clearly, but it lacks context about what parameters are required (e.g., what 'source' and 'context' are for) and does not mention any return value or success criteria. While there is no output schema, the parameter ambiguity and lack of directions on when to use versus not use the tool make it only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has four parameters (lang, word, source, context), but only 'lang' has a description, giving 25% coverage. The tool description does not compensate by explaining the meaning or usage of 'source' and 'context', leaving ambiguity. Since coverage is low, the description should have added parameter context, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to degrade spaced repetition for a word the user got wrong, with explicit effects (card comes back sooner, ease factor drops, etc.). It distinguishes from siblings like 'mark_demonstrated' by focusing on the 'struggled' state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when the user got a word wrong) and explains the consequential behavior. However, it does not explicitly contrast with alternatives like 'mark_demonstrated' or provide explicit direction on when not to use it, though the context strongly suggests the intended scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
- Changed
get_active_vocab1 field changed- changed
Input schema / properties / lang / descriptionPrevious value: -"ISO target language code. Omit to include all languages."New value: +"Language tag (en, en-us, pt-br). Matching is on the base code, so a variant finds encounters logged under any sibling. Omit it to include ALL languages - unlike the deck tools, this one is a cross-language frequency view."
- Changed
get_card1 field changed- added
Input schema / properties / lang / descriptionAdded value: +"Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Omit it and the user's own primary learning language is used."
- Changed
get_known_words1 field changed- changed
Input schema / properties / lang / descriptionPrevious value: -"ISO target language code (default en)"New value: +"Language tag of the words: base ISO with an optional region (en, en-us, pt-br). Omit it and the user's own primary learning language is used."
- Changed
get_queue1 field changed- added
Input schema / properties / lang / descriptionAdded value: +"Language tag of the queue: base ISO with an optional region (en, en-us, pt-br). Omit it and the user's own primary learning language is used."
- Changed
log_interaction1 field changed- added
Input schema / properties / lang / descriptionAdded value: +"Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Scoped on the base, so the variant the session instructions ask you to send always matches. Omit it and the user's own primary learning language is used."
- Changed
mark_demonstrated1 field changed- added
Input schema / properties / lang / descriptionAdded value: +"Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Scoped on the base, so the variant the session instructions ask you to send always matches. Omit it and the user's own primary learning language is used."
- Changed
mark_struggled1 field changed- added
Input schema / properties / lang / descriptionAdded value: +"Language tag of the word: base ISO with an optional region (en, en-us, pt-br). Scoped on the base, so the variant the session instructions ask you to send always matches. Omit it and the user's own primary learning language is used."
1 tool update
- Added
check_words
12 tool updates
- First observed
capture_grammar_mistake - First observed
capture_word - First observed
get_active_vocab - First observed
get_card - First observed
get_known_words - First observed
get_queue - First observed
get_recent_activity - First observed
get_system_instructions - First observed
get_user_profile - First observed
log_interaction - First observed
mark_demonstrated - First observed
mark_struggled
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Voice-led, FSRS-scheduled flashcards from YouTube, PDFs, web, or text. Auto-graded quizzes.
AI-powered YouTube to flashcards with spaced repetition and Anki export
- FlipnemOAuthcom.flipnem
Build and study spaced-repetition flashcards with your agent.
- wikiOAuthcom.talkamore
A wiki about your life that writes itself. Save from any AI chat, recall it in the next.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAI-powered YouTube playlist to flashcards with spaced repetition (SM-2 algorithm). 18 tools for playlist management, semantic search, and Anki export.MIT

MyAITwin MCPofficial
FlicenseNot gradedqualityDmaintenancePersonal RAG database and semantic search built from inside your AI chat. Store knowledge, voice, and skills; Claude and ChatGPT create work that sounds like you.-- FlicenseAqualityDmaintenanceConverts JSON/CSV Markdown content into interactive flashcard pages with multiple templates, PDF export, and voice support for language learning.4-
- AlicenseNot gradedqualityDmaintenanceEnables intelligent Anki vocabulary management with automatic TTS audio generation, batch card creation, and advanced search and analysis.267MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools cleanly separate single-card lookup, batch lookup, due queue, event log, and SRS adjustments. The main overlap is `get_system_instructions` and `get_user_profile`, which both return CEFR level, languages, due count, and weak words, so an agent could mis-select between them.
Every tool follows a consistent lowercase snake_case verb_noun pattern: capture_*, get_*, mark_*, log_*, check_. The verbs are descriptive and predictable, making the set easy to navigate.
13 tools is well within the ideal scope for a language-learning memory/assistant server. Each tool covers a distinct part of the capture, lookup, review, and spaced-repetition workflow without feeling padded.
The core lifecycle is well covered: grammar and vocabulary capture, batch deck checks, card detail, due queue, recent activity, and SRS boosts/penalties. Minor gaps exist: captured grammar mistakes have no retrieval endpoint, and there is no delete/dismiss path for unwanted cards, but agents can work around these.