Skip to main content
Glama

Create Product

neuron_create_product

Create a digital product/service with a public checkout link. Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000. For 'file' delivery, upload the file first (neuron_upload_media) and pass its URL as deliveryFileUrl. On payment, Neuron confirms it and delivers the product to the buyer's WhatsApp automatically.

Input Schema

NameRequiredDescriptionDefault
kindNoShort label e.g. 'E-book', 'Presets', 'Service'
codesNoFor codeMode 'pool': the unique codes/keys to add (one gets sent per buyer). Appended to any existing pool.
themeNoPer-product theme: { bg, accent, text (hex), mode: 'light'|'dark', layout: 'hero'|'side', coverAspect: '16/10'|'3/2'|'1/1'|'4/5', cta: buy-button label e.g. 'Reserve your hour' }
titleYesProduct title shown to buyers
contentNoRich product-page content blocks. Ordered array of {type, ...}: heading {text,level}, text {markdown}, image {url,caption}, video {url}, callout {emoji,text}, collapsible {title,blocks[]}, divider {}, button {label,url}, embed {url}, spacer {}
enabledNoWhether the product is live
categoryNoCategory label e.g. 'Productivity'
codeModeNoFor deliveryType 'code': 'shared' (same text to every buyer), 'pool' (a unique code per sale from codes you upload — sells out when empty), or 'generated' (auto-mint a unique license key per sale)
currencyNoISO currency (default NGN)
feePayerNo'buyer' (fee added on top, seller gets full price — default) or 'seller' (fee deducted)
channelIdNoWhatsApp session UUID used to deliver the product (defaults to the org default channel)
coverTypeNoHow the cover renders
emailBodyNoCustom message for the buyer's delivery email: plain text (no HTML), blank line = new paragraph, **bold**, links auto-linked, same variables as emailSubject. The download button / link / code is always added below it automatically. Null = the default message.
coverColorNoCover colour (hex) for 'color'/'gradient' cover types
coverEmojiNoEmoji used as a cover fallback (e.g. 📓)
membershipNoMake this a recurring subscription/membership: it tracks a paid period per buyer, renews from their Neuron wallet when possible (else emails a reminder — no card auto-charge), and marks them lapsed when the period + grace passes. React to membership.started/renewed/lapsed in Flows to deliver whatever the membership grants.
priceMinorYesCurrent price (charged). Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000. Set 0 for a free product (no payment).
coverColor2NoSecond colour (hex) for 'gradient' cover
descriptionNoRich description / what the buyer gets
deliveryTextNoFor 'link'/'code': the link or code the buyer receives. Optional note for 'file'.
deliveryTypeYesHow the product is delivered: 'file' (uploaded file), 'link' (URL), or 'code' (text/code)
emailSubjectNoCustom subject for the buyer's delivery email. Variables: {{buyer_first_name}}, {{buyer_name}}, {{product_title}}, {{store_name}}, {{access_link}}, {{code}}, {{order_ref}}. Null = default ('Your {{product_title}} is ready').
coverImageUrlNoCover image URL
checkoutFieldsNoCustom checkout questions the buyer answers (name, address, specs/customisations…). Their answers are attached to the order and sent to the seller.
deliveryChannelNoHow buyers receive it. 'email' (default for new products): a branded email from your store only, with no WhatsApp needed and no ban risk on big launches. 'both': also sends from your connected WhatsApp, within the number's daily new-contact cap (buyers past the cap still get the email).
deliveryFileUrlNoFor deliveryType 'file': the uploaded file URL (upload first with neuron_upload_media)
deliveryFileNameNoFilename shown on the download button and in the WhatsApp document
membershipIntervalNoBilling period. Required when membership is true.
originalPriceMinorNoOptional compare-at / 'was' price (kobo), shown struck through. Must be ≥ current price.
membershipGraceDaysNoDays after the period ends before an unpaid member lapses (and, if a group is attached, is removed from it). Default 1.
membershipGroupNameNoGroup subject used when the attached group is auto-created (defaults to the product title). Only relevant with membershipGroupSlug.
membershipGroupSlugNoOPTIONAL: attach a WhatsApp group as a membership perk. Org-unique handle (lowercase letters, numbers, hyphens); the group is created on the first sale, buyers are added on renewal and removed on lapse. Your connected number must be a group admin. Omit for a membership that isn't group-based.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / deliveryChannel
      Added value: +{
      +  "description": "How buyers receive it. 'email' (default for new products): a branded email from your store only, with no WhatsApp needed and no ban risk on big launches. 'both': also sends from your connected WhatsApp, within the number's daily new-contact cap (buyers past the cap still get the email).",
      +  "enum": [
      +    "email",
      +    "both"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / deliveryFileName / description
      Previous value: -"Filename shown in the WhatsApp document"New value: +"Filename shown on the download button and in the WhatsApp document"
    • addedInput schema / properties / emailBody
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 5000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Custom message for the buyer's delivery email: plain text (no HTML), blank line = new paragraph, **bold**, links auto-linked, same variables as emailSubject. The download button / link / code is always added below it automatically. Null = the default message."
      +}
    • addedInput schema / properties / emailSubject
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Custom subject for the buyer's delivery email. Variables: {{buyer_first_name}}, {{buyer_name}}, {{product_title}}, {{store_name}}, {{access_link}}, {{code}}, {{order_ref}}. Null = default ('Your {{product_title}} is ready')."
      +}
  2. Changed5 schema fields changed
    • addedInput schema / properties / membership
      Added value: +{
      +  "description": "Make this a recurring subscription/membership: it tracks a paid period per buyer, renews from their Neuron wallet when possible (else emails a reminder — no card auto-charge), and marks them lapsed when the period + grace passes. React to membership.started/renewed/lapsed in Flows to deliver whatever the membership grants.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / membershipGraceDays
      Added value: +{
      +  "description": "Days after the period ends before an unpaid member lapses (and, if a group is attached, is removed from it). Default 1.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / membershipGroupName
      Added value: +{
      +  "description": "Group subject used when the attached group is auto-created (defaults to the product title). Only relevant with membershipGroupSlug.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / membershipGroupSlug
      Added value: +{
      +  "description": "OPTIONAL: attach a WhatsApp group as a membership perk. Org-unique handle (lowercase letters, numbers, hyphens); the group is created on the first sale, buyers are added on renewal and removed on lapse. Your connected number must be a group admin. Omit for a membership that isn't group-based.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / membershipInterval
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "daily",
      +        "weekly",
      +        "monthly"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Billing period. Required when membership is true."
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / theme / description
      Previous value: -"Per-product theme: { bg, accent, text (hex), mode: 'light'|'dark', layout: 'hero'|'side', coverAspect: '16/10'|'3/2'|'1/1'|'4/5' }"New value: +"Per-product theme: { bg, accent, text (hex), mode: 'light'|'dark', layout: 'hero'|'side', coverAspect: '16/10'|'3/2'|'1/1'|'4/5', cta: buy-button label e.g. 'Reserve your hour' }"
  4. Changed5 schema fields changed
    • addedInput schema / properties / checkoutFields
      Added value: +{
      +  "description": "Custom checkout questions the buyer answers (name, address, specs/customisations…). Their answers are attached to the order and sent to the seller.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "key": {
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "options": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "placeholder": {
      +        "type": "string"
      +      },
      +      "required": {
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "enum": [
      +          "text",
      +          "textarea",
      +          "number",
      +          "email",
      +          "phone",
      +          "select"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "key",
      +      "label",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / coverType / enum
      Previous value: -[
      -  "emoji",
      -  "image",
      -  "color",
      -  "gradient"
      -]New value: +[
      +  "none",
      +  "emoji",
      +  "image",
      +  "color",
      +  "gradient"
      +]
    • addedInput schema / properties / originalPriceMinor
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Optional compare-at / 'was' price (kobo), shown struck through. Must be ≥ current price."
      +}
    • changedInput schema / properties / priceMinor / description
      Previous value: -"Price. Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000."New value: +"Current price (charged). Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000. Set 0 for a free product (no payment)."
    • changedInput schema / properties / theme / description
      Previous value: -"Per-product theme: { bg, accent, text, mode: 'light'|'dark' } (hex colours)"New value: +"Per-product theme: { bg, accent, text (hex), mode: 'light'|'dark', layout: 'hero'|'side', coverAspect: '16/10'|'3/2'|'1/1'|'4/5' }"
  5. Changed5 schema fields changed
    • addedInput schema / properties / content
      Added value: +{
      +  "description": "Rich product-page content blocks. Ordered array of {type, ...}: heading {text,level}, text {markdown}, image {url,caption}, video {url}, callout {emoji,text}, collapsible {title,blocks[]}, divider {}, button {label,url}, embed {url}, spacer {}",
      +  "type": "array"
      +}
    • addedInput schema / properties / coverColor
      Added value: +{
      +  "description": "Cover colour (hex) for 'color'/'gradient' cover types",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / coverColor2
      Added value: +{
      +  "description": "Second colour (hex) for 'gradient' cover",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / coverType
      Added value: +{
      +  "description": "How the cover renders",
      +  "enum": [
      +    "emoji",
      +    "image",
      +    "color",
      +    "gradient"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / theme
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "Per-product theme: { bg, accent, text, mode: 'light'|'dark' } (hex colours)",
      +  "type": "object"
      +}
  6. Added

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent write, so the safety profile is covered. The description adds useful post-creation behavior ('On payment, Neuron confirms it and delivers the product to the buyer's WhatsApp automatically'), but says nothing about required permissions, what happens on repeat calls, or whether a draft/unpublished product is created by default.

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?

Four short sentences, front-loaded with the core purpose before the currency and delivery specifics. The kobo/minimum sentence is largely duplicated from the priceMinor schema description, so a small amount of space is spent restating structured data.

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 32-parameter creation tool with no output schema, the schema itself covers the full field surface, and the description supplies the essential creation-to-delivery flow. It does not mention the membership, codeMode, or deliveryChannel branches, but those are thoroughly self-documented in the schema, so the gap is minor.

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 description coverage is 100% across 32 params, so the schema already documents every field, including the kobo/minimum detail the description repeats for priceMinor. The description adds no parameter meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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 digital product/service') plus the distinguishing artifact it produces ('a public checkout link'), which separates it clearly from neuron_get_product/neuron_update_product/neuron_delete_product. It stops short of naming any sibling explicitly, but the verb+resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives one concrete sequencing rule ('For file delivery, upload the file first with neuron_upload_media and pass its URL as deliveryFileUrl'), which is genuine when-to-use guidance. It offers no guidance on when to create a new product versus reuse neuron_duplicate_product or edit an existing one via neuron_update_product, and no prerequisites around channel/storefront setup.

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