Anki Card Manager (acm)
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ACM_HOME | No | Path to the ACM home directory where data, indices, queues and backups are stored. | ~/.acm |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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:
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
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:
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:
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.
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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Most tools have distinct purposes, but there is minor overlap between acm_annotate, acm_auto_classify, and acm_ingest regarding classification. Also, acm_audit and acm_reorganize both involve duplicate detection. Overall, an agent can generally distinguish them.
All tools share the 'acm_' prefix and most use verb-based names (e.g., acm_annotate, acm_ingest). However, a few are nouns (acm_stats, acm_taxonomy), breaking the verb_noun pattern. Still, naming is largely predictable.
13 tools is well-suited for an Anki card manager. Each tool addresses a specific stage in the workflow (annotate, classify, ingest, review, sync, etc.) without being excessive or insufficient.
The tool set covers the core lifecycle: candidate annotation, classification, ingestion, review, sync, and audit. Minor gaps exist, such as lacking a direct card edit tool (though acm_resolve provides correction). Overall, the surface is comprehensive for the domain.