Skip to main content
Glama

Get a form

get_form
Read-onlyIdempotent

Get one form by id when it belongs to the authenticated organization. Requires an org API key with the forms:read scope. When the form is published and not soft-deleted, also returns publicUrl, publicFormUrl, embedUrl, and embedSnippet, and a draft that was never published omits those fields. A soft-deleted form omits those fields too.

Input Schema

NameRequiredDescriptionDefault
idYesForm id.

Output Schema

NameRequiredDescriptionDefault
idYesForm id.
slugYes
orgIdYes
titleYes
statusYesdraft or published.
embedUrlNoIframe URL, /{org}/{form}?embed=1. Omitted when the form has never been published or is soft-deleted.
settingsYesClient settings JSON. Internal keys are omitted.
createdAtYes
deletedAtYes
publicUrlNoSame URL as publicFormUrl. Omitted when the form has never been published or is soft-deleted.
updatedAtYes
embedSnippetNoScript tag that embeds the form. Omitted when the form has never been published or is soft-deleted.
publicFormUrlNoCanonical public form URL. Omitted when the form has never been published or is soft-deleted.
currentVersionIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / embedSnippet
      Added value: +{
      +  "description": "Script tag that embeds the form. Omitted when the form has never been published or is soft-deleted.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / embedUrl
      Added value: +{
      +  "description": "Iframe URL, /{org}/{form}?embed=1. Omitted when the form has never been published or is soft-deleted.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / publicFormUrl
      Added value: +{
      +  "description": "Canonical public form URL. Omitted when the form has never been published or is soft-deleted.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / publicUrl
      Added value: +{
      +  "description": "Same URL as publicFormUrl. Omitted when the form has never been published or is soft-deleted.",
      +  "format": "uri",
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • addedInput schema / properties / id / description
      Added value: +"Form id."
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "createdAt": {
      +      "type": "integer"
      +    },
      +    "currentVersionId": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "deletedAt": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "id": {
      +      "description": "Form id.",
      +      "type": "string"
      +    },
      +    "orgId": {
      +      "type": "string"
      +    },
      +    "settings": {
      +      "description": "Client settings JSON. Internal keys are omitted.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "slug": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "draft or published.",
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "updatedAt": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "orgId",
      +    "slug",
      +    "title",
      +    "status",
      +    "currentVersionId",
      +    "settings",
      +    "createdAt",
      +    "updatedAt",
      +    "deletedAt"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description earns credit for adding auth requirements (org API key with forms:read scope) and the conditional presence of publicUrl/publicFormUrl/embedUrl/embedSnippet based on published/soft-deleted state, which structured fields do not convey.

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-loaded with the core action, then auth, then return-shape conditions. Three sentences all carry information, though the trailing "omits those fields too" repeats the prior clause and could be tightened.

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?

The tool is simple (one required id, output schema present), so return values need not be re-explained, yet the description still covers ownership scoping, auth scope, and conditional field behavior. Nothing an agent needs to invoke it 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% for the single id parameter, so the baseline is 3. The description adds meaning beyond the schema by constraining the id to a form owned by the authenticated organization, clarifying the lookup semantics.

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 ("Get one form by id") and scopes it to the authenticated organization. An agent can immediately distinguish this from list_forms and the mutation siblings like update_form or discard_form.

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 conditions for use: the form must belong to the authenticated org and the caller needs an org API key with forms:read scope. It does not explicitly name alternatives (e.g., list_forms for enumeration), so it stops short of full when/when-not routing.

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