Skip to main content
Glama

Add to my library

add

Add something. what: library (a title; pass external_id from lookup_item for an exact match), list_entry (a title onto a list, creating the list if new), list (a new list), event (a finish or rewatch with a date), pin (a title pinned to their page, with a prompt), episode (episodes of a show watched), challenge (one of their challenges: name, starts_on, ends_on, prompts), challenge_pick (a title for a challenge prompt: challenge, prompt or slot_id, media_type, title or item_id), shelf (a shelf of their own for anything the kinds don't cover: name, template?, noun?, visibility?), shelf_entry (an entry on a shelf: shelf, title, creator?, status?, rating?, notes?, started?, finished?, image_url?), shelf_session (a session on a shelf entry: entry_id or shelf and title, day?, hours?, note?). describe topic collections shows the arguments for each.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "what": "<what>"
    },
    "name": "add"
  }
}

Input Schema

NameRequiredDescriptionDefault
dayNoFor shelf_session: YYYY-MM-DD
kindNoFor challenge: a media type, or any
lineNo
listNoFor list_entry: the list's name
nameNoFor list: its name
noteNo
nounNoFor shelf: one entry, singular ("perfume")
whatYes
yearNo
hoursNoFor shelf_session: how long
notesNo
shelfNoFor shelf_entry and shelf_session: the shelf's name
titleNo
formatNo
promptNo
ratingNo
seasonNo
statusNoFor shelf_entry: want, active, done, dropped, or the shelf's word
targetNoFor challenge: a count to reach
creatorNo
ends_onNoFor challenge: last day, YYYY-MM-DD
episodeNo
item_idNo
promptsNoFor challenge: its prompts, in order
slot_idNoFor challenge_pick: the prompt's id (me.challenge_slots), instead of prompt
startedNoFor shelf_entry: YYYY-MM-DD
throughNo
entry_idNoFor shelf_session: the entry's id (me.shelf_entries)
finishedNoFor shelf_entry: YYYY-MM-DD
platformNo
templateNoFor shelf: a starting point for its words and fields
challengeNoFor challenge_pick: the challenge's name
image_urlNoFor shelf_entry: a public https link to a picture
starts_onNoFor challenge: first day, YYYY-MM-DD
event_dateNo
event_typeNo
media_typeNo
visibilityNoFor shelf: public (on their page) or private
descriptionNo
external_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / media_type / enum
      Previous value: -[
      -  "book",
      -  "movie",
      -  "album",
      -  "show",
      -  "anime",
      -  "podcast",
      -  "game",
      -  "manga",
      -  "comic"
      -]New value: +[
      +  "book",
      +  "movie",
      +  "album",
      +  "show",
      +  "anime",
      +  "podcast",
      +  "game",
      +  "manga",
      +  "comic",
      +  "boardgame"
      +]
  2. Changed12 schema fields changed
    • addedInput schema / properties / day
      Added value: +{
      +  "description": "For shelf_session: YYYY-MM-DD",
      +  "type": "string"
      +}
    • addedInput schema / properties / entry_id
      Added value: +{
      +  "description": "For shelf_session: the entry's id (me.shelf_entries)",
      +  "type": "string"
      +}
    • addedInput schema / properties / finished
      Added value: +{
      +  "description": "For shelf_entry: YYYY-MM-DD",
      +  "type": "string"
      +}
    • addedInput schema / properties / hours
      Added value: +{
      +  "description": "For shelf_session: how long",
      +  "type": "number"
      +}
    • addedInput schema / properties / image_url
      Added value: +{
      +  "description": "For shelf_entry: a public https link to a picture",
      +  "type": "string"
      +}
    • addedInput schema / properties / noun
      Added value: +{
      +  "description": "For shelf: one entry, singular (\"perfume\")",
      +  "type": "string"
      +}
    • addedInput schema / properties / shelf
      Added value: +{
      +  "description": "For shelf_entry and shelf_session: the shelf's name",
      +  "type": "string"
      +}
    • addedInput schema / properties / started
      Added value: +{
      +  "description": "For shelf_entry: YYYY-MM-DD",
      +  "type": "string"
      +}
    • addedInput schema / properties / status
      Added value: +{
      +  "description": "For shelf_entry: want, active, done, dropped, or the shelf's word",
      +  "type": "string"
      +}
    • addedInput schema / properties / template
      Added value: +{
      +  "description": "For shelf: a starting point for its words and fields",
      +  "enum": [
      +    "board-games",
      +    "tabletop-rpgs",
      +    "comics",
      +    "lego",
      +    "puzzles",
      +    "theater",
      +    "concerts",
      +    "places",
      +    "recipes",
      +    "plants",
      +    "collectibles"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / visibility
      Added value: +{
      +  "description": "For shelf: public (on their page) or private",
      +  "enum": [
      +    "public",
      +    "private"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / what / enum
      Previous value: -[
      -  "library",
      -  "list_entry",
      -  "list",
      -  "event",
      -  "pin",
      -  "episode",
      -  "challenge",
      -  "challenge_pick"
      -]New value: +[
      +  "library",
      +  "list_entry",
      +  "list",
      +  "event",
      +  "pin",
      +  "episode",
      +  "challenge",
      +  "challenge_pick",
      +  "shelf",
      +  "shelf_entry",
      +  "shelf_session"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / media_type / enum
      Previous value: -[
      -  "book",
      -  "movie",
      -  "album",
      -  "show",
      -  "anime",
      -  "podcast",
      -  "game",
      -  "manga"
      -]New value: +[
      +  "book",
      +  "movie",
      +  "album",
      +  "show",
      +  "anime",
      +  "podcast",
      +  "game",
      +  "manga",
      +  "comic"
      +]
  4. Changed8 schema fields changed
    • addedInput schema / properties / challenge
      Added value: +{
      +  "description": "For challenge_pick: the challenge's name",
      +  "type": "string"
      +}
    • addedInput schema / properties / ends_on
      Added value: +{
      +  "description": "For challenge: last day, YYYY-MM-DD",
      +  "type": "string"
      +}
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "For challenge: a media type, or any",
      +  "type": "string"
      +}
    • addedInput schema / properties / prompts
      Added value: +{
      +  "description": "For challenge: its prompts, in order",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / slot_id
      Added value: +{
      +  "description": "For challenge_pick: the prompt's id (me.challenge_slots), instead of prompt",
      +  "type": "string"
      +}
    • addedInput schema / properties / starts_on
      Added value: +{
      +  "description": "For challenge: first day, YYYY-MM-DD",
      +  "type": "string"
      +}
    • addedInput schema / properties / target
      Added value: +{
      +  "description": "For challenge: a count to reach",
      +  "type": "number"
      +}
    • changedInput schema / properties / what / enum
      Previous value: -[
      -  "library",
      -  "list_entry",
      -  "list",
      -  "event",
      -  "pin",
      -  "episode"
      -]New value: +[
      +  "library",
      +  "list_entry",
      +  "list",
      +  "event",
      +  "pin",
      +  "episode",
      +  "challenge",
      +  "challenge_pick"
      +]
  5. Added

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the description only needs to add context. It does disclose one real side effect ("creating the list if new") and where to source external_id (lookup_item), but says nothing about duplicate handling, whether repeat calls stack duplicates (non-idempotent), or what happens on partial failures across eleven modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but zero fluff: a single front-loaded enumeration where every clause carries a distinct kind. It is hard to scan as one run-on sentence and could be broken into a list, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an eleven-mode, 40-parameter mutation tool with no output schema, the description covers the shape of each mode but not the full parameter-to-mode mapping and omits conflict/duplicate behavior. The pointer to the `describe` tool partially compensates, leaving it adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 40 parameters and 50% schema coverage, baseline is 3. The description groups parameters by kind and adds genuinely new meaning for `external_id` (pass the id from lookup_item for an exact match) and the challenge_pick choice of prompt vs slot_id, but much of the parenthetical text merely restates what the schema descriptions already say ("For shelf_entry: YYYY-MM-DD"), and many parameters such as line, note, year, platform, event_date remain unexplained anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (add) and enumerates the eleven concrete kinds of things that can be added, each with a short gloss ("list (a new list)", "event (a finish or rewatch with a date)"). An agent can tell what the tool creates, but it gets no differentiation from siblings that appear to do the same job (add_to_list, add_to_shelf, create_list, create_shelf, pin_to_page, add_item).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Per-kind glosses imply when each `what` value applies, and the final sentence points to `describe topic collections` for the argument list. However, there is no statement about when to prefer this tool over the overlapping dedicated siblings, and no exclusions or prerequisites for mutations like creating a list or pinning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources