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.

C
Emerging
74/100

anki-process-engine-live

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

Code Verified⚡ Live Monitored: not connected

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

Is this your MCP?

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.

// key findings
17 tools verified — handlers match their declared behaviour
9 read-only tools verified — handlers contain no write/delete/exec
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 1 credential: ANKI_CONNECT_API_KEY
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes17 tools

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_decks

List 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_deck

Create 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_models

List 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_fields

List 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_note

Create 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_notes

Create 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_notes

Search 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_info

Fetch 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_fields

Overwrite 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_notes

Permanently 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_tags

Add 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_tags

Remove 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_cards

Search 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_info

Fetch 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_reviews

Fetch 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_counts

Get 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_sync

Run 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

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
🔐 secretANKI_CONNECT_API_KEY(only needed if you've set an API key in AnkiConnect's config)
configANKI_CONNECT_TIMEOUT_MS(default 30000; anki_sync uses a fixed 5-minute timeout)
configANKI_CONNECT_URL(default http://127.0.0.1:8765)
// quality suggestions

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.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 2 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Score](https://m8ven.ai/badge/mcp/docplanet/anki-process-engine-live)](https://m8ven.ai/mcp/docplanet/anki-process-engine-live)
Shows your grade and updates automatically. Prefer no grade? Append ?variant=verified to the badge URL.
commit: bb1debff6d4848d7b16fc9e1640bdf0a2872c044
code hash: 6c11584b9b066e823ed25866f5d2ca115f13189871593a8d78f960e1e74f1673
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

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
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client