Skip to main content
Glama

Jabbertoon cartoon studio

Check a Jabbertoon cartoon, scene, move, pack or character

validate
Read-only

Checks a cartoon, with the editor'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

NameRequiredDescriptionDefault
fileNoOn your own computer only: a .json or .txt file's name in the output folder.
packNoA whole pack: its manifest and its content.
repairNotrue: also return repaired: the program with every certain patch applied, and the changes.
cartoonNoA cartoon: its program, a cartoon file {cast, program}, a project file, or its screenplay text (read only on your own computer).
programNoA move (get_move gives ready-made ones) or a scene program.
characterNoYour own character, {"name", "content"}, or a character pack.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • removedInput schema / maxProperties
      Removed value: -1
    • changedInput schema / properties / cartoon / description
      Previous value: -"A saved cartoon file: {\"cast\": {\"<id>\": {\"name\", \"look\": {\"template\", \"style\", \"shape\", \"colors\"}, \"at\": {\"x\", \"y\", \"h\", \"facing\"}}}, \"places\"?, \"program\"}, where program is a kind \"cartoon\" program. list_characters returns a whole one (cartoon_example)."New value: +"A cartoon: its program, a cartoon file {cast, program}, a project file, or its screenplay text (read only on your own computer)."
    • changedInput schema / properties / cartoon / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "string"
      +]
    • changedInput schema / properties / character / description
      Previous value: -"A character of your own, as share_link takes it: {\"name\": \"...\", \"content\": {...}}, the content of a character pack (tree, legs, kind, height, footprint, ...), or a whole character pack. Its tree is checked part by part. The format: https://jabbertoon.com/docs/packs/"New value: +"Your own character, {\"name\", \"content\"}, or a character pack."
    • addedInput schema / properties / file
      Added value: +{
      +  "description": "On your own computer only: a .json or .txt file's name in the output folder.",
      +  "maxLength": 255,
      +  "type": "string"
      +}
    • changedInput schema / properties / pack / description
      Previous value: -"A whole pack: the manifest (pack, id, type, version, name, author, license, remixable, derived_from, content_hash) and its content. The format: https://jabbertoon.com/docs/packs/"New value: +"A whole pack: its manifest and its content."
    • changedInput schema / properties / program / description
      Previous value: -"A block program: {\"v\": 1, \"kind\": \"behaviour\" | \"scene\" | \"cartoon\", \"scripts\": [...]}, as get_move returns. A move is kind \"behaviour\". The language: https://jabbertoon.com/docs/language/"New value: +"A move (get_move gives ready-made ones) or a scene program."
    • addedInput schema / properties / repair
      Added value: +{
      +  "description": "true: also return repaired: the program with every certain patch applied, and the changes.",
      +  "type": "boolean"
      +}
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "problem": {
      -      "properties": {
      -        "code": {
      -          "type": "string"
      -        },
      -        "fix": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "says": {
      -          "type": "string"
      -        },
      -        "where": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "code",
      -        "where",
      -        "says",
      -        "fix"
      -      ],
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "checked": {
      -      "description": "What was checked: program, character, pack or cartoon.",
      -      "type": "string"
      -    },
      -    "error": {
      -      "$ref": "#/$defs/problem"
      -    },
      -    "error_count": {
      -      "description": "How many errors the checks found.",
      -      "type": "integer"
      -    },
      -    "errors": {
      -      "description": "The errors, in order: the first 50 at most (error_count says how many there are).",
      -      "items": {
      -        "$ref": "#/$defs/problem"
      -      },
      -      "type": "array"
      -    },
      -    "kind": {
      -      "description": "The program's kind (behaviour, scene, cartoon), character, or the pack's type.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "notes": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "ok": {
      -      "description": "True when there are no errors.",
      -      "type": "boolean"
      -    },
      -    "url": {
      -      "description": "The page that describes this format.",
      -      "type": "string"
      -    },
      -    "warning_count": {
      -      "description": "How many warnings the checks found.",
      -      "type": "integer"
      -    },
      -    "warnings": {
      -      "description": "The warnings, in order: the first 50 at most (warning_count says how many there are).",
      -      "items": {
      -        "$ref": "#/$defs/problem"
      -      },
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "ok",
      -    "url"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses the retention policy ('Nothing you send is kept'), the exact error/warning object shape {code, where, says, fix, url}, the presence of did_you_mean and an RFC 6902 patch 'when certain,' the viewer-facing issue categories, and what repair:true returns. This is unusually rich behavioral disclosure for a read-only tool.

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?

Front-loads the purpose and return contract with almost no filler, and the example is tacked on usefully at the end. The middle sentences are dense and run-on, which costs a point but not readability of the key facts.

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

Completeness5/5

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

With no output schema and a nested-object, six-parameter input, the description carries the full return-value burden and does so: error fields, warnings, viewer issues, summary contents, and the ok-path canonical program plus link. Nothing an agent needs to invoke or interpret it is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: the mutually alternative inputs (cartoon/program/pack/character/file), the note that get_move supplies ready-made programs, and the semantics of repair:true applying 'every certain patch.' It adds value over the schema rather than repeating it.

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?

States a specific verb (checks) and resource (cartoon/program/pack/character/file) plus the timing constraint 'before anyone sees it,' which distinguishes it from build and share_link without naming them. It is clear what the tool does, though sibling differentiation is only implicit.

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

Usage Guidelines4/5

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

'Give one of cartoon, program, pack, character or file' frames the calling context, and 'before anyone sees it' implies pre-publication validation. It offers a concrete example (list_characters' cartoon_example) but does not explicitly say when not to use it versus build or get_guide.

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