Skip to main content
Glama

Create a product

swop_create_product

Create a sellable product on the linked account's SmartSite. It becomes instantly purchasable by humans at the SmartSite and by AI agents over x402. name, description and image are all REQUIRED by the backend. Confirm name and price with the user before creating.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesProduct name
imageYesPrimary product image URL (required)
nftTypeNoFine-grained type; overrides productType. phygital/menu are physical, the rest digital
keywordsNoSearch keywords
priceUsdYesPrice in USD (settles in USDC)
variantsNoBuyer-selectable options. Replaces the existing set when given.
mintLimitNoInventory available, default 1
descriptionYesProduct description (required)
extraImagesNoAdditional image URLs, shown after the primary one
productTypeNophysical (ships), digital (default), or in_person_checkout
shippingCostNoFlat shipping cost in USD
requiresShippingNoPhysical goods: collect a shipping address
royaltyRecipientNoWallet receiving royalties
royaltyPercentageNoResale royalty percent
digitalDeliveryNoteNoDigital goods: what the buyer receives after purchase

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • changedInput schema / properties / description / description
      Previous value: -"Product description"New value: +"Product description (required)"
    • addedInput schema / properties / description / minLength
      Added value: +1
    • addedInput schema / properties / digitalDeliveryNote
      Added value: +{
      +  "description": "Digital goods: what the buyer receives after purchase",
      +  "maxLength": 500,
      +  "type": "string"
      +}
    • addedInput schema / properties / extraImages
      Added value: +{
      +  "description": "Additional image URLs, shown after the primary one",
      +  "items": {
      +    "format": "uri",
      +    "type": "string"
      +  },
      +  "maxItems": 9,
      +  "type": "array"
      +}
    • changedInput schema / properties / image / description
      Previous value: -"Product image URL"New value: +"Primary product image URL (required)"
    • addedInput schema / properties / keywords
      Added value: +{
      +  "description": "Search keywords",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • changedInput schema / properties / mintLimit / description
      Previous value: -"Inventory limit, default 1"New value: +"Inventory available, default 1"
    • addedInput schema / properties / nftType
      Added value: +{
      +  "description": "Fine-grained type; overrides productType. phygital/menu are physical, the rest digital",
      +  "enum": [
      +    "phygital",
      +    "menu",
      +    "collectible",
      +    "subscription",
      +    "membership",
      +    "coupon"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / productType / description
      Previous value: -"collectible (default), phygital, membership, coupon"New value: +"physical (ships), digital (default), or in_person_checkout"
    • addedInput schema / properties / productType / enum
      Added value: +[
      +  "physical",
      +  "digital",
      +  "in_person_checkout"
      +]
    • addedInput schema / properties / requiresShipping
      Added value: +{
      +  "description": "Physical goods: collect a shipping address",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / royaltyPercentage
      Added value: +{
      +  "description": "Resale royalty percent",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / royaltyRecipient
      Added value: +{
      +  "description": "Wallet receiving royalties",
      +  "type": "string"
      +}
    • addedInput schema / properties / shippingCost
      Added value: +{
      +  "description": "Flat shipping cost in USD",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / variants
      Added value: +{
      +  "description": "Buyer-selectable options. Replaces the existing set when given.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "name": {
      +        "description": "Variant group, e.g. \"Color\" or \"Size\"",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "options": {
      +        "description": "Choices, e.g. [\"Black\",\"White\"]",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "options"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "name",
      -  "priceUsd"
      -]New value: +[
      +  "name",
      +  "description",
      +  "priceUsd",
      +  "image"
      +]
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark this as a write operation (readOnlyHint: false). The description adds valuable behavioral context beyond annotations: the product becomes instantly purchasable by humans and AI agents, and required fields are highlighted. No contradiction with annotations.

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?

Three sentences with no redundancy: purpose, effect, and required user confirmation are all front-loaded. Every sentence earns its place, and the structure is easy to scan.

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 15-parameter tool with full schema descriptions and no output schema, the description covers the essential preconditions (user confirmation) and immediate effects (instant purchasability). It does not enumerate parameters, but the schema already handles that, so the description is sufficiently complete.

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 baseline is 3. The description adds value by instructing to confirm name and price with the user, a non-schema requirement that affects how those parameters should be handled. It also reiterates requiredness, but the confirmation guidance is the meaningful addition.

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: 'Create a sellable product on the linked account's SmartSite.' Distinguishes itself from sibling tools like swop_update_product and swop_list_my_products by clearly indicating creation, and the added detail about instant purchasability clarifies the outcome.

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?

Provides clear context on when to use: to create a new sellable product, and includes an explicit user-confirmation instruction for name and price. It does not explicitly contrast with alternatives, but the 'create' purpose and confirmation requirement give sufficient guidance.

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.