# deckbase

Turn any study material into flashcards by chatting with AI. Paste notes, URLs, or upload PDFs — Deckbase MCP generates question-and-answer flashcards with spaced repetition scheduling. Full Anki imp…

## Quick Start

```bash
# Connect this server (installs CLI if needed)
npx -y @smithery/cli@latest mcp add hawk20605/deckbase

# Browse available tools
npx -y @smithery/cli@latest tool list hawk20605/deckbase

# Get full schema for a tool
npx -y @smithery/cli@latest tool get hawk20605/deckbase list_docs

# Call a tool
npx -y @smithery/cli@latest tool call hawk20605/deckbase list_docs '{}'
```

## Direct MCP Connection

Endpoint: `https://deckbase--hawk20605.run.tools`

**Required config:**
- `Authorization` (query) — Authorization Token

## Tools (35)

- `list_docs` — List Markdown files in docs/public/. Only docs in that folder are exposed. Use list_docs to see available filenames, th…
- `read_doc` — Read a doc from docs/public/ by path. Only docs in that folder are served. Use list_docs first to see available filenam…
- `list_template_block_types` — List all Deckbase template block types (keys, numeric ids, labels, category). Use this so the user can choose multiple …
- `list_block_schemas` — Return JSON structure for each block type: typical blocksSnapshot entry, matching value entry, and **configJson** field…
- `list_elevenlabs_voices` — List ElevenLabs TTS voice ids (group, label, id, gender, language) from the Deckbase curated catalog for generate_audio…
- `list_ai_image_models` — List allowed AI text-to-image models for generate_image_for_card model_id (id, label, credits) plus defaults. Use this …
- `list_decks` — List the user's flashcard decks (deckId, title, description, defaultTemplateId, iconEmoji). iconEmoji is optional Unico…
- `list_templates` — List the user's card templates (templateId, name, description). Requires hosted MCP with API key. Use when create_card …
- `get_template_schema` — After the user selects a template, returns exact JSON for that template: each blockId, type, label, configJson, categor…
- `create_deck` — Create a new flashcard deck for the user. Requires hosted MCP with API key. Returns deckId and icon fields for create_c…
- `update_deck` — Update an existing deck’s title, description, default template id, and/or deck icon emoji. Requires hosted MCP with API…
- `update_card` — Update an existing card’s content. Requires hosted MCP with API key. **Merge:** `front` / `block_text` (only listed blo…
- `bulk_update_cards` — **Merge-only** bulk updates (max 50 cards). **Does not add new blocks** — use **bulk_append_blocks** first. **Does not …
- `bulk_append_blocks` — Insert **new empty blocks** on many cards (max 50). **Layout-only** — no `front` / `block_text` (use **bulk_update_card…
- `bulk_move_block` — Move **one existing block** on **many** cards (max 50) or flip its **front/back** face. **Layout-only** — no `front` / …
- `normalize_cards_to_template` — Rewrite each card’s layout + values to match the **current template** (block ids, order, side). Migrates content by lab…
- `validate_deck_layout` — Non-destructive report: missing/extra blocks vs template, side/order issues, duplicate label groups across cards. Hoste…
- `bulk_set_block_side` — Set **front**/**back** for one **move_block_id** on many **card_ids** (explicit; same as bulk_move_block + keep_positio…
- `bulk_set_main_sub_blocks` — Set **main_block_id** and/or **sub_block_id** (deck preview / study sub line) on many cards. **Ids:** pass **main_block…
- `copy_template_blocks_to_cards` — Append **copies** of template blocks (new UUIDs per card) via **template_block_ids** or **block_labels**. Supports **in…
- `remove_card_fields` — Clear content for specific blocks on **one** card (text empty; quiz selections cleared; image/audio media cleared). **S…
- `bulk_remove_card_fields` — Clear the **same** blockIds on **many** cards in one deck. **Separate from bulk_update_cards** — merge and field remova…
- `delete_card` — Soft-delete one flashcard (sets is_deleted; same as app trash). **DESTRUCTIVE.** Requires hosted MCP. **You MUST ask th…
- `delete_cards` — Soft-delete multiple cards in one deck (same rules as delete_card). **Ask the user to confirm the exact card IDs before…
- `create_card` — Create a new card from a template’s block layout. Requires hosted MCP with API key. Required: deckId. If templateId is …
- `create_cards` — Bulk create cards in one deck using the same template resolution and validation as create_card (deck default or explici…
- `generate_audio_for_card` — Generate ElevenLabs TTS audio and attach it to an existing card’s audio block (updates values.mediaIds). Requires hoste…
- `list_image_subject_prompts` — List subject starter presets for AI image generation (unified_id, label, prompt, tags) plus the user’s saved subjects f…
- `list_image_style_prompts` — List curated style presets for AI image generation (id, label, description, snippet, tags). Same catalog as the web app…
- `generate_image_for_card` — Generate an AI image (fal.ai) and attach it to an existing card’s image block — **web wizard parity**: optional source_…
- `export_deck` — Export a deck (metadata + cards). Requires hosted MCP with API key. **file_format** (default json): json = full payload…
- `export_cards` — Export **only** the given cards in a deck (same per-card JSON shape as **export_deck**, plus `notFound` / `skippedWrong…
- `list_cards` — List cards in a deck with **values** and (when export_type is full) **blocksSnapshot** per card — same per-card shape a…
- `create_template` — Create a flashcard template (block layout for new cards). Requires hosted MCP with API key. Call **list_template_block_…
- `update_template` — Update an existing template’s name, description, block layout (blocks or block_types), main/sub block ids, and/or defau…

```bash
# Get full input/output schema for a tool
npx -y @smithery/cli@latest tool get hawk20605/deckbase <tool-name>
```
