Skip to main content
Glama

NFC Tap Builder by Tap.Giving

create_order

Idempotent

Set up an order for the key's organization through the same front door a website order takes (an INVREQ record the hourly adoption resolves into the CRM, indistinguishable downstream). This is the lock-in write behind both recap exits; it carries the recapRef and a required idempotencyKey (a retry with the same key and payload returns the original orderRef; the same key with a different payload is a conflict naming the differing fields). The 100-disc minimum is enforced here. Sizes other than the two built-ins return manual_exception. Returns the orderRef (the reference every later call uses), the exact quote, the chosen exit, and the next step. Failure modes: a recap whose inputs differ from the order is refused as a conflict naming the differing fields; a reused idempotencyKey with a different payload is a conflict naming the original order; a missing or mismatched contact email for the key is refused. Routing: start_order_intent is the earlier keyless contact capture, get_recap must run immediately before this call over the same inputs, and request_invoice follows it. Design approval stays human: a person approves the final proof by email before production. No tool on this server records or implies an approval. Payment stays human: this server moves no money itself. It returns a hosted invoice link and a person pays on Stripe's hosted page.

Input Schema

NameRequiredDescriptionDefault
exitNoThe person's chosen exit, recorded on the order and the invoice metadata. Both exits write the same record shape.
noteNoOptional free-text note carried on the order for the team.
sizeYes100mm-round or 100mm-square; anything else is a manual exception handled by hand through the Tap.Giving team.
shipToYesThe shipping address for the finished discs; every field is required.
mountingYesHow the discs mount: adhesive backing, or pre-drilled screw holes plus adhesive.
quantityYesDiscs in the order, 100 to 7000.
recapRefYesThe reference get_recap returned for these same inputs; the order is refused if its inputs differ from that recap.
artworkRefNoThe artwork reference submit_artwork returned for this order's design.
contactNameYesThe contact person's name for the order.
contactEmailYesMust belong to the key's organization.
contactPhoneYesA phone number that reaches the contact.
antiMetalCountNoHow many discs sit on metal surfaces and need the $1 shielding layer. Omit when unknown.
idempotencyKeyYes8 to 128 characters, minted per intended order, reused on retries.
linkDestinationNoAny http or https URL; optional, changeable anytime; the Redirect Dashboard is the default.
organizationNameNoOrganization name; defaults to the key's organization name.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Well beyond the annotations, it explains idempotency semantics (same key+payload returns the original orderRef; same key with different payload is a conflict naming differing fields), the 100-disc minimum enforced here, manual_exception for non-built-in sizes, and the human approval and payment boundaries. It stops short of stating auth requirements or rate limits, so it is not quite maximal.

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 purpose, then idempotency, then constraints, then routing and human-boundary notes, so the structure is well ordered. It is dense and a few clauses ('indistinguishable downstream', 'the lock-in write behind both recap exits') add flavor rather than instruction, keeping it just short of a 5.

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 15-parameter, 9-required mutation with no output schema, it covers return values (orderRef, quote, chosen exit, next step), the specific failure modes (recap mismatch, key reuse with different payload, contact email mismatch), and the human approval/payment boundaries. Nothing an agent needs in order to call it correctly 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; the description adds real meaning on top: quantity's 100-disc floor is enforced at this call, size values other than the two built-ins return manual_exception, recapRef inputs must match the recap, and idempotencyKey behavior is spelled out. It does not cover optional params like artworkRef, antiMetalCount, or linkDestination beyond 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?

States a specific verb and resource (set up an order) and pins down the mechanism ('an INVREQ record the hourly adoption resolves into the CRM'), which distinguishes it from sibling reads like get_order_status or get_quote. It also positions it in the flow relative to start_order_intent, get_recap, and request_invoice.

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?

The Routing section gives explicit ordering: start_order_intent is the earlier keyless contact capture, get_recap must run immediately before this call over the same inputs, and request_invoice follows. It also states exclusions indirectly by assigning contact capture and invoicing to other tools.

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