Skip to main content
Glama

Create a blank draft form

create_form

Create a blank draft form in the authenticated organization. Requires an org API key or OAuth sign-in with the forms:write scope. Same blank form as POST /api/v1/forms when no conversion, report, or preview is sent: title Volunteer application unless title is set, with First name and Email. Optional template volunteer-application-form or volunteer-interest-form seeds that template's fields instead, using the on-server parser. Workers AI stays off. An unknown template is an error and does not create a form. Title is at most 200 characters. MCP, an org API key, and OAuth share a limit of 60 creates per organization per hour. A website session is not counted. Returns formId and editorUrl (/app/forms/{formId}). Does not publish the form.

Input Schema

NameRequiredDescriptionDefault
titleNoOptional title, at most 200 characters. Omitted uses Volunteer application, or the template title when template is set. Empty uses Volunteer application.
templateNoOptional. volunteer-application-form or volunteer-interest-form. Seeds the draft with that template instead of First name and Email.

Output Schema

NameRequiredDescriptionDefault
addedNoFields inserted by this call.
titleYes
fieldsYes
formIdYesDraft form id.
statusYes
settingsNoSettings the editor would show. Null when unset.
editorUrlYesEditor URL, /app/forms/{formId}.
versionIdNoVersion being edited, when one exists.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • addedInput schema / properties / title / description
      Added value: +"Optional title, at most 200 characters. Omitted uses Volunteer application, or the template title when template is set. Empty uses Volunteer application."
    • addedInput schema / properties / title / maxLength
      Added value: +200
    • addedInput schema / properties / title / type
      Added value: +"string"
  2. Changed1 schema field changed
    • addedInput schema / properties / template
      Added value: +{
      +  "description": "Optional. volunteer-application-form or volunteer-interest-form. Seeds the draft with that template instead of First name and Email.",
      +  "enum": [
      +    "volunteer-application-form",
      +    "volunteer-interest-form"
      +  ],
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "added": {
      +      "description": "Fields inserted by this call.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "$ref": "#/properties/fields/items/properties/id"
      +          },
      +          "key": {
      +            "$ref": "#/properties/fields/items/properties/key"
      +          },
      +          "label": {
      +            "$ref": "#/properties/fields/items/properties/label"
      +          },
      +          "order": {
      +            "$ref": "#/properties/fields/items/properties/order"
      +          },
      +          "required": {
      +            "$ref": "#/properties/fields/items/properties/required"
      +          },
      +          "stageId": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": {
      +            "$ref": "#/properties/fields/items/properties/type"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "key",
      +          "label",
      +          "type",
      +          "required",
      +          "order"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "editorUrl": {
      +      "description": "Editor URL, /app/forms/{formId}.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "fields": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "key": {
      +            "type": "string"
      +          },
      +          "label": {
      +            "type": "string"
      +          },
      +          "order": {
      +            "type": "integer"
      +          },
      +          "required": {
      +            "type": "boolean"
      +          },
      +          "type": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "key",
      +          "label",
      +          "type",
      +          "required",
      +          "order"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "formId": {
      +      "description": "Draft form id.",
      +      "type": "string"
      +    },
      +    "settings": {
      +      "description": "Settings the editor would show. Null when unset."
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "versionId": {
      +      "description": "Version being edited, when one exists.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "formId",
      +    "title",
      +    "status",
      +    "editorUrl",
      +    "fields"
      +  ],
      +  "type": "object"
      +}
  4. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the safety profile (write, non-destructive, closed-world); the description layers on the details an agent actually needs: auth scope, the 60-creates-per-org-per-hour rate limit shared across channels, Workers AI staying off, error behavior for unknown templates, and the 200-character title cap.

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?

Dense but front-loaded: identity and auth first, then behavior, limits, errors, and return value. Every clause carries information, though the run-on comma-heavy prose could be trimmed slightly for scanability.

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?

For a 2-optional-param mutation tool, it covers auth, defaults, template semantics, error cases, rate limits, and side effects. Return values (formId, editorUrl) are restated despite an output schema existing, but 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?

With 100% schema coverage the baseline is 3, and the description adds real meaning beyond the schema: it specifies the default title resolution ('Volunteer application unless title is set') and that a template 'seeds that template's fields instead, using the on-server parser,' clarifying the interaction of the two optional params.

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 with scope: 'Create a blank draft form in the authenticated organization.' It pins down what 'blank' means ('no conversion, report, or preview is sent', default fields First name and Email), which implicitly separates it from create_form_from_pdf and preview_volunteer_form without the agent opening any schema.

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: requires an org API key or OAuth with forms:write, template is optional, and an unknown template is an error. It also states what it does not do ('Does not publish the form'), routing the agent to publish_form. It stops short of explicitly naming sibling tools such as create_form_from_pdf as the alternative when a PDF is available.

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