Skip to main content
Glama

Zero to Hundred marketplace

Create a Zero to Hundred draft listing

z2h_create_draft_listing
Destructive

Create an invisible draft and return editUrl and publishUrl. Price and source inclusion are Builder decisions. Set sourceCodeIncluded only after confirmation; omitted values default to false. Requires listings:write. Returns the draft identity, web edit/review links and warnings (quality advice about the saved draft, never an error). Supply a stable idempotencyKey and reuse it on every retry. The same key returns the original draft without editing it. Without a key, check z2h_list_my_listings before retrying. Source delivery, review and publishing continue in the web wizard.

Input Schema

NameRequiredDescriptionDefault
faqsNoSupplying FAQs disables the automatic FAQ draft.
typeYesSoftware category that best matches its main use.
titleYesName Buyers will see on the software listing.
demoUrlNoPublic HTTP or HTTPS demo URL. Omit when no demo is available.
domainsNoIndustry tags for the software. Choose keys from the Zero to Hundred taxonomy: ai, analytics, art-design, auth-identity, cms, conference, developer-tools, devops, e-commerce-marketplace, education, entertainment, environmental, fashion, finance, food, gaming, graphic-design, health, interior-design, marketing, membership, messaging, non-profit, political, productivity, real-estate, religious, services, social, technology, travel, ux-ui, wedding, other. Omission creates a draft without industry tags.
imageUrlsNoHTTP or HTTPS screenshot URLs. The first image becomes the thumbnail.
techStackNoFrameworks and languages used by the software.
askingPriceNoUSD license price confirmed by the Builder. Omit if undecided.
thumbnailUrlNoHTTP or HTTPS image URL for the marketplace thumbnail.
sourceRepoUrlNoGitHub repository URL. Connecting and verifying source continues in the web wizard.
idempotencyKeyNoChoose one random key for this new listing and reuse it on every retry. Replays return the original draft without applying changes. Use update for edits. A new key means a deliberately new listing.
videoUploadUrlNoA YouTube or Loom demo URL.
longDescriptionYesWhat the software does, who it helps, and what the Buyer receives.
operatingStatusYesState of the software itself, independent of the listing publication status.
maintenanceLevelNoMaintenance commitment the Builder offers.
shortDescriptionYesBuyer-facing summary shown on marketplace cards.
documentationLevelNoDocumentation supplied with the software.
sourceCodeIncludedNoWhether the sale includes source code. Omission records false. Set true only after the Builder confirms that source code is included.
associatedListingIdsNoIDs of related listings owned by this Builder, obtained from z2h_list_my_listings.
externalDependenciesNoThird-party services a Buyer must provision. Common values: Supabase, PostgreSQL, MySQL, MongoDB, Redis, Upstash, Firebase, PlanetScale, Neon, Clerk, Auth0, Stripe, PayPal, Plaid, Resend, SendGrid, Postmark, Twilio, OpenAI, Anthropic.

Output Schema

NameRequiredDescriptionDefault
idYesListing ID for related-listing references.
slugYesListing identifier used by the other Builder tools.
statusYesListing publication state. Only drafts can be edited through MCP.
editUrlYesWeb wizard URL for editing this listing.
warningsNoQuality warnings for the saved draft. The save succeeded; fix these with z2h_update_draft_listing to improve the listing. Empty when there is nothing to flag.
createdAtNoISO creation timestamp, returned when creating a draft.
publishUrlYesWeb review step where the Builder finishes publishing.
termsAcceptanceNoPresent when the Builder needs to accept terms before publishing.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "description": "Quality warnings for the saved draft. The save succeeded; fix these with z2h_update_draft_listing to improve the listing. Empty when there is nothing to flag.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "description": "Machine-readable warning code, for example description_short or no_tech_stack.",
      +        "type": "string"
      +      },
      +      "field": {
      +        "description": "Listing field to change, using the same name as the create and update inputs.",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "What to fix, in plain words.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "field",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / idempotencyKey
      Added value: +{
      +  "description": "Choose one random key for this new listing and reuse it on every retry. Replays return the original draft without applying changes. Use update for edits. A new key means a deliberately new listing.",
      +  "maxLength": 128,
      +  "minLength": 8,
      +  "pattern": "^[a-zA-Z0-9_-]+$",
      +  "type": "string"
      +}
  3. Changed6 schema fields changed
    • changedInput schema / properties / domains / description
      Previous value: -"Industry domain keys from Zero to Hundred taxonomy, such as finance."New value: +"Industry tags for the software. Choose keys from the Zero to Hundred taxonomy: ai, analytics, art-design, auth-identity, cms, conference, developer-tools, devops, e-commerce-marketplace, education, entertainment, environmental, fashion, finance, food, gaming, graphic-design, health, interior-design, marketing, membership, messaging, non-profit, political, productivity, real-estate, religious, services, social, technology, travel, ux-ui, wedding, other. Omission creates a draft without industry tags."
    • changedInput schema / properties / externalDependencies / items / anyOf
      Previous value: -[
      -  {
      -    "description": "Service name, such as Stripe.",
      -    "maxLength": 80,
      -    "minLength": 1,
      -    "type": "string"
      -  },
      -  {
      -    "properties": {
      -      "cost": {
      -        "description": "Expected service cost, such as USD 20/month.",
      -        "maxLength": 40,
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "Service the Buyer must provision.",
      -        "maxLength": 80,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "note": {
      -        "description": "What the software needs this service for.",
      -        "maxLength": 200,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "name"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Service name, such as Stripe.",
      +    "maxLength": 80,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  {
      +    "properties": {
      +      "cost": {
      +        "description": "Expected service cost, such as USD 20/month.",
      +        "maxLength": 40,
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "Name of a service the Buyer needs to operate the software, such as Stripe.",
      +        "maxLength": 80,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "note": {
      +        "description": "What the software needs this service for.",
      +        "maxLength": 200,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / faqs / items / properties / question / description
      Previous value: -"Question a Buyer may ask."New value: +"Buyer question addressed by the paired answer."
    • changedInput schema / properties / shortDescription / description
      Previous value: -"One-sentence summary for marketplace cards."New value: +"Buyer-facing summary shown on marketplace cards."
    • changedInput schema / properties / sourceCodeIncluded / description
      Previous value: -"Whether the sale includes source code, as confirmed by the Builder."New value: +"Whether the sale includes source code. Omission records false. Set true only after the Builder confirms that source code is included."
    • changedInput schema / properties / title / description
      Previous value: -"Software name shown to Buyers."New value: +"Name Buyers will see on the software listing."
  4. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: the draft is invisible (not published), write scope is required, warnings are quality advice about the saved draft and never an error, and replaying the same key returns the original draft unchanged rather than creating a second listing. This meaningfully explains the retry story that the idempotentHint=false annotation would otherwise leave ambiguous. The one unexplained point is why destructiveHint=true is set on a draft-creation tool, which an agent may find disconcerting.

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 and return payload are front-loaded, and the retry/idempotency rules follow in logical order with no filler sentences. Some clauses are tightly packed (the warnings sentence carries two ideas at once), and the return-value sentence partially overlaps the output schema, but overall the length is justified for a 20-parameter mutation.

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 20-parameter, open-world, non-read-only create tool with an output schema, the description covers the essentials: preconditions, draft visibility, retry safety, warning semantics, and where the workflow hands off. It does not address the destructive annotation, rate limits, or what happens to an abandoned draft, which leaves minor gaps for an agent reasoning about side effects.

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%, so the schema already carries per-field meaning and the baseline is 3. The description does add decision-level guidance for two fields (askingPrice and sourceCodeIncluded are Builder decisions; omission records false), but it does not extend to the remaining eighteen parameters.

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?

Opens with a specific verb and resource: "Create an invisible draft and return editUrl and publishUrl." The word "draft" plus the return payload makes it distinguishable from z2h_update_draft_listing and z2h_confirm_source_upload, though the description never names the sibling to use for edits (that routing only appears inside the idempotencyKey schema text).

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?

Gives concrete conditions: requires listings:write, set sourceCodeIncluded only after confirmation, supply and reuse an idempotencyKey on retries, and if no key was supplied check z2h_list_my_listings before retrying. It also scopes the tool's boundary by stating that source delivery, review and publishing continue in the web wizard. It stops short of an explicit "when not to use this / use update_draft_listing instead" statement in the description body.

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.