Skip to main content
Glama

publish_form

DestructiveIdempotent

Publish a form draft to make it live and accepting responses, generating a public URL for sharing. Set a deadline or response cap so the form closes automatically when either is reached.

Instructions

Publish a form draft to make it publicly accessible for responses.

After publishing:

  • The form will be live and accepting responses

  • A public URL will be generated for sharing

  • Usage limits will apply based on your plan

  • The form can be shared via link, QR code, or embedded

You can set a deadline with close_at and/or a cap with response_limit; the form stops accepting responses when either is reached. Calling publish_form again on a published or closed form updates these settings (pass null to clear one) and reopens a closed form. Share the returned publicUrl with respondents yourself; niceform does not send it anywhere.

Important: Publishing a form counts toward your plan's form limit.

Input Schema

NameRequiredDescriptionDefault
nameNoOptional: Override the form name before publishing. If not provided, uses the AI-generated name.
form_idYesThe form UUID or public id.
close_atNoISO 8601 timestamp with offset (e.g. 2026-12-01T17:00:00Z) after which the form stops accepting responses. null clears it.
response_limitNoMaximum number of responses to accept. null removes the limit.

Output Schema

NameRequiredDescriptionDefault
nameYes
formIdYes
statusYes
closeAtNo
publicIdYes
publicUrlYes
formStatusNo
responseLimitNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that a public URL is generated, that the caller must distribute it themselves, that plan limits are consumed, that close_at/response_limit both halt responses when reached, and that null clears a setting. The reopen-a-closed-form behavior adds real context for a call flagged destructiveHint=true.

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?

Front-loads the core action, then uses a tight bullet list for post-conditions and a paragraph for the deadline/cap and re-publish rules. Minor overlap between the 'usage limits' bullet and the closing 'form limit' warning keeps it from a 5.

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

Completeness5/5

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

With an output schema present, return fields needn't be enumerated, and the description still calls out publicUrl explicitly. Plan limits, sharing mechanics, deadline/cap behavior, and re-publish semantics are all covered, so nothing an agent needs to call this correctly is missing.

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 the baseline is 3, but the description adds interaction semantics the schema does not state: either close_at or response_limit terminates acceptance, and null clears each. It still doesn't explain the name override's effect beyond what the schema says.

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 ('Publish a form draft to make it publicly accessible for responses') and delineates the resulting state change. The re-publish clause ('Calling publish_form again on a published or closed form updates these settings... and reopens a closed form') implicitly separates it from close_form and create_form, so an agent can route correctly.

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 clear context for invoking it, including the less obvious re-invocation case for editing close_at/response_limit and reopening closed forms. It never explicitly says when to prefer close_form instead, so one exclusion is missing, but the operational guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.