Skip to main content
Glama

Create a product

create_product

Adds a product to a page's catalogue. It is not on the page until a product block places it there — use put_page for that. For something delivered after payment, like a course or a download, set deliveryUrl. Show the title, price and currency. Before calling, show the person exactly what will be saved and get their explicit yes in the conversation. Never assume a currency.

Input Schema

NameRequiredDescriptionDefault
titleYesWhat the product is called.
policyNoRefund and terms shown to the customer before they book.
pricingYesHow it is paid for. "stripe" takes real money and needs Stripe connected; "display" only shows a price; "free" is no charge. Ask the person which currency they charge in before suggesting a price — never assume US dollars, and say the currency whenever you quote an amount.
supportNoHow a customer reaches the seller about a booking.
businessYesThe page handle, as it appears in keepp.link/<handle>.
mediaUrlsNoUp to 5 image URLs. Outside images are downloaded and stored on Keepp; nothing needs uploading.
questionsNoExtra questions asked of the customer. Send the list back as get_product or get_booking_unit gave it.
stockLimitNoHow many can be sold; null for unlimited.
deliveryUrlNoWhat a buyer gets after paying: the course, download or file link. Shown on the buyer's order page once they have paid (their confirmation email links there, and never contains it).
descriptionNo
quantitySelectableNoWhether a buyer can choose how many to buy.
deliveryInstructionsNoShown with the delivery link on the buyer's order page after paying.

Output Schema

NameRequiredDescriptionDefault
titleNo
createdYesFalse when the person declined, and nothing was created.
productIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / pricing / description
      Previous value: -"How it is paid for. \"stripe\" takes real money and needs Stripe connected; \"display\" only shows a price; \"free\" is no charge. Free and display need a Pro plan. Ask the person which currency they charge in before suggesting a price — never assume US dollars, and say the currency whenever you quote an amount."New value: +"How it is paid for. \"stripe\" takes real money and needs Stripe connected; \"display\" only shows a price; \"free\" is no charge. Ask the person which currency they charge in before suggesting a price — never assume US dollars, and say the currency whenever you quote an amount."
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the write/safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's job is to add context — and it does: the product is inert until a block places it, a human confirmation is required, and currency must never be assumed. It stops short of disclosing duplicate-creation/retry behavior implied by idempotentHint=false, so it is not a full 5.

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 is front-loaded and no sentence is filler — placement, deliveryUrl, the confirmation gate, and the currency rule each carry a distinct instruction. Slightly dense em-dash phrasing and the terse fragment 'Show the title, price and currency' keep it off a 5.

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 12-parameter nested creation tool with an output schema and 92% field coverage, the description supplies what structured fields cannot: the page-placement precondition, the confirmation requirement, and the anti-assumption currency rule. Remaining gaps (retry/duplicate semantics, pagination-free confirmation of results) are minor given the output schema exists.

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 92%, so the baseline is 3 and the schema does most of the work. The description still adds meaning beyond the schema by tying deliveryUrl to a business scenario (course or download delivered after payment) and flagging the minimal visible fields (title, price, currency) and the currency constraint that spans parameters.

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 concrete verb and resource ('Adds a product to a page's catalogue') and immediately clarifies the boundary against both put_page and the pre-existing page state. It also distinguishes itself from update_product/delete_product by framing the creation semantics (page placement, delivery artifacts). An agent can identify this tool without opening the schema.

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?

Explicitly names the alternative ('use put_page for that') and the condition that selects it, defines the deliveryUrl use case ('something delivered after payment'), and adds hard preconditions: confirm exactly what will be saved, get an explicit yes, never assume a currency. This is when-to-use, when-not-to-use, and prerequisites in five sentences.

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