Jabbertoon cartoon studio

Free 2D cartoon studio: moves, characters and looks; check a cartoon; share links. No key.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
77%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,964Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (1.53% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "cartoon-studio": {
      "url": "https://jabbertoon.com/mcp"
    }
  }
}

Remote endpoints

https://jabbertoon.com/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_guide(topic)

Call this first. Returns one topic of Jabbertoon's guide as Markdown (under 20,000 characters): start (what it makes and the order of calls), cartoon (the JSON program: cast, scenes, lines, moves), text (the same cartoon as screenplay text), moves, characters, looks, voices, places, errors, limits. Units everywhere: x and y are shares of the stage (0 to 1, the ground at 0.92), times are seconds. Example: {"topic": "cartoon"}.

Input Schema

{
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "enum": [
        "start",
        "cartoon",
        "text",
        "moves",
        "characters",
        "looks",
        "voices",
        "places",
        "errors",
        "limits"
      ],
      "description": "Leave it out for start, which names the others."
    }
  },
  "additionalProperties": false
}
🟢list_moves(q)

Lists the ready-made moves a character can do (walk in, wave hello, hop, bow, slump, talk...): id, name, length in seconds, the bodies it works on (two legs, four, none), its settings with units, page and links. A does block plays one: {"op": "does", "who": "dog", "behaviour": "c4c:beh:wave_hello"}. q keeps the moves whose words match or that do what a word means (dance finds Groove, scared finds Cower). Example: {"q": "wave"}.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 100,
      "description": "Words to look for (\"wave\", \"dance\"); leave it out for every move."
    }
  },
  "additionalProperties": false
}
🟢list_characters

Lists the six ready-made characters (person, kid, dog, cat, bird, monster): legs, views, the colour slots a cast entry's look.colors paints on each (a dog's fur is skin), options, page and links; the voices a line can use; and cartoon_example, a whole talking cartoon to copy. Call it to write a cast: {"dog": {"name": "Biscuit", "look": {"template": "dog", "colors": {"skin": "#8d6e63"}}, "voice": "am_puck"}}.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢list_looks

Lists the six art styles a character can be drawn in (flat, outlined, soft, storybook, bold, crayon), each with its page and a studio link, and the three body shapes (classic, big head, tall). A cast entry sets them as look.style and look.shape: {"look": {"template": "cat", "style": "crayon", "shape": "bighead"}}.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢get_move(move)

Returns one ready-made move: its block program as JSON, the same program as screenplay text, its length in seconds, what it works on, its settings with units, its page and links. Name it by id (c4c:beh:wave_hello), short name (wave_hello) or page slug. To write your own move, start from one, change it, then validate it. Example: {"move": "wave_hello"}.

Input Schema

{
  "type": "object",
  "properties": {
    "move": {
      "type": "string",
      "maxLength": 100,
      "description": "Its id, short name or page slug, as list_moves gives them."
    }
  },
  "required": [
    "move"
  ],
  "additionalProperties": false
}
🟢validate(cartoon, program, pack, character, file, ...)

Checks a cartoon, with the studio's own checks, before anyone sees it. Give one of cartoon, program, pack, character or file. Returns errors (it will not play as written: also a character or background the site lacks) and warnings, each {code, where, says, fix, url}, with did_you_mean and an RFC 6902 patch when certain; issues a viewer would see (off stage, overlapping, an empty stage, a line cut off) with a summary of who is where and says what when (seconds; x as a share of the stage); and, when ok, the canonical program and a link. repair: true also returns the program with every certain patch applied. Nothing you send is kept. Example: list_characters' cartoon_example.

Input Schema

{
  "type": "object",
  "properties": {
    "cartoon": {
      "type": [
        "object",
        "string"
      ],
      "description": "A cartoon: its program, a cartoon file {cast, program}, a project file, or its screenplay text (read only on your own computer)."
    },
    "program": {
      "type": "object",
      "description": "A move (get_move gives ready-made ones) or a scene program."
    },
    "pack": {
      "type": "object",
      "description": "A whole pack: its manifest and its content."
    },
    "character": {
      "type": "object",
      "description": "Your own character, {\"name\", \"content\"}, or a character pack."
    },
    "file": {
      "type": "string",
      "maxLength": 255,
      "description": "On your own computer only: a .json or .txt file's name in the output folder."
    },
    "repair": {
      "type": "boolean",
      "description": "true: also return repaired: the program with every certain patch applied, and the changes."
    }
  },
  "minProperties": 1,
  "additionalProperties": false
}
🟢share_link(cartoon, program, character, file)

Turns a cartoon, a scene, a move or a character into a jabbertoon.com link: a move opens in the block editor, the rest in the studio. It all travels after the #: nothing is uploaded or kept. All but a character's end with &from=ai (the page says an AI helper wrote it). One with errors gets them instead. Give one of cartoon, program, character or file. Example: {"program": {"v": 1, "kind": "behaviour", "scripts": [{"body": [{"op": "hop"}]}]}}.

Input Schema

{
  "type": "object",
  "properties": {
    "cartoon": {
      "type": [
        "object",
        "string"
      ],
      "description": "Its program, a cartoon file {cast, places?, program}, or its screenplay text (read on your own computer only)."
    },
    "program": {
      "type": "object",
      "description": "A move (kind \"behaviour\"), a scene or a cartoon program."
    },
    "character": {
      "type": "object",
      "description": "Your own character, {\"name\", \"content\"}, or a character pack."
    },
    "file": {
      "type": "string",
      "maxLength": 255,
      "description": "On your own computer only: a file's name in the output folder."
    }
  },
  "minProperties": 1,
  "maxProperties": 1,
  "additionalProperties": false
}
🟡report_problem(kind, tool, code, where, item, ...)

Tells the people who make Jabbertoon something is wrong: a wrong answer, a check that refused a good cartoon or passed a bad one, a move that looks wrong, a link that does not open, wrong docs, or something missing. Unlike the other tools, it keeps what you send: the report (kind, tool, code, where, item, note) is saved for a person to read. Never put the cartoon, a name, an address or anything about the person you help in it. Example: {"kind": "validator_wrong", "tool": "validate", "code": "op_unknown", "note": "say was refused in a cartoon"}.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "wrong_answer",
        "validator_wrong",
        "move_looks_wrong",
        "link_does_not_open",
        "docs_wrong",
        "missing",
        "other"
      ],
      "description": "What kind of problem it is."
    },
    "tool": {
      "type": "string",
      "maxLength": 64,
      "description": "The tool whose answer was wrong, e.g. validate."
    },
    "code": {
      "type": "string",
      "maxLength": 64,
      "description": "The error code it gave, e.g. op_unknown."
    },
    "where": {
      "type": "string",
      "maxLength": 200,
      "description": "Where it pointed, e.g. scripts[0].body[2]."
    },
    "item": {
      "type": "string",
      "maxLength": 200,
      "description": "What it is about: a move, character or look (c4c:beh:bow, dog, crayon), or a page."
    },
    "note": {
      "type": "string",
      "maxLength": 500,
      "description": "What was wrong, in a sentence or two. No cartoon, names or personal details."
    },
    "cli_version": {
      "type": "string",
      "maxLength": 40,
      "description": "Set by the jabbertoon tool."
    },
    "os": {
      "type": "string",
      "maxLength": 40,
      "description": "Set by the jabbertoon tool: win32, darwin or linux."
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools