Skip to main content
Glama

Show invoice design

well_show_invoice_design
Read-only

Draw the invoice-design card so the USER picks the layout an invoice prints in and sets what it prints: the ink, the language, whether a customer-portal address is printed, and which note, tax rate and payment means back the payment-terms, tax-regime, legal-mentions and payment-means rows.

Pass invoice_id, or template_build_id for the capture mode below. Never both. With neither, the card opens on the workspace's newest sales invoice and opened_on_newest names it.

Every field's options are read off this workspace's OWN records — its notes, its tax rates, its payment means — never a fixture. The payment-means field's mint verdict on each option is the REAL capability read off workspace_connectors.installed_capabilities, never a guess from a connector's name: a connector can be fully connected and still refuse, and the verdict names the registry reason (no committed tool, not installed, capability capture never ran, or installed without the minting scope).

Draws the card and waits for the user's "Use this design", which calls well_update_invoice_design. Do not read this and then decide whether to draw — drawing IS the step.

customer_id: the invoice's customer, for saving their default design.

CAPTURE MODE: pass template_build_id instead of invoice_id, the enrichment_task_id that well_create_invoice_template or well_create_invoice_template_revision returned. On a host that draws cards, the card waits for the build and then shows the dropped invoice beside the rebuilt design, with the logo and the legal mentions it would reuse, each one kept or removed by the person, and Keep, Ask for changes and Not now. The card asks for its two pictures itself and gets them in the result's _meta, which the host hands to the card, not to you. Keep saves the design itself through well_create_workspace_invoice_design. A host that draws no card cannot show the rebuilt design, and no link opens it: reference_url opens the dropped invoice, never the design. The result's capture says where the build stands (building, built, not_built), what the design would reuse (offer) and the link to the dropped invoice (reference_url). Draw it once, right after the build starts, and end the turn: the card follows the build by itself. Leave include_pictures unset: the card asks for its pictures.

Input Schema

NameRequiredDescriptionDefault
invoice_idNoThe UUID of the invoice whose design to draw.
workspace_idNoTarget workspace. Omit when the token authorizes one workspace. Required when it authorizes several: this read reports one workspace's own figures and will not choose which.
conversation_idNoThe conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation.
workspace_scopeNoRestrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.
include_picturesNoSet by the capture card to draw its two pictures. The pictures reach the card only, never your copy of the result; leave unset.
template_build_idNoCapture mode: the enrichment_task_id of the build that rebuilt a design from a dropped invoice. Replaces invoice_id.

Output Schema

NameRequiredDescriptionDefault
dataNo
errorNo
captureNoCapture mode only: the build, the design it rebuilt and what the design would reuse.
successYes
can_applyNoWhether the card may save on this turn: a pick on the design chooser, or Keep on the capture card. False in an Ask-mode turn of Well's chat: the card shows the designs with its save button off, and saving runs in Agent mode.
refusal_reasonNoThe WellError code when the read is refused.
conversation_idNoThe conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation.
newly_connectedNoTools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: "<name> is connected.". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later.
resolved_workspaceNoThe workspace that answered, when the caller named none and the token authorizes several.
conversation_id_noteNoPresent only when the server opened a fresh lane, stating that no choice recorded earlier was read.
conversation_id_sourceNoWhere the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed25 schema fields changed
    • changedOutput schema / properties / capture / properties / offer / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "issuer_name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The company that issued the dropped invoice, as the page names it."
      -      },
      -      "issuer_relation": {
      -        "enum": [
      -          "own_company",
      -          "other_company",
      -          "unknown"
      -        ],
      -        "type": "string"
      -      },
      -      "legal_mentions": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The legal mentions printed on the dropped invoice, or null."
      -      },
      -      "legal_mentions_unverified": {
      -        "description": "True when the invoice is not the workspace's own and the reading found no mentions on it.",
      -        "type": "boolean"
      -      },
      -      "logo_present": {
      -        "description": "Whether a logo was cut from the dropped invoice.",
      -        "type": "boolean"
      -      },
      -      "offer_token": {
      -        "description": "Pass it unchanged to well_create_workspace_invoice_design.",
      -        "type": "string"
      -      },
      -      "starts_kept": {
      -        "description": "Whether the logo and the mentions start as kept: only for the workspace's own invoice.",
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "logo_present",
      -      "legal_mentions",
      -      "legal_mentions_unverified",
      -      "issuer_name",
      -      "issuer_relation",
      -      "starts_kept",
      -      "offer_token"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "issuer_name": {
      +        "description": "The company that issued the dropped invoice, as the page names it.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "issuer_relation": {
      +        "enum": [
      +          "own_company",
      +          "other_company",
      +          "unknown"
      +        ],
      +        "type": "string"
      +      },
      +      "legal_mentions": {
      +        "description": "The legal mentions printed on the dropped invoice, or null.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "legal_mentions_unverified": {
      +        "description": "True when the invoice is not the workspace's own and the reading found no mentions on it.",
      +        "type": "boolean"
      +      },
      +      "logo_present": {
      +        "description": "Whether a logo was cut from the dropped invoice.",
      +        "type": "boolean"
      +      },
      +      "offer_token": {
      +        "description": "Pass it unchanged to well_create_workspace_invoice_design.",
      +        "type": "string"
      +      },
      +      "starts_kept": {
      +        "description": "Whether the logo and the mentions start as kept: only for the workspace's own invoice.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "logo_present",
      +      "legal_mentions",
      +      "legal_mentions_unverified",
      +      "issuer_name",
      +      "issuer_relation",
      +      "starts_kept",
      +      "offer_token"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / capture / properties / pictures / properties / reference_png / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / capture / properties / pictures / properties / reference_png / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / capture / properties / pictures / properties / template_png / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / capture / properties / pictures / properties / template_png / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / capture / properties / reference_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / capture / properties / reference_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / capture / properties / revises_template_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / capture / properties / revises_template_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / capture / properties / template_document_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / capture / properties / template_document_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / customer_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / customer_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / fields / items / properties / options / items / properties / logo / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / fields / items / properties / options / items / properties / logo / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / layouts / items / properties / thumbnail_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / layouts / items / properties / thumbnail_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / opened_on_newest / properties / customer_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / opened_on_newest / properties / customer_name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / opened_on_newest / properties / reference / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / opened_on_newest / properties / reference / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / payment_link_options / items / properties / mint_tool / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / data / properties / payment_link_options / items / properties / mint_tool / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / resolved_workspace / properties / name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / resolved_workspace / properties / name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  2. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / opened_on_newest
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Set only when the call named no invoice: the card opens on the workspace's newest sales invoice, named here.",
      +  "properties": {
      +    "customer_name": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "reference": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "reference",
      +    "customer_name"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / data / properties / fields / items / properties / id / enum
      Previous value: -[
      -  "theme",
      -  "language",
      -  "payment-terms",
      -  "tax-regime",
      -  "legal-mentions",
      -  "payment-means",
      -  "customer-portal",
      -  "accent"
      -]New value: +[
      +  "theme",
      +  "language",
      +  "payment-terms",
      +  "tax-regime",
      +  "legal-mentions",
      +  "payment-means",
      +  "customer-portal"
      +]
  4. Changed1 schema field changed
    • addedOutput schema / properties / can_apply
      Added value: +{
      +  "description": "Whether the card may save on this turn: a pick on the design chooser, or Keep on the capture card. False in an Ask-mode turn of Well's chat: the card shows the designs with its save button off, and saving runs in Agent mode.",
      +  "type": "boolean"
      +}
  5. Changed2 schema fields changed
    • removedOutput schema / properties / data / properties / trigger
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "invoice_id",
      -  "customer_id",
      -  "trigger",
      -  "layouts",
      -  "fields",
      -  "settings",
      -  "payment_link_options"
      -]New value: +[
      +  "invoice_id",
      +  "customer_id",
      +  "layouts",
      +  "fields",
      +  "settings",
      +  "payment_link_options"
      +]
  6. Changed1 schema field changed
    • changedOutput schema / properties / newly_connected / description
      Previous value: -"Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. Start the reply with one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later."New value: +"Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later."
  7. Changed2 schema fields changed
    • removedOutput schema / properties / data / properties / fields / items / properties / options / items / properties / mint / properties / exclusion
      Removed value: -{
      -  "enum": [
      -    "operation_not_requested"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / data / properties / payment_link_options / items / properties / exclusion
      Removed value: -{
      -  "enum": [
      -    "operation_not_requested"
      -  ],
      -  "type": "string"
      -}
  8. Changed1 schema field changed
    • addedInput schema / properties / workspace_scope
      Added value: +{
      +  "description": "Restrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.",
      +  "enum": [
      +    "family"
      +  ],
      +  "type": "string"
      +}
  9. Changed6 schema fields changed
    • addedInput schema / properties / include_pictures
      Added value: +{
      +  "description": "Set by the capture card to draw its two pictures. The pictures reach the card only, never your copy of the result; leave unset.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / template_build_id
      Added value: +{
      +  "description": "Capture mode: the enrichment_task_id of the build that rebuilt a design from a dropped invoice. Replaces invoice_id.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "invoice_id"
      -]
    • addedOutput schema / properties / capture
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Capture mode only: the build, the design it rebuilt and what the design would reuse.",
      +  "properties": {
      +    "build_id": {
      +      "type": "string"
      +    },
      +    "not_built_reason": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "attempts_exhausted",
      +            "cost_cap_reached",
      +            "deadline_reached",
      +            "render_unavailable",
      +            "content_already_stored",
      +            "revision_unchanged",
      +            "build_failed"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "offer": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "issuer_name": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "The company that issued the dropped invoice, as the page names it."
      +            },
      +            "issuer_relation": {
      +              "enum": [
      +                "own_company",
      +                "other_company",
      +                "unknown"
      +              ],
      +              "type": "string"
      +            },
      +            "legal_mentions": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "The legal mentions printed on the dropped invoice, or null."
      +            },
      +            "legal_mentions_unverified": {
      +              "description": "True when the invoice is not the workspace's own and the reading found no mentions on it.",
      +              "type": "boolean"
      +            },
      +            "logo_present": {
      +              "description": "Whether a logo was cut from the dropped invoice.",
      +              "type": "boolean"
      +            },
      +            "offer_token": {
      +              "description": "Pass it unchanged to well_create_workspace_invoice_design.",
      +              "type": "string"
      +            },
      +            "starts_kept": {
      +              "description": "Whether the logo and the mentions start as kept: only for the workspace's own invoice.",
      +              "type": "boolean"
      +            }
      +          },
      +          "required": [
      +            "logo_present",
      +            "legal_mentions",
      +            "legal_mentions_unverified",
      +            "issuer_name",
      +            "issuer_relation",
      +            "starts_kept",
      +            "offer_token"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "pictures": {
      +      "additionalProperties": false,
      +      "description": "The two pictures, only when Well's chat card asked for them. An MCP host gets them in _meta instead.",
      +      "properties": {
      +        "reference_png": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "template_png": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "reference_png",
      +        "template_png"
      +      ],
      +      "type": "object"
      +    },
      +    "reference_document_id": {
      +      "description": "The dropped invoice the design was rebuilt from.",
      +      "type": "string"
      +    },
      +    "reference_url": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "A link that opens the dropped invoice in Well, for a host that draws no card."
      +    },
      +    "review_status": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "pending",
      +            "approved",
      +            "rejected"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "approved once the person kept the template."
      +    },
      +    "revises_template_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "The template this revision replaces once kept; null for a first build."
      +    },
      +    "state": {
      +      "description": "building: still running. built: a template to show. not_built: ended with none.",
      +      "enum": [
      +        "building",
      +        "built",
      +        "not_built"
      +      ],
      +      "type": "string"
      +    },
      +    "template_document_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "The built template, once the build stored one."
      +    }
      +  },
      +  "required": [
      +    "build_id",
      +    "state",
      +    "not_built_reason",
      +    "reference_document_id",
      +    "reference_url",
      +    "template_document_id",
      +    "revises_template_id",
      +    "review_status",
      +    "offer"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / newly_connected
      Added value: +{
      +  "description": "Tools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. Start the reply with one line per entry, in the person's language: \"<name> is connected.\". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "name": {
      +        "type": "string"
      +      },
      +      "service_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "service_id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / refusal_reason
      Added value: +{
      +  "description": "The WellError code when the read is refused.",
      +  "type": "string"
      +}
  10. Changed7 schema fields changed
    • addedOutput schema / properties / data / properties / customer_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The invoice's customer, for saving their default design."
      +}
    • changedOutput schema / properties / data / properties / fields / items / properties / id / enum
      Previous value: -[
      -  "theme",
      -  "language",
      -  "payment-terms",
      -  "tax-regime",
      -  "legal-mentions",
      -  "payment-means",
      -  "customer-portal"
      -]New value: +[
      +  "theme",
      +  "language",
      +  "payment-terms",
      +  "tax-regime",
      +  "legal-mentions",
      +  "payment-means",
      +  "customer-portal",
      +  "accent"
      +]
    • addedOutput schema / properties / data / properties / layouts / items / properties / thumbnail_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "A picture of the design's first page; null when the design has none."
      +}
    • addedOutput schema / properties / data / properties / layouts / items / properties / tier
      Added value: +{
      +  "description": "Official designs ship with Well; every other design is a community layout.",
      +  "enum": [
      +    "official",
      +    "community"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / data / properties / layouts / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "character",
      -  "font",
      -  "paper"
      -]New value: +[
      +  "id",
      +  "name",
      +  "character",
      +  "font",
      +  "paper",
      +  "tier",
      +  "thumbnail_url"
      +]
    • addedOutput schema / properties / data / properties / settings / description
      Added value: +"The design the card opens on, under the design_* names: each setting the invoice saved, else the customer's saved design, else the last invoice designed for this customer, else the house design, else the default."
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "invoice_id",
      -  "trigger",
      -  "layouts",
      -  "fields",
      -  "settings",
      -  "payment_link_options"
      -]New value: +[
      +  "invoice_id",
      +  "customer_id",
      +  "trigger",
      +  "layouts",
      +  "fields",
      +  "settings",
      +  "payment_link_options"
      +]
  11. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, and the description adds substantial context: the card waits for 'Use this design' and calls well_update_invoice_design, capture mode waits for a build, pictures are returned only in _meta to the card, and hosts without card support cannot show the rebuilt design. It also explains result capture states and that reference_url opens the dropped invoice, not the design.

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?

The description is front-loaded and dense with operational detail, which is appropriate for a tool with normal and capture modes. Some repetition exists around the card requesting its own pictures and include_pictures, but most sentences carry necessary behavior.

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 an output schema, annotations, and 100% schema description coverage, the description still covers the critical routing, host limitations, capture-mode flow, and return metadata. It is complete enough for an agent to invoke correctly without additional context.

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 important cross-parameter semantics: invoice_id and template_build_id are mutually exclusive, neither defaults to the newest invoice, customer_id is for saving a default design, and include_pictures should be left unset. It adds little beyond the schema for workspace_id, workspace_scope, or conversation_id.

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?

The description opens with a concrete verb and resource—drawing the invoice-design card—and explains the user-facing outcome: choosing layout, ink, language, portal address, note, tax rate, and payment means. It also names the follow-on tool well_update_invoice_design and distinguishes the capture mode, so the agent can identify the tool's role.

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?

It gives explicit invocation routing: pass invoice_id or template_build_id, never both, and with neither it defaults to the workspace's newest sales invoice. It also says to draw once and end the turn in capture mode, and that drawing is the step. It does not explicitly contrast with well_preview_invoice_design, but the conditions for this tool are clear.

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