Skip to main content
Glama

Agentic Fabrication Network (AFN)

Create checkout

create_checkout

Create the order and get a hosted payment link for a chosen offer. Call this as soon as the user picks an offer + shipping speed — do NOT ask for their address first: the secure payment page collects the shipping address and email. Only pass address fields if the user already volunteered them. Returns checkout_url — give it to the user to pay; UFP places the vendor order automatically after payment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipNo
cityNo
nameNoRecipient full name (only if the user provided it)
emailNoBuyer email (only if the user provided it)
phoneNo
stateNoTwo-letter US state
street1NoStreet address (only if the user provided it)
street2No
offer_idYes
return_urlNoExact URL of the page the user is on right now, IF the client application knows it (a web app embedding this tool passes its own page URL). The post-payment page shows a 'Return to <site>' button pointing here. Omit when unknown — never invent one.
billing_zipNo
coupon_codeNoCoupon code, only if the user provided one (early-adopter codes from the AFN team). Case-insensitive. The discount appears on the payment page; a 100%-off code makes the total $0 with no card required. Never invent or guess a code.
billing_cityNo
billing_nameNoBilling address, only when the buyer answered the billing question (e.g. said it differs from shipping, or a checkout UI's 'same as shipping' checkbox — then send the shipping values verbatim). Never ask for it; omit and the payment page handles billing.
billing_stateNoTwo-letter US state
billing_street1No
billing_street2No
shipping_option_idYesOne of the offer's shipping option ids

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / coupon_code
      Added value: +{
      +  "description": "Coupon code, only if the user provided one (early-adopter codes from the AFN team). Case-insensitive. The discount appears on the payment page; a 100%-off code makes the total $0 with no card required. Never invent or guess a code.",
      +  "type": "string"
      +}
  2. Changed6 schema fields changed
    • addedInput schema / properties / billing_city
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / billing_name
      Added value: +{
      +  "description": "Billing address, only when the buyer answered the billing question (e.g. said it differs from shipping, or a checkout UI's 'same as shipping' checkbox — then send the shipping values verbatim). Never ask for it; omit and the payment page handles billing.",
      +  "type": "string"
      +}
    • addedInput schema / properties / billing_state
      Added value: +{
      +  "description": "Two-letter US state",
      +  "maxLength": 2,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / billing_street1
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / billing_street2
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / billing_zip
      Added value: +{
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / return_url
      Added value: +{
      +  "description": "Exact URL of the page the user is on right now, IF the client application knows it (a web app embedding this tool passes its own page URL). The post-payment page shows a 'Return to <site>' button pointing here. Omit when unknown — never invent one.",
      +  "format": "uri",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the secure payment page collects the shipping address/email, that the tool returns a checkout_url, and that UFP places the vendor order automatically after payment — a clear side-effect disclosure for a mutation tool. It could mention auth/error cases, but the core behaviors are transparent and complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, no wasted words. The core purpose and timing are front-loaded, followed by the address caveat, the return value, and the post-payment behavior. Every sentence earns its place and the structure is easy to scan for an 18-parameter tool.

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

Completeness4/5

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

For a complex 18-param tool with no output schema, the description ties the workflow together: when to call, what to pass, what comes back (checkout_url), and what happens after payment. It lacks a detailed shape of the response beyond the URL, but the essential integration logic an agent needs is all present. Nearly complete.

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 50%, so the description must compensate for the uncovered half. It adds valuable guidance on the address-field philosophy ('Only pass address fields if the user already volunteered them') and implicit rules for return_url ('never invent one'). The schema itself documents the other half (name, email, coupon_code, billing_name, shipping_option_id). The description complements rather than fully compensates for the coverage gap, leaving some params (zip, city, phone, street1) to inference.

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 specific verb + resource + outcome: 'Create the order and get a hosted payment link for a chosen offer.' It clearly distinguishes from siblings like get_order_status, list_orders, and leave_review, none of which create a checkout or issue a payment link. An agent can immediately tell what this tool does and when it applies.

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?

Explicit timing guidance is given: 'Call this as soon as the user picks an offer + shipping speed — do NOT ask for their address first.' It also states when to pass address fields ('only if the user already volunteered them'). It would earn a 5 by naming an alternative tool to use instead under certain conditions, but the workflow context it provides is concrete and actionable.

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