anki-process-engine-live (docplanet/anki-process-engine-live) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 17 tools. No publisher has claimed this listing.
Turn course material into Anki cloze cards. A method, not a program — three markdown files any agent or person can follow.
Emerging. No concerning findings. Grades remain capped until the project builds reputation through adoption. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
docplanet
Source: github_repo_search
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
anki_list_decksList every deck in the collection with its deck ID. Returns: {"total": number, "count": number, "items": [{"name": string, "id": number}], "truncated"?: true} Use when: discovering available deck names before creating a note or scoping a search query.
anki_create_deckCreate a new deck (or subdeck, using "::" separators). Creating a deck that already exists is a no-op and returns its existing ID. Returns: {"deck_id": number} Use when: setting up a new deck/subdeck before adding notes to it.
anki_list_modelsList every note type (model) name in the collection, e.g. "Basic", "Cloze". Returns: {"total": number, "count": number, "items": string[], "truncated"?: true} Use when: discovering which note types are available before calling anki_get_model_fields or anki_add_note.
anki_get_model_fieldsList the field names for a given note type, in order. Returns: {"fields": string[]} Use when: you need the exact field names to pass to anki_add_note's "fields" object (e.g. Cloze uses "Text", Basic uses "Front"/"Back"). Field names are case-sensitive.
anki_add_noteCreate a single new note in Anki. Returns: {"note_id": number} on success. Use when: adding one flashcard. For more than a couple of notes, use anki_add_notes (bulk) instead — one call for the whole batch. Errors if: the first field is empty, the deck/model name doesn't exist (check with anki_list…
anki_add_notesCreate up to 500 notes in a single call. Returns: {"created_count": number, "note_ids": (number | null)[], "failed_indices": number[]} — note_ids is index-aligned with the input; null means that note failed (most commonly a duplicate, or a bad deck/model/field name). Use when: importing a batch of…
anki_find_notesSearch for notes using Anki's search syntax and return matching note IDs. Returns: {"total": number, "count": number, "items": number[], "truncated"?: true} — note IDs; feed into anki_get_notes_info for field/tag details. Use when: locating notes by deck, tag, or field content before reading or ed…
anki_get_notes_infoFetch full field content, tags, and note type for a list of note IDs. Returns: {"total", "count", "items": [{"note_id", "model_name", "tags": string[], "fields": {fieldName: value}, "card_ids": number[]}], "missing_note_ids"?: number[], "truncated"?} — IDs that no longer exist (deleted since they w…
anki_update_note_fieldsOverwrite one or more field values on an existing note. Tags and note type are unaffected. Field names are validated against the note's model before writing, so a typo'd field name errors instead of silently changing nothing. Returns: {"success": true, "updated_fields": string[]} on success. Use w…
anki_delete_notesPermanently delete one or more notes (and all their cards). This cannot be undone from here. Returns: {"deleted_count": number, "not_found_note_ids"?: number[]} — existence is checked before deleting, so deleted_count reflects notes that actually existed; stale IDs are reported in not_found_note_id…
anki_add_tagsAdd one or more tags to a set of notes without touching existing tags. Returns: {"tagged_count": number, "not_found_note_ids"?: number[]} — stale/nonexistent IDs are reported instead of silently skipped. Use when: flagging notes for later review (e.g. tag "fix-me"), or applying week/subject tags i…
anki_remove_tagsRemove one or more tags from a set of notes. Returns: {"untagged_count": number, "not_found_note_ids"?: number[]} — stale/nonexistent IDs are reported instead of silently skipped. Use when: clearing a "fix-me" flag once a card has been corrected.
anki_find_cardsSearch for cards (not notes) using Anki's search syntax and return matching card IDs. Returns: {"total", "count", "items": number[], "truncated"?} — card IDs; feed into anki_get_cards_info or anki_get_card_reviews. Use when: you need per-card data (lapses, ease, review history) rather than note fi…
anki_get_cards_infoFetch per-card scheduling and performance data: lapses, ease factor, interval, and deck/model. Returns: {"total", "count", "items": [{"card_id", "note_id", "deck_name", "model_name", "lapses", "ease_factor", "interval_days", "reps", "queue", "card_type", "due"}], "missing_card_ids"?: number[], "tru…
anki_get_card_reviewsFetch the most recent reviews for a set of cards: each time the card was shown and what button was pressed. Returns: {"total", "count", "items": [{"card_id": number, "total_reviews": number, "reviews": [{"reviewed_at_ms", "ease" (1=Again,2=Hard,3=Good,4=Easy), "new_interval_days", "previous_interva…
anki_get_review_countsGet the number of reviews performed per day, across the whole collection. Returns: {"total", "count", "items": [{"date": "YYYY-MM-DD", "review_count": number}], "truncated"?} — review_count is total review events (a card reviewed 5 times counts 5, not unique cards), and days with zero reviews are O…
anki_syncRun an AnkiWeb sync from the running Anki instance (same as clicking the sync button). Returns: {"success": true} after the sync completes. This BLOCKS until the sync finishes — it can take a while for large collections (up to a 5-minute timeout). Use when: you want changes made via this MCP serve…
ANKI_CONNECT_API_KEY(only needed if you've set an API key in AnkiConnect's config)ANKI_CONNECT_TIMEOUT_MS(default 30000; anki_sync uses a fixed 5-minute timeout)ANKI_CONNECT_URL(default http://127.0.0.1:8765)Tool inputs are validated
13/17 tool handlers declare input schemas (76%)
Declare an inputSchema with zod/joi/yup on every tool definition.
Tests exist
No test files found
Add tests that exercise each declared tool.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/docplanet/anki-process-engine-live)?variant=verified to the badge URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check