{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:57:32.206Z","url":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck.md","server":{"slug":"cloudcorprecords-flashdeck","name":"io.github.CloudCorpRecords/flashdeck","registryName":"io.github.CloudCorpRecords/flashdeck","description":"Flashcard decks and spaced repetition via AnkiConnect: study, decks, notes, and stats.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"ghcr-io-cloudcorprecords-flashdeck","type":"oci","identifier":"ghcr.io/cloudcorprecords/flashdeck","withdrawn":false,"url":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-05T05:16:50.595Z"},"score":{"total":40,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":40},{"date":"2026-11-04","total":39},{"date":"2026-11-03","total":39},{"date":"2026-11-02","total":38}]},"categories":[{"name":"Supply Chain Security","score":0,"verdict":"unverified","reasons":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"ecosystem_unsupported"}},{"code":"cve.inconclusive","args":{"reason":"no_sbom_attached"}},{"code":"installscript.inconclusive","args":{"reason":"no_install_concept"}},{"code":"dephealth.inconclusive","args":{"reason":"no_sbom_attached"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 2 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"2"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":70,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 831 tokens (~41/item across 20 items; 20 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"41","items":"20","tools":"20","tokens":"831","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":10,"verdict":"partial","reasons":["Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"3"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":75,"verdict":"fail","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"deleteNotes\" implies \"delete\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"0","tool":"deleteNotes","verb":"delete","declared":"none","annotated":"0","destructive":"2"}},{"code":"toolsafety.manipulation_clean","args":{"units":"20","judged":"20"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read."],"malware":[],"components":[{"slug":"reneturcios-flashdeck","type":"npm","identifier":"@reneturcios/flashdeck","withdrawn":false,"score":68,"current":false,"url":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/reneturcios-flashdeck","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/reneturcios-flashdeck.md"},{"slug":"ghcr-io-cloudcorprecords-flashdeck","type":"oci","identifier":"ghcr.io/cloudcorprecords/flashdeck","withdrawn":false,"score":40,"current":true,"url":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck.md"}],"facts":[{"label":"Registry","value":"oci"},{"label":"Package","value":"ghcr.io/cloudcorprecords/flashdeck"},{"label":"Version","value":"0.1.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"sync","title":null,"description":"Sync with AnkiWeb.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":13},{"name":"get_due_cards","title":null,"description":"Get due cards, optionally filtered by deck.","inputs":[{"name":"deck","type":"string","required":false,"description":"Deck name to filter due cards by."},{"name":"include_answer","type":"boolean","required":false,"description":"When true, include each card's answer (back side)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":51},{"name":"get_cards","title":null,"description":"Get cards filtered by state and deck.","inputs":[{"name":"deck","type":"string","required":false,"description":"Deck name to filter cards by."},{"name":"include_answer","type":"boolean","required":false,"description":"When true, include each card's answer (back side)."},{"name":"state","type":"string","required":false,"description":"Card state to filter by, such as new, learning, review, or due."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"present_card","title":null,"description":"Show a card's question/front.","inputs":[{"name":"card_id","type":"number","required":true,"description":"ID of the card to present."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":29},{"name":"rate_card","title":null,"description":"Rate a card (Again/Hard/Good/Easy) and schedule next review.","inputs":[{"name":"card_id","type":"number","required":true,"description":"ID of the card being rated."},{"name":"ease","type":"number","required":true,"description":"Ease rating: 1 (Again), 2 (Hard), 3 (Good), or 4 (Easy)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":69},{"name":"listDecks","title":null,"description":"List decks, optionally with per-deck statistics.","inputs":[{"name":"include_stats","type":"boolean","required":false,"description":"When true, include per-deck statistics in the result."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":38},{"name":"deckStats","title":null,"description":"Get statistics for one deck.","inputs":[{"name":"deck","type":"string","required":true,"description":"Name of the deck to get statistics for."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":29},{"name":"createDeck","title":null,"description":"Create a new deck with the given name, using :: for nested decks such as Parent::Child.","inputs":[{"name":"deck","type":"string","required":true,"description":"Name of the new deck (use :: for nested decks, such as Parent::Child)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":52},{"name":"addNote","title":null,"description":"Create one note.","inputs":[{"name":"deck_name","type":"string","required":true,"description":"Name of the deck to add the note to."},{"name":"fields","type":"object","required":true,"description":"Field values for the note, keyed by field name."},{"name":"model_name","type":"string","required":true,"description":"Note type (model) name, such as Basic."},{"name":"tags","type":"array","required":false,"description":"Tags to apply to the new note."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":78},{"name":"addNotes","title":null,"description":"Batch-create up to 100 notes.","inputs":[{"name":"deck_name","type":"string","required":true,"description":"Name of the deck to add the notes to."},{"name":"model_name","type":"string","required":true,"description":"Note type (model) name, such as Basic."},{"name":"notes","type":"array","required":true,"description":"Notes to create (up to 100), each an object of field values keyed by field name."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":77},{"name":"findNotes","title":null,"description":"Search notes with Anki query syntax.","inputs":[{"name":"query","type":"string","required":true,"description":"Search query in Anki query syntax, such as deck:Default or tag:marked."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":40},{"name":"notesInfo","title":null,"description":"Get details for notes.","inputs":[{"name":"notes","type":"array","required":true,"description":"IDs of the notes to get details for."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":28},{"name":"updateNoteFields","title":null,"description":"Update a note's fields.","inputs":[{"name":"fields","type":"object","required":true,"description":"Field values to set, keyed by field name."},{"name":"note_id","type":"number","required":true,"description":"ID of the note to update."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":45},{"name":"deleteNotes","title":null,"description":"Delete the specified notes from the collection; deletion is refused unless confirm is true.","inputs":[{"name":"confirm","type":"boolean","required":false,"description":"Must be true to confirm the deletion."},{"name":"notes","type":"array","required":true,"description":"IDs of the notes to delete."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":51},{"name":"getTags","title":null,"description":"Get all tags currently in the collection via AnkiConnect.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":20},{"name":"addTags","title":null,"description":"Add tags to notes.","inputs":[{"name":"notes","type":"array","required":true,"description":"IDs of the notes to tag."},{"name":"tags","type":"string","required":true,"description":"Space-separated tag names to add."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":39},{"name":"removeTags","title":null,"description":"Remove tags from notes.","inputs":[{"name":"notes","type":"array","required":true,"description":"IDs of the notes to remove tags from."},{"name":"tags","type":"string","required":true,"description":"Space-separated tag names to remove."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":41},{"name":"modelNames","title":null,"description":"List note types.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":12},{"name":"modelFieldNames","title":null,"description":"List field names for a note type.","inputs":[{"name":"model_name","type":"string","required":true,"description":"Note type (model) name, such as Basic."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":35},{"name":"collection_stats","title":null,"description":"Get aggregated collection statistics.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":13}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T05:16:50.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":"no_attestation","reasonLabel":"No attestation published","discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-11-02","recent":[{"id":"chg_01a1aa23-6c37-7483-a2d4-0dd916375bb0","kind":"score.total_changed","summary":"Trust score (39 → 40)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck#chg-chg_01a1aa23-6c37-7483-a2d4-0dd916375bb0"},{"id":"chg_01a19fe6-9491-73f6-8d68-885b15f58387","kind":"score.total_changed","summary":"Trust score (38 → 39)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck#chg-chg_01a19fe6-9491-73f6-8d68-885b15f58387"},{"id":"chg_01a19ea1-042d-7287-9f97-5ebf1a9f57f8","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck#chg-chg_01a19ea1-042d-7287-9f97-5ebf1a9f57f8"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck/changelog.json"},"links":{"html":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck","markdown":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck.md","changelogJson":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck/changelog.json","changelogRss":"https://verifymcp.io/servers/cloudcorprecords-flashdeck/ghcr-io-cloudcorprecords-flashdeck.xml","external":[{"label":"GitHub Container Registry","href":"https://ghcr.io/cloudcorprecords/flashdeck"},{"label":"Repository","href":"https://github.com/CloudCorpRecords/flashdeck"}]}}