Skip to main content
Glama
Eduvent

Anki Card Manager (acm)

by Eduvent

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ACM_HOMENoPath to the ACM home directory where data, indices, queues and backups are stored.~/.acm

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
acm_ingestB

Procesa tarjetas candidatas: normaliza, clasifica, deduplica, decide y persiste.

Args: cards_json: JSON array de tarjetas. Cada tarjeta tiene: - front (str, requerido): Pregunta de la tarjeta - back (str, requerido): Respuesta de la tarjeta - source (str, requerido): Origen ("claude", "chatgpt", "manual") - suggested_tags (list[str], opcional): Tags en formato "category::value" - note_type (str, opcional): Tipo de nota Anki (default "Basic") on_exact_match: qué hacer si el contenido ya existe (mismo fingerprint): "update" (default, actualiza el registro existente — idempotente), "skip" (no toca el existente) o "new" (crea uno nuevo). Evita duplicar el registro al re-ingerir (reporte §7).

Returns: JSON con la decisión/persistencia por tarjeta (insert/possible_duplicate/ reject/updated/skipped).

acm_annotateA

Anota tarjetas candidatas SIN subir ni persistir nada (E3-1 / RF-A2).

Es el corazón del flujo "crear → revisar → subir": Claude propone cards y llama a esto; cada card vuelve anotada para que muestres al usuario una lista YA deduplicada y clasificada. No escribe en el registro ni en Anki.

Por cada card devuelve:

  • es_duplicado (bool) + matches (id, deck, score, razón) cross-deck

  • mazo_sugerido, tags_sugeridos (alta confianza), tags_ambiguos

  • confianza (high/medium/low), flags_calidad, material_origen

Args: cards_json: JSON array. Cada card: front, back, source, y opcionales suggested_tags ("category::value"), note_type, profile, deck, material_origen (PDF/sección de origen). verbose: False (default) → matches compactos (top-2) para economía de tokens (§9); True → detalle completo de cada match.

acm_reviewA

Lista tarjetas marcadas como possible_duplicate pendientes de revisión.

Returns: JSON con la lista de tarjetas pendientes, cada una con id, front, vendor, topic y fecha.

acm_resolveA

Resuelve un item de la cola de revisión con UNA sola acción (E5-1 / E5-3).

Funciona en CUALQUIER estado (id completo o prefijo), no solo en la cola activa (§6). La cola incluye duplicados posibles y clasificación ambigua.

Args: record_id: ID completo o prefijo del registro. action: "approve" (→ aprobada), "reject" (→ descartada), "purge" (borrado físico del registro) o "correct". front, back: contenido corregido (requeridos para action="correct"). tags: tags sugeridos para la corrección (opcional, "category::value"). note_type, deck: corrección opcional de modelo/mazo (§5).

Para "correct", la card corregida REINGRESA al pipeline: se re-deduplica y re-clasifica automáticamente (E5-3).

acm_syncA

Empuja las tarjetas aprobadas pendientes a Anki, ruteadas e idempotente.

Re-correr no recrea: las subidas pasan a estado 'subida' y se saltan (E4-3). Anki cerrado → las aprobadas quedan encoladas y suben al reconectar; con export_tsv (ruta) además se exportan a TSV (E4-5). dry_run=True muestra el plan sin tocar Anki (E9-1). Antes de subir hace backup del registro (E9-3) y devuelve un batch_id deshacible con acm_undo (E9-2).

Returns: JSON con synced (id/deck/note_id), errores, batch_id y backup.

acm_undoA

Deshace un lote por id (E9-2 / §5). Detecta el tipo automáticamente:

  • lote de SYNC (de acm_sync): borra esas notas de Anki y revierte las tarjetas a 'aprobada'.

  • lote de INGEST (de acm_ingest): borra del registro las tarjetas creadas en esa ingesta (no toca las ya subidas a Anki).

Mirá los lotes disponibles (sync_batches / ingest_batches) con acm_stats.

Args: batch_id: id del lote (lo devuelven acm_sync / acm_ingest y los lista acm_stats).

acm_auditA

Audita un deck de Anki — una sola tool para tres modos (E6-2).

Modos:

  • "duplicates": clusters de tarjetas repetidas (dedup local kNN cross-deck).

  • "recent": audita lo creado en Anki en los últimos days días (dups + tags faltantes). Para la pasada de "lo que hiciste a mano" (RF-F1).

  • "untagged": notas sin tags de taxonomía completos; auto-taggea las de alta confianza y devuelve solo las ambiguas, paginadas.

Args: deck: deck raíz a auditar. mode: "duplicates" | "recent" | "untagged". profile: perfil de taxonomía (default: el de settings). include_subdecks: incluir subdecks (default True). days: ventana temporal para mode="recent". include_registry: incluir el registro local en mode="duplicates". limit, offset: paginación para mode="untagged".

acm_reorganizeA

E7-3: reorganización masiva (one-shot) de un mazo — re-taggea y reporta dups.

dry_run=True (default) previsualiza SIN tocar nada (E9-1). Al aplicar, hace backup del registro (E9-3), auto-taggea en Anki las notas de alta confianza y reporta los duplicados para revisión (NUNCA fusiona; decisión #2).

Args: deck: deck raíz a reorganizar. profile, include_subdecks: comunes. dry_run: True previsualiza; False aplica (con backup previo).

acm_find_similar_cardC

Busca tarjetas similares a un query usando el motor local de duplicados.

acm_statsA

Muestra estadísticas del registro de tarjetas procesadas.

Returns: JSON con conteo por acción (insert, possible_duplicate, reject) y total.

acm_taxonomyA

Consulta o edita la taxonomía de tags (E6-2: show + add en una tool).

Args: action: "show" (default, lista categorías y valores) o "add". category: categoría del tag (requerido para action="add"). value: valor a agregar (requerido para action="add"); crea category::value. profile: perfil cuya taxonomía consultar/editar.

Returns: JSON con la taxonomía (show) o el resultado de la operación (add).

acm_auto_classifyA

Clasifica tarjetas determinísticamente sin usar LLM. Retorna las que se pudieron resolver y las ambiguas que necesitan intervención del agente.

Flujo token-eficiente: llama esto primero. Solo las cards en "needs_review" requieren que el agente las analice y llame acm_apply_tags.

Args: cards_json: JSON array de tarjetas. Cada tarjeta tiene: - front (str): Pregunta - back (str): Respuesta - source (str, opcional): Origen (default "manual") - suggested_tags (list[str], opcional): Tags existentes "category::value" - note_type (str, opcional): Tipo de nota Anki (default "Basic")

Returns: JSON con: - classified: tarjetas resueltas con alta confianza (no requieren tokens) - needs_review: tarjetas ambiguas con contexto para que el agente decida - taxonomy: categorías válidas (solo si hay items en needs_review) - summary: conteos

acm_apply_tagsA

Aplica tags decididos por el agente o humano a tarjetas.

Úsalo después de acm_auto_classify para las tarjetas en needs_review. Puede aplicar tags tanto a tarjetas nuevas (por índice del batch) como a notas existentes en Anki (por note_id).

Args: assignments_json: JSON array de asignaciones. Cada una tiene: - tags (list[str]): Tags en formato "category::value" Y uno de: - note_id (int): Para notas ya existentes en Anki - card (dict): Para tarjetas nuevas, con front/back/source file: Ruta opcional a un archivo JSON/YAML con las asignaciones.

Returns: JSON con resultados: tags aplicados, errores de validación, tarjetas procesadas vía el pipeline normal de ingest.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Eduvent/Anki-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server