spongebob
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPONGEBOB_HOST | No | Interface to bind. Default: 127.0.0.1 | 127.0.0.1 |
| SPONGEBOB_PORT | No | Static server port. Falls forward to next free port. Default: 8787 | 8787 |
| SPONGEBOB_DATA_DIR | No | Where sites are stored. Default: ~/.local/share/spongebob | ~/.local/share/spongebob |
| SPONGEBOB_ACCESS_LOG | No | Set to any value to enable HTTP access logs. Default: off | |
| SPONGEBOB_PUBLIC_URL | No | Override when behind a port mapping or proxy. Default: derived |
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 |
|---|---|
| get_payload_schemaA | Return the JSON Schema for a site payload, plus a worked example. Call this before render_site the first time. The schema is permissive:
unknown keys are preserved and shown on the page, and an unknown section
|
| list_sitesA | List every site rendered on this machine, with its URL. |
| get_siteA | Inspect a rendered site: its sections, decks and learning path. Set include_payload to get the full stored JSON back — useful when you want to reason about existing content before patching it. |
| render_siteA | Render a full site and return its URL. Use this once per site. To change a site afterwards, prefer the add_* and update_* tools — they patch the stored payload in place, so you do not have to resend content that has not changed. |
| delete_siteA | Delete a rendered site and everything under it. |
| add_flashcard_deckB | Add a new flashcard deck to a site. Creates a flashcards section if the site does not have one yet. Cards are reviewed with an SM-2 spaced-repetition schedule in the browser. |
| add_flashcardsA | Append cards to an existing deck. Markdown works in front and back. |
| remove_flashcard_deckB | Delete a flashcard deck from a site. |
| add_resourcesA | Add prerequisite resources — YouTube videos, blog posts, courses, docs. Items are merged into the group whose label matches group_label, or a new group is created. YouTube URLs become embedded players. Mark internal wiki links with source="internal" so they are visually distinguished. |
| add_sectionA | Add a section to a site, creating its own page. An unknown |
| update_sectionA | Shallow-merge fields into an existing section. Whole list fields are replaced, not appended — to add to a list, prefer add_flashcards or add_resources. |
| remove_sectionB | Remove a section and delete its page. |
| reorder_sectionsA | Reorder sections. Ids you leave out keep their relative order at the end. |
| add_learning_path_stepB | Add a numbered step to the learning path on the landing page.
|
| set_learning_pathB | Replace the whole learning path. |
| update_metaC | Update the hero: title, subtitle, summary, repo links, setup command. |
| set_themeA | Change the site's accent colours and default light/dark mode. |
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 17 tools
Most tools cleanly map to a distinct resource and action, but add_flashcards vs add_flashcard_deck are easy to confuse from their names, and add_resources vs add_section both add content to a site. The descriptions mostly resolve the ambiguity, so an agent can usually pick correctly.
The toolset mostly follows a verb_noun snake_case pattern like list_sites, render_site, delete_site, and update_section. Minor inconsistencies exist such as add_flashcards using a plural object and set_learning_path/update_meta/set_theme using different update verbs, but the overall pattern is predictable.
At 17 tools, the server is at the heavy end of the ideal range. The count is understandable given the multiple content types, but some tools overlap in scope and the surface feels slightly larger than necessary.
Sites, sections, flashcard decks, learning paths, meta, and theme are all covered with reasonable create/read/update/delete workflows. Gaps are minor: there is no card-level update/remove or dedicated resource removal, though update_section and set_learning_path provide workarounds.