Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Lingard Vocab

REMOTE · LINGARD.APP

Build and enrich your Lingard vocabulary: topic collections, flashcards, translations, examples.

Available components

82 Trust /100

Last scanned (7 hours ago)

Scores higher than 85% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Education and Research

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security97
Transport & Reachability100
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3014 tokens (~137/item across 22 items; 15 tools + 7 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management20
  • Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage83
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 42% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +2

    No change was recorded against any check on this day. Endpoint Security went from 94 to 97. Other categories moved too: Stability & Change Management rose 3.

  • 4 Nov 26 −1

    No change was recorded against any check on this day. Endpoint Security went from 97 to 94. Other categories moved too: Stability & Change Management rose 4.

  • 2 Nov 26 +2

    No change was recorded against any check on this day. Endpoint Security went from 94 to 97. Other categories moved too: Stability & Change Management rose 3.

  • 1 Nov 26 −1
    • First check of Authorization: partial security
  • 31 Oct 26 +1
    • Stability: unverified → 0.03 ▲ functional
  • 30 Oct 26 79

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://lingard.app/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=lingard.app CN=WR3,O=Google Trust Services,C=US 6 Oct 2026 4 Jan 2027 RSA 2048 SHA256-RSA 75b389b18aafcf2b0a1969b9cc5a75a0
SANs: lingard.app, start.lingard.app, www.lingard.app
CN=WR3,O=Google Trust Services,C=US (CA) CN=GTS Root R1,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 RSA 2048 SHA256-RSA 7ff005a91568d63abc22861684aa4b5a
CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 19 Jun 2020 28 Jan 2028 RSA 4096 SHA256-RSA 77bd0d6cdb36f91aea210fc4f058d30d
CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 1 Sept 1998 28 Jan 2028 RSA 2048 SHA1-RSA 40000000001154b5ac394

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of lingard.app. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
app. present 23684 8 Verified
lingard.app. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://lingard.app/.well-known/oauth-protected-resource", error="invalid_token", error_description="Sign in to Lingard to use this MCP tool."

Bearer resource_metadata="https://lingard.app/.well-known/oauth-protected-resource", error="invalid_token", error_description="Sign in to Lingard to use this MCP tool."
Header Value
strict-transport-security max-age=31556926

Protected resource metadata

Document https://lingard.app/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://lingard.app/mcp
Authorisation server https://lingard.app

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://lingard.app/mcp Verified 200
http (plaintext) http://lingard.app/mcp HTTPS enforced 301 https://lingard.app/mcp
MCP tools · 15 exposed · ~2,776 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
fetch ~173

Fetches the full live Lingard JSON record for a search-result id (e.g. "learning-context:en") or a Lingard resource URI such as lingard://learning-context/en.

NameTypeReqDescription
idstring–Preferred selector: a search-result id, e.g. "learning-context:en". Takes `id` OR `uri` (not both); if both are given, `id` wins.
targetLangstring–Fallback used only when neither `id` nor `uri` is provided: a language code (en, de, es, fr, it, pl, pt) whose learning context to fetch.
uristring–Alternative selector, used only when `id` is omitted: a Lingard resource URI, e.g. "lingard://learning-context/en".
NameTypeReqDescription
dataobjectyes–
idstringyes–
textstringyes–
titlestringyes–
uristringyes–

No examples provided.

lingard_add_words_to_collection ~348

Adds cards to an existing Lingard collection, deduplicating by normalized word title; commit=true writes them. Only collections with writable="full" accept new cards: curated Lingard collections are read-only and the unfiled bucket takes no new cards. Unless allowIncompleteCards is true, a new card needs title, translate, pos, pron/ipa, syns, and examples with translations; image is optional. A German or Romance noun title carries its dictionary article when one is used, e.g. der Hund, die Reise, das Haus. In example text and example translation the target word and the translated word are marked with {}. form is not part of speech: it holds the inflected-form category of the current word and stays empty for base forms. It only adds: a word already in the collection gets its empty fields filled (mergeMode "fill_missing", the default) or is left alone ("add_only"); a value that is already filled in is never changed or cleared.

NameTypeReqDescription
allowIncompleteCardsboolean–Default false. True marks the cards as a sparse import that the user asked for; it lets them through without the complete-card fields (everything except image, the dictionary article on a German/Roma…
cardsarrayyes–
collectionTitlestring––
collectionUuidstring––
commitboolean––
mergeModestring–What to do with a word that is already in the collection: "fill_missing" (default) fills its empty fields, "add_only" leaves it as it is.
targetLangstringyes–
NameTypeReqDescription
changesobjectyes–
collectionobjectyes–
committedboolean––
mergeModestring––
okbooleanyes–
payloadobjectyes–
summaryobjectyes–
targetLangstringyes–
upsertResult–––

No examples provided.

lingard_attach_card_images ~178

Attaches supplied images to existing Lingard cards. It does not generate images: each entry carries the image itself as imageBase64 or dataUri, or an imageUrl that the server downloads. PNG, JPEG, WebP, and SVG inputs are converted to WebP and uploaded as private custom card images; an image the card already has is replaced. commit=true writes.

NameTypeReqDescription
collectionTitlestring––
collectionUuidstring––
commitboolean–True uploads and attaches. Default false returns a dry-run preview without writing.
imagesarrayyesOne entry per card to illustrate. Each entry needs a card selector (`cardId` or `title`) and exactly one image source (`imageBase64`, `dataUri`, or `imageUrl`).
targetLangstringyes–
NameTypeReqDescription
committedbooleanyes–
imagesarrayyes–
okbooleanyes–
skippedarrayyes–
summaryobjectyes–
targetLangstringyes–
upsertResult–––

No examples provided.

lingard_commit_vocab_changes ~187

Commits a previously previewed or freshly supplied Lingard vocabulary change. Unless allowIncompleteCards is true, a new card needs title, translate, pos, pron/ipa, syns, and examples with translations; image is optional. A German or Romance noun title carries its dictionary article when one is used, e.g. der Hund, die Reise, das Haus. In example text and example translation the target word and the translated word are marked with {}. form is not part of speech: it holds the inflected-form category of the current word and stays empty for base forms. This is the tool that corrects existing cards: mergeMode:"overwrite_non_empty" replaces values that are already filled in and clearFields:["form"] clears a wrong grammatical form, which is why it is marked destructive.

NameTypeReqDescription
changeobjectyes–
targetLangstringyes–
NameTypeReqDescription
changesobjectyes–
collectionobjectyes–
committedboolean––
mergeModestring––
okbooleanyes–
payloadobjectyes–
summaryobjectyes–
targetLangstringyes–
upsertResult–––

No examples provided.

lingard_create_vocab_collection ~245

Creates a Lingard vocabulary collection, optionally with initial cards; commit=true writes it. Unless allowIncompleteCards is true, a new card needs title, translate, pos, pron/ipa, syns, and examples with translations; image is optional. A German or Romance noun title carries its dictionary article when one is used, e.g. der Hund, die Reise, das Haus. In example text and example translation the target word and the translated word are marked with {}. form is not part of speech: it holds the inflected-form category of the current word and stays empty for base forms.

NameTypeReqDescription
allowIncompleteCardsboolean–Default false. True marks the cards as a sparse import that the user asked for; it lets them through without the complete-card fields (everything except image, the dictionary article on a German/Roma…
cardsarray––
collectionTitlestringyes–
colorstring––
commitboolean––
iconstring––
picstring––
targetLangstringyes–
topicstring––
NameTypeReqDescription
changesobjectyes–
collectionobjectyes–
committedboolean––
mergeModestring––
okbooleanyes–
payloadobjectyes–
summaryobjectyes–
targetLangstringyes–
upsertResult–––

No examples provided.

lingard_fill_missing_card_fields ~113

Fills empty fields on existing Lingard cards. It never overwrites or clears a field that already has a value. Works on the user's own collections and on the "Words not in a collection" bucket; curated Lingard collections are read-only because their content comes from the Lingard catalog. commit=true writes.

NameTypeReqDescription
cardsarrayyes–
collectionTitlestring––
collectionUuidstring––
commitboolean––
targetLangstringyes–
NameTypeReqDescription
changesobjectyes–
collectionobjectyes–
committedboolean––
mergeModestring––
okbooleanyes–
payloadobjectyes–
summaryobjectyes–
targetLangstringyes–
upsertResult–––

No examples provided.

lingard_get_collection_gaps ~186

Returns live Lingard cards in a collection that are missing requested fields such as translation, POS, pronunciation, examples, or image. A curated Lingard collection always reports zero gaps: its words come from the Lingard catalog and are not the user's to fill.

NameTypeReqDescription
collectionTitlestring–Collection selector (alternative to `collectionUuid`): the collection title.
collectionUuidstring–Collection selector: its UUID. One of `collectionUuid` or `collectionTitle` is required (UUID wins if both are given).
fieldsarray–Optional. An ARRAY of field-name strings, not a bare string: e.g. ["translation"] for one field or ["translation","image"] for several. Returns cards missing ANY listed field; without it every field…
limitinteger––
targetLangstringyes–
NameTypeReqDescription
cardsarrayyes–
collectionobjectyes–
okbooleanyes–
requestedFieldsarrayyes–
summaryobjectyes–
targetLangstringyes–

No examples provided.

lingard_get_learning_context ~192

Returns the user's current Lingard learning context, read live from their account: English profile, vocabulary totals, saved collections and their titles, card counts, and missing-field stats. Earlier answers in the conversation may be out of date; this is the account as it stands now. The list covers every collection the account has, so the per-collection counts add up to the card total (totals.truncated marks a library too large to list in full). Every collection reports `source`: "user" (made by the user), "catalog" (a curated Lingard collection — read-only, its words come from the Lingard catalog) and "unfiled" (the bucket of cards saved while reading, which belong to no collection). Catalog and unfiled entries carry titles the user did not choose; they belong to the same account all the same.

NameTypeReqDescription
targetLangstringyes–
NameTypeReqDescription
collectionsarrayyes–
notesarray––
okbooleanyes–
profileobjectyes–
targetLangstringyes–
totalsobjectyes–

No examples provided.

lingard_get_learning_pauses ~122

Lists, for one language, the user's collections and sources (books, the news) and which of them are on pause. A collection or source on pause gives the automatic «Now learning» sessions no words — no new words and no reviews — and is not counted in the day's goals or reminders; opening it in the app still studies it as usual. Each entry carries the exact uuid, bookKey, and title that pause changes take.

NameTypeReqDescription
targetLangstringyesThe learned language, e.g. en, de, es, fr.
NameTypeReqDescription
collectionsarrayyes–
notestring––
okbooleanyes–
pausedCountintegeryes–
sourcesarrayyes–
targetLangstringyes–
truncatedboolean––

No examples provided.

lingard_get_vocab_collection ~184

Returns live cards from one Lingard vocabulary collection by UUID or title, including curated Lingard collections and the "Words not in a collection" bucket of cards saved while reading. With includeExamples:true it also returns each card's example sentences and their translations, which editing examples starts from.

NameTypeReqDescription
collectionTitlestring–Collection selector (alternative to `collectionUuid`): the collection title.
collectionUuidstring–Collection selector (preferred): its UUID. One of `collectionUuid` or `collectionTitle` is required.
includeExamplesboolean–Default false. True returns the full example rows (`examples`: example text, translation line, enabled flag) for every card instead of just the `exampleCount`.
limitinteger–Optional max number of cards to return (1–1000).
targetLangstringyes–
NameTypeReqDescription
cardsarrayyes–
collectionobjectyes–
hintstring––
notestring––
okbooleanyes–
targetLangstringyes–

No examples provided.

lingard_get_word_suggestion_context ~100

Returns live Lingard profile level, topic, collection context, and the words the user already has: the context for suggesting level-appropriate new cards that are not duplicates.

NameTypeReqDescription
collectionTitlestring––
collectionUuidstring––
countinteger––
excludeLimitinteger––
levelstring––
targetLangstringyes–
topicstring––
NameTypeReqDescription
collection–––
exclusionsobjectyes–
guidanceobjectyes–
level–––
nativeLang–––
okbooleanyes–
requestedCountintegeryes–
targetLangstringyes–
topic–––
wordRank–––

No examples provided.

lingard_preview_vocab_changes ~151

Previews a Lingard vocabulary collection/card change without writing to Firestore. Cards are checked as on commit. Unless allowIncompleteCards is true, a new card needs title, translate, pos, pron/ipa, syns, and examples with translations; image is optional. A German or Romance noun title carries its dictionary article when one is used, e.g. der Hund, die Reise, das Haus. In example text and example translation the target word and the translated word are marked with {}. form is not part of speech: it holds the inflected-form category of the current word and stays empty for base forms.

NameTypeReqDescription
changeobjectyes–
targetLangstringyes–
NameTypeReqDescription
changesobjectyes–
collectionobjectyes–
committedboolean––
mergeModestring––
okbooleanyes–
payloadobjectyes–
summaryobjectyes–
targetLangstringyes–
upsertResult–––

No examples provided.

lingard_set_learning_pauses ~253

Puts collections and sources on pause or takes them off it, for one language — e.g. "study only my Travel collection this week", "pause the news words", "resume everything". action: "pause" or "resume" the listed ones; "only" — resume the listed ones and pause every other collection and source of the language; "resume_all" — take every pause off (lists ignored). Collections are named by uuid or exact title and sources by bookKey or exact title, as the learning-pause list reports them. A paused item gives the automatic «Now learning» sessions no words and is not counted in goals or reminders; opening it in the app still studies it. commit=true writes; without it the call returns a preview of the changes and the resulting state.

NameTypeReqDescription
actionstringyes–
collectionsarray–Collections by uuid or exact title.
commitboolean–True writes. Default false returns a preview without writing.
sourcesarray–Sources by bookKey (catalog:… / imported:…) or exact title.
targetLangstringyesThe learned language, e.g. en, de, es, fr.
NameTypeReqDescription
actionstringyes–
changesarrayyes–
collectionsarrayyes–
committedbooleanyes–
notestring––
okbooleanyes–
pausedCountintegeryes–
previewboolean––
sourcesarrayyes–
targetLangstringyes–

No examples provided.

lingard_update_example_translations ~221

Rewrites only the translation line of examples that already exist on Lingard cards; the example sentence, its {} highlights and its audio/typing markers are left exactly as they are. It changes, adds, or removes example translations; an empty translation is a supported card state, not an error. `translations` holds one entry per existing example, in order, so it is built from the card's current examples (a collection read with includeExamples:true lists them). commit=true writes; without it the call returns the resulting examples as a preview.

NameTypeReqDescription
cardsarrayyesOne entry per card to edit. Each entry needs a card selector (`cardId`, or `title` plus a collection when the word occurs in several) and `translations`.
collectionTitlestring–Optional default collection title for cards addressed by title.
collectionUuidstring–Optional default collection for cards addressed by title.
commitboolean–True writes. Default false returns the resulting examples without saving.
targetLangstringyes–
NameTypeReqDescription
cardsarrayyes–
committedbooleanyes–
okbooleanyes–
skippedarray––
summaryobjectyes–
targetLangstringyes–

No examples provided.

search ~123

Searches the user's live Lingard account: vocabulary, learning context, English profile, totals, collection titles, saved words, flashcards, and missing vocabulary fields. Results are read from Firestore at the time of the call.

NameTypeReqDescription
qstring–Alias for query.
querystring–Search query, for example "English learning context" or "saved vocabulary collections".
targetLangstring–Lingard target language code such as en, de, es, fr, it, pl, or pt. Defaults to en when the prompt asks about English.
NameTypeReqDescription
resultsarrayyes–

No examples provided.

Install

How do I install the Lingard Vocab MCP server?

Lingard Vocab is a hosted endpoint at https://lingard.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · lingard.app

# add to Claude Code
claude mcp add --transport http app-lingard-vocab 'https://lingard.app/mcp'
Common questions

What is the Lingard Vocab MCP server?

Lingard Vocab is an MCP server listed in the public MCP registry as app.lingard/vocab. Build and enrich your Lingard vocabulary: topic collections, flashcards, translations, examples. This page covers its hosted endpoint (https://lingard.app/mcp).

Is the Lingard Vocab MCP server safe to use?

Lingard Vocab scores 82 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Lingard Vocab MCP server expose?

Lingard Vocab exposes 15 tools: search, fetch, lingard_get_learning_context, lingard_get_vocab_collection, lingard_get_collection_gaps, and 10 more. Their descriptions and schemas cost roughly 2,776 tokens of context every time the server is loaded.

Does the Lingard Vocab MCP server require authentication?

Yes. Lingard Vocab asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Lingard Vocab MCP server still maintained?

Lingard Vocab is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.