Flashcards by Fulin Labs MCP
A remote MCP server enabling agents to create, study, and share personal vocabulary flashcards. It supports interactive study with examples and pronunciation, allows creation of decks from various languages, and provides shareable links for persistent access without requiring user authentication.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://flashcard.fulinlabs.com/api/mcpWhat its tools do
3 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (2)
Can change data (1)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Create vocabulary flashcards from conversations or lessons
- Generate flashcards with pronunciation and translations
- Save decks for shareable study links
- Serve audio pronunciation for supported languages
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- flashcard-app 6.7.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 3 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {},
"resources": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
create_flashcard_deck — Create and study flashcards
Use this when the user asks to learn, study, memorize, review, practice, or create flashcards about any topic. Generate the complete deck in this call and open it in the interactive flashcard UI. Act immediately using the existing conversation and source material; infer language and backLanguage yourself. Never ask the user for language codes, tool arguments, or confirmation of an already requested deck. For a request for 50 cards, submit all 50 completed cards in one call. Keep the response brief and let the study UI show the deck. Examples include 'I want to learn about X', 'teach me X with flashcards', and 'Create an HSK3 vocabulary deck about restaurants'. Do not call a separate add-card tool. Do NOT use when the user asks for a direct explanation without study intent, asks to delete or modify an existing deck, or requests an in-conversation quiz without creating a deck.
{
"type": "object",
"required": [
"title",
"cards"
],
"properties": {
"cards": {
"type": "array",
"items": {
"type": "object",
"required": [
"front",
"back"
],
"properties": {
"back": {
"type": "string",
"minLength": 1,
"description": "Answer, definition, translation, or explanation. For language learning, always use the user's known language (e.g. English). This is the revealed answer when the card is flipped."
},
"front": {
"type": "string",
"minLength": 1,
"description": "Prompt, question, term, word, or phrase. For language learning, always use the target language (the language being learned). For example: Chinese characters, Italian phrases, or Japanese words."
},
"example": {
"type": "string",
"description": "A concise example sentence or usage phrase in the target or subject language. Include when the user requests examples or when teaching a language."
},
"exampleParts": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 3,
"minItems": 3,
"description": "Exactly three strings in this order: [Chinese word or short semantic phrase, tone-marked pinyin for that segment, direct translation of that segment]. Attach adjacent punctuation to the Chinese text."
},
"maxItems": 12,
"minItems": 1,
"description": "For Chinese examples only: every part of the example in order, split into useful words or short semantic phrases. Encode each part compactly as [Chinese text, tone-marked pinyin, direct translation]. Cover the complete example exactly once in no more than 12 parts; attach punctuation to the preceding part."
},
"pronunciation": {
"type": "string",
"description": "Pinyin, romaji, IPA, or another reading guide for the front text. Required for language decks with non-Latin script (Chinese, Japanese, Korean, etc.) and when the user requests pronunciation."
},
"exampleTranslation": {
"type": "string",
"description": "Translation or plain-language explanation of the example."
},
"examplePronunciation": {
"type": "string",
"description": "Pronunciation or romanization of the example sentence."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "The complete generated deck. Include exactly the number of cards the user requested, with every required language-learning field completed; never submit a partial array or placeholders."
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "A concise, descriptive title for the generated deck."
},
"language": {
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"type": "string",
"description": "ISO 639-1 code for the language spoken on the front side (e.g. 'zh' Chinese, 'ja' Japanese, 'vi' Vietnamese). Used for the correct audio voice and saved-deck language. Always infer and set it from the user's target language, never from their current app preference."
},
"backLanguage": {
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"type": "string",
"description": "Language of the translations on the back. Set from the user’s known language; never assume English. Always set for language-learning decks. Used for reverse-card audio."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"title",
"cardCount",
"cards"
],
"properties": {
"cards": {
"type": "array",
"items": {
"type": "object",
"required": [
"front",
"back"
],
"properties": {
"back": {
"type": "string",
"minLength": 1,
"description": "Answer, definition, translation, or explanation. For language learning, always use the user's known language (e.g. English). This is the revealed answer when the card is flipped."
},
"front": {
"type": "string",
"minLength": 1,
"description": "Prompt, question, term, word, or phrase. For language learning, always use the target language (the language being learned). For example: Chinese characters, Italian phrases, or Japanese words."
},
"example": {
"type": "string",
"description": "A concise example sentence or usage phrase in the target or subject language. Include when the user requests examples or when teaching a language."
},
"exampleParts": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"pronunciation",
"translation"
],
"properties": {
"text": {
"type": "string"
},
"translation": {
"type": "string"
},
"pronunciation": {
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 12,
"minItems": 1
},
"pronunciation": {
"type": "string",
"description": "Pinyin, romaji, IPA, or another reading guide for the front text. Required for language decks with non-Latin script (Chinese, Japanese, Korean, etc.) and when the user requests pronunciation."
},
"exampleTranslation": {
"type": "string",
"description": "Translation or plain-language explanation of the example."
},
"examplePronunciation": {
"type": "string",
"description": "Pronunciation or romanization of the example sentence."
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"language": {
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"type": "string"
},
"cardCount": {
"type": "integer"
},
"backLanguage": {
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}speak_text — Play text as speech
Use this when the flashcard widget requests speech audio for the current card.
{
"type": "object",
"required": [
"text",
"language"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Text to speak."
},
"language": {
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"type": "string",
"description": "Language of the text being spoken. Always specify the current side’s language; never default to the other side or app preferences."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"contentType"
],
"properties": {
"contentType": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_website_deck — Save a flashcard deck on Fulin Labs
Use this when the user explicitly asks to save or share a deck on the website, or chooses Learn on website in the study widget. It sends the supplied deck to Fulin Labs and creates a persistent shareable deck link. Anyone with the link can read the deck. Do not call merely to preview or study a deck. Repeating the call may create another deck.
{
"type": "object",
"required": [
"title",
"cards"
],
"properties": {
"cards": {
"type": "array",
"items": {
"type": "object",
"required": [
"front",
"back"
],
"properties": {
"back": {
"type": "string",
"minLength": 1,
"description": "Answer, definition, translation, or explanation. For language learning, always use the user's known language (e.g. English). This is the revealed answer when the card is flipped."
},
"front": {
"type": "string",
"minLength": 1,
"description": "Prompt, question, term, word, or phrase. For language learning, always use the target language (the language being learned). For example: Chinese characters, Italian phrases, or Japanese words."
},
"example": {
"type": "string",
"description": "A concise example sentence or usage phrase in the target or subject language. Include when the user requests examples or when teaching a language."
},
"exampleParts": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 3,
"minItems": 3,
"description": "Exactly three strings in this order: [Chinese word or short semantic phrase, tone-marked pinyin for that segment, direct translation of that segment]. Attach adjacent punctuation to the Chinese text."
},
"maxItems": 12,
"minItems": 1,
"description": "For Chinese examples only: every part of the example in order, split into useful words or short semantic phrases. Encode each part compactly as [Chinese text, tone-marked pinyin, direct translation]. Cover the complete example exactly once in no more than 12 parts; attach punctuation to the preceding part."
},
"pronunciation": {
"type": "string",
"description": "Pinyin, romaji, IPA, or another reading guide for the front text. Required for language decks with non-Latin script (Chinese, Japanese, Korean, etc.) and when the user requests pronunciation."
},
"exampleTranslation": {
"type": "string",
"description": "Translation or plain-language explanation of the example."
},
"examplePronunciation": {
"type": "string",
"description": "Pronunciation or romanization of the example sentence."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "The cards the user explicitly chose to save on Fulin Labs."
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "The title of the deck the user chose to save."
},
"language": {
"enum": [
"zh",
"de",
"es",
"it",
"fr",
"en",
"ko",
"ja",
"vi"
],
"type": "string",
"description": "Optional language code for the deck's front side."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
interactive-flashcard-study-deck — Interactive flashcard study deck
Flip and study vocabulary flashcards in clients that support MCP Apps.
ui://widget/flashcard-study-v19.html90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-02: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 3481 ms
- 95th percentile latency
- 3481 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 3481 ms · metadata changed · 3 tool(s), 1 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http flashcards-by-fulin-labs-mcp https://flashcard.fulinlabs.com/api/mcpCodex
codex mcp add flashcards-by-fulin-labs-mcp --url https://flashcard.fulinlabs.com/api/mcpCursor
{
"mcpServers": {
"flashcards-by-fulin-labs-mcp": {
"url": "https://flashcard.fulinlabs.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"flashcards-by-fulin-labs-mcp": {
"type": "streamableHttp",
"url": "https://flashcard.fulinlabs.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"flashcards-by-fulin-labs-mcp": {
"type": "http",
"url": "https://flashcard.fulinlabs.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http flashcards-by-fulin-labs-mcp https://flashcard.fulinlabs.com/api/mcpClaude Desktop
{
"mcpServers": {
"flashcards-by-fulin-labs-mcp": {
"url": "https://flashcard.fulinlabs.com/api/mcp"
}
}
}Windsurf
{
"mcpServers": {
"flashcards-by-fulin-labs-mcp": {
"serverUrl": "https://flashcard.fulinlabs.com/api/mcp"
}
}
}Let your agent find its tools
Find servers like Flashcards by Fulin Labs MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.