Skip to main content
Glama

NFC Tap Builder by Tap.Giving

submit_artwork

Send the finished artwork back. Intake is permissive by ruling: a real image is accepted in any format and rejected only on three sanity grounds (malicious or masquerading content, over 5 MB decoded, or not decodable as the type it claims). Production fitness is judged later in the normal proof flow, never here. No key and no email are needed on the cold path; a keyed submission binds to the key's organization. The file argument carries the artwork file (filename, mediaType, contentBase64); sha256 is the hex SHA-256 of those file bytes; shape optionally names the shape the artwork was designed for; orderRef optionally attaches the submission to an existing order; logo optionally carries the source logo the artwork was built from; note is free text for the team. Each call creates a separate submission: resubmitting the same file mints a new artworkRef rather than replacing the earlier one. Returns the artworkRef every later step carries, a displayUrl, and a preview of the person's own design composited on the disc (cut shape applied). Design approval stays human: a person approves the final proof by email before production. No tool on this server records or implies an approval.

Input Schema

NameRequiredDescriptionDefault
fileYesThe artwork file itself: its filename, its media type, and its bytes as base64.
logoNoOptional source logo the artwork was built from; travels with the submission as source material.
noteNoOptional free-text note for the Tap.Giving team, carried with the submission.
shapeNoOptional: the shape the artwork was designed for; the on-disc preview uses its cut. Omit it and the preview shows both shapes.
sha256YesHex SHA-256 of the file bytes.
orderRefNoOptional: attach the submission to an order this key's organization already created (the orderRef create_order returned).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: it enumerates the exact acceptance policy and the three rejection grounds, states a concrete 5 MB decoded size limit, and explains what gets created ('resubmitting the same file mints a new artworkRef rather than replacing the earlier one') — which independently corroborates idempotentHint=false. It also discloses the return payload (artworkRef, displayUrl, disc preview) and the human-approval boundary, so an agent understands side effects and follow-up obligations.

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?

Purpose and intake policy are front-loaded, then parameters, then return/approval behavior — a sensible order for a six-parameter write tool. It is dense but mostly earns its length; the approval sentence is slightly doubled ('Design approval stays human ... No tool ... records or implies an approval'), which is defensible as a guardrail but is the one redundancy.

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 six-parameter, nested-object write tool with no output schema, the description supplies what is otherwise missing: the return values, the non-idempotent creation behavior, the size/validity gate, and the fact that approval is out of band. Nothing an agent needs to call this correctly or interpret the result is absent.

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?

Schema coverage is 100% and nested objects are fully described, so the schema already carries the parameter semantics. The description restates most of it (file contents, sha256 as hex digest of those bytes, shape, orderRef, logo, note) with only marginal added meaning, such as noting that omitting shape makes the preview show both shapes — which the schema also says. Baseline 3 is correct.

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?

States a specific verb and resource ('Send the finished artwork back') and immediately delimits scope: intake only, not production fitness, not approval. That scope framing distinguishes it cleanly from siblings like create_order and get_artwork_spec without the reader opening any schema.

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?

Gives explicit context for the two access paths ('No key and no email are needed on the cold path; a keyed submission binds to the key's organization') and clear exclusions ('Production fitness is judged later ... never here', 'No tool on this server records or implies an approval'). It also routes one parameter to a sibling ('the orderRef create_order returned'). It stops short of naming an outright alternative tool to use instead, so 4 rather than 5.

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