Skip to main content
Glama

Register Critic

register_critic
Idempotent

Register a custom eval into the compose critic panel — the critic contract is { rubric (or rules/evaluator), referenceMediaIds?, floor }. Three tiers: rules (declarative constraints — keep-out regions, required elements, max overlays, brand colors), rubric (a text criterion scored by the judge as an extra column), or evaluator (your HTTPS webhook — CueFrame POSTs the composition+stills+facts, you return { score, critique }). referenceMediaIds (≤6 org media ids) attach YOUR reference frames as the standard — the judge scores candidates for consistency with them, so "indistinguishable from mine" is a machine check. Lane scope: rules + rubric critics run in BOTH lanes (the Director's gates AND standalone score_composition); evaluator webhooks run in the Director lane only. Use phase 'static' (the default) — 'temporal' (final-render evaluation) is accepted but not yet wired, so a temporal critic produces no verdicts today. A low client score drives a refine like a built-in criterion. You see your eval output + our scores, never our rubric. Re-registering the same criticId upserts (list_critics / delete_critic manage the set). Evaluator tier returns a signing secret ONCE.

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": {
      "body": "<body>"
    },
    "name": "register_critic"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyYesRegister a custom compose critic.
commandIdNoRetry identity. A call repeated with the same commandId returns the first result instead of acting twice.

Output Schema

NameRequiredDescriptionDefault
idNo
tierNo
secretNoevaluator tier: Standard-Webhooks signing secret, returned ONCE.
criticIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed36 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "__schema0": {
      +    "description": "Stable client id; re-registering the same id UPSERTS.",
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "__schema1": {
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "__schema10": {
      +    "maxLength": 128,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "__schema2": {
      +    "enum": [
      +      "rules",
      +      "rubric",
      +      "evaluator"
      +    ],
      +    "type": "string"
      +  },
      +  "__schema3": {
      +    "description": "Score below this routes a refine like a built-in criterion. Defaults to 6.",
      +    "maximum": 10,
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  "__schema4": {
      +    "description": "tier \"rules\": declarative ClientRule[] (data).",
      +    "items": {
      +      "$ref": "#/$defs/__schema5"
      +    },
      +    "type": "array"
      +  },
      +  "__schema5": {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "propertyNames": {
      +      "type": "string"
      +    },
      +    "type": "object"
      +  },
      +  "__schema6": {
      +    "description": "tier \"rubric\": your criterion + description; scored as an extra column.",
      +    "type": "string"
      +  },
      +  "__schema7": {
      +    "description": "tier \"rubric\"/\"evaluator\": up to 6 org media ids whose thumbnails the judge sees as YOUR reference standard — \"looks like mine\" becomes a machine check. Each must be an org-owned media item with a visual thumbnail (422 names any that is not).",
      +    "items": {
      +      "$ref": "#/$defs/__schema8"
      +    },
      +    "maxItems": 6,
      +    "type": "array"
      +  },
      +  "__schema8": {
      +    "type": "string"
      +  },
      +  "__schema9": {
      +    "description": "tier \"evaluator\": your HTTPS webhook; CueFrame POSTs the artifact.",
      +    "format": "uri",
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / body / properties / criticId / $ref
      Added value: +"#/$defs/__schema0"
    • removedInput schema / properties / body / properties / criticId / description
      Removed value: -"Stable client id; re-registering the same id UPSERTS."
    • removedInput schema / properties / body / properties / criticId / minLength
      Removed value: -1
    • removedInput schema / properties / body / properties / criticId / type
      Removed value: -"string"
    • addedInput schema / properties / body / properties / floor / $ref
      Added value: +"#/$defs/__schema3"
    • removedInput schema / properties / body / properties / floor / description
      Removed value: -"Score below this routes a refine like a built-in criterion. Defaults to 6."
    • removedInput schema / properties / body / properties / floor / maximum
      Removed value: -10
    • removedInput schema / properties / body / properties / floor / minimum
      Removed value: -0
    • removedInput schema / properties / body / properties / floor / type
      Removed value: -"number"
    • addedInput schema / properties / body / properties / label / $ref
      Added value: +"#/$defs/__schema1"
    • removedInput schema / properties / body / properties / label / minLength
      Removed value: -1
    • removedInput schema / properties / body / properties / label / type
      Removed value: -"string"
    • addedInput schema / properties / body / properties / referenceMediaIds / $ref
      Added value: +"#/$defs/__schema7"
    • removedInput schema / properties / body / properties / referenceMediaIds / description
      Removed value: -"tier \"rubric\"/\"evaluator\": up to 6 org media ids whose thumbnails the judge sees as YOUR reference standard — \"looks like mine\" becomes a machine check. Each must be an org-owned media item with a visual thumbnail (422 names any that is not)."
    • removedInput schema / properties / body / properties / referenceMediaIds / items
      Removed value: -{
      -  "type": "string"
      -}
    • removedInput schema / properties / body / properties / referenceMediaIds / maxItems
      Removed value: -6
    • removedInput schema / properties / body / properties / referenceMediaIds / type
      Removed value: -"array"
    • addedInput schema / properties / body / properties / rubric / $ref
      Added value: +"#/$defs/__schema6"
    • removedInput schema / properties / body / properties / rubric / description
      Removed value: -"tier \"rubric\": your criterion + description; scored as an extra column."
    • removedInput schema / properties / body / properties / rubric / type
      Removed value: -"string"
    • addedInput schema / properties / body / properties / rules / $ref
      Added value: +"#/$defs/__schema4"
    • removedInput schema / properties / body / properties / rules / description
      Removed value: -"tier \"rules\": declarative ClientRule[] (data)."
    • removedInput schema / properties / body / properties / rules / items
      Removed value: -{
      -  "additionalProperties": {},
      -  "properties": {},
      -  "propertyNames": {
      -    "type": "string"
      -  },
      -  "type": "object"
      -}
    • removedInput schema / properties / body / properties / rules / type
      Removed value: -"array"
    • addedInput schema / properties / body / properties / tier / $ref
      Added value: +"#/$defs/__schema2"
    • removedInput schema / properties / body / properties / tier / enum
      Removed value: -[
      -  "rules",
      -  "rubric",
      -  "evaluator"
      -]
    • removedInput schema / properties / body / properties / tier / type
      Removed value: -"string"
    • addedInput schema / properties / body / properties / url / $ref
      Added value: +"#/$defs/__schema9"
    • removedInput schema / properties / body / properties / url / description
      Removed value: -"tier \"evaluator\": your HTTPS webhook; CueFrame POSTs the artifact."
    • removedInput schema / properties / body / properties / url / format
      Removed value: -"uri"
    • removedInput schema / properties / body / properties / url / type
      Removed value: -"string"
    • addedInput schema / properties / commandId / $ref
      Added value: +"#/$defs/__schema10"
    • removedInput schema / properties / commandId / maxLength
      Removed value: -128
    • removedInput schema / properties / commandId / minLength
      Removed value: -1
    • removedInput schema / properties / commandId / type
      Removed value: -"string"
  2. Changed1 schema field changed
    • addedInput schema / properties / commandId
      Added value: +{
      +  "description": "Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / body / properties / rules / items / properties
      Added value: +{}
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (idempotent, non-destructive), and the description adds non-obvious behavior: same criticId upserts rather than duplicating, the evaluator tier returns a signing secret ONCE, a 422 names any reference media that isn't org-owned with a visual thumbnail, and clients see their eval output plus our scores but never our rubric. That last point is a genuine information-asymmetry disclosure an agent cannot infer from annotations.

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-loaded with the core action and dense with information — nearly every clause carries a fact an agent needs. It is a single long paragraph, though, and the three tiers would scan faster as a structured list rather than inline prose.

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?

For a nested two-parameter registration tool with an output schema, the description covers everything that matters: tier semantics, lane behavior, the temporal caveat, upsert semantics, reference-media constraints, and the one-time secret. Return values are left to the output schema, which is correct.

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; the description goes further by tying parameters to tiers (referenceMediaIds only for rubric/evaluator, url only for evaluator) and explaining floor's routing consequence and the ≤6 limit. It stops short of documenting the shape of the rules array, which is an opaque additionalProperties object in the schema.

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

Purpose5/5

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

Opens with a specific verb+resource: "Register a custom eval into the compose critic panel," then immediately defines the contract object. It also distinguishes itself from list_critics and delete_critic, which manage the same set, so an agent can pick the right tool without opening schemas.

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

Usage Guidelines5/5

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

Explicitly enumerates the three tiers and what each is for (rules = declarative constraints, rubric = judge-scored text criterion, evaluator = your HTTPS webhook), states lane scope per tier, and gives a hard when-NOT: temporal phase is "accepted but not yet wired, so a temporal critic produces no verdicts today." It also names the sibling tools for managing the set.

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.