Skip to main content
Glama

Server Details

Manage Webtzm forms that send submissions to Google Sheets: list, embed, create, update, pause.

Ownership verified
Status
Healthy
Uptime
82.1% over 28 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct target: one form vs. all forms, one submission vs. recent submissions, embed code, and workspace metadata. There is minor overlap because get_workspace references list_forms, but the actual outputs are distinct.

Naming Consistency5/5

All names follow a consistent snake_case get_/list_ pattern with clear noun phrases. No mixed conventions or vague verbs.

Tool Count5/5

Six tools are well scoped for a read-only inspection surface covering forms, submissions, embed code, and workspace status. Each tool earns its place without redundancy.

Completeness2/5

The surface is entirely read-only and references actions such as update_form, set_form_status, retry_delivery, and allow_website that are not exposed as tools. Agents can diagnose issues but cannot perform the fixes or lifecycle operations the descriptions imply.

Available Tools

6 tools
get_formGet a formB
Read-only
Inspect

One form's settings: fields, allowed websites, success message or redirect, anti-spam check, owner alert, Google Sheet link, the form it changes rows of (targetFormId) if any, whether Record Fetch is on, and the revision update_form and set_form_status need.

NameRequiredDescriptionDefault
form_idYesThe form's id, as list_forms returns it.

Output Schema

NameRequiredDescription
idYes
nameYes
sheetYes
fieldsYes
outputYes
statusYes
revisionYes
operationNo
ownerAlertYes
recordLinksNo
allowedSitesYes
targetFormIdNo
retentionDaysNo
spamProtectionYes
successMessageYes
recordFetchEnabledNo
successRedirectUrlYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful cross-tool context: it notes the response carries "the revision update_form and set_form_status need", which tells the agent this call is a prerequisite for those mutations — something not derivable from the schema. It does not discuss failure behavior for unknown form_id or the size/shape of the payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single compact sentence with no filler, and the essential head ("One form's settings") is front-loaded. However, it is an unpunctuated comma-list of ten items that is harder to scan than a short prose sentence plus a few grouped clauses would be, and the parenthetical targetFormId mixes schema-level detail into prose.

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?

With readOnly annotations and a full output schema in place, the description only needs to establish scope and any non-obvious dependencies — and it does flag the update_form/set_form_status revision dependency. Only the lack of a stated verb and of sibling routing keeps it from being fully complete.

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 coverage is 100% and the single form_id parameter is documented there as "The form's id, as list_forms returns it." The description adds nothing about the parameter itself (no format, prefix, or ID-provenance detail beyond what the schema says), 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?

The description enumerates exactly what a caller gets back from a single form: fields, allowed websites, success message/redirect, anti-spam, alerts, sheet link, targetFormId, Record Fetch state, and revision id. That is a specific, distinctive resource scope, though it never states a verb ("retrieve"/"read") and never contrasts itself with list_forms or get_form_embed_code, so the sibling separation is inferred from "One form's" only.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives such as list_forms for enumeration or get_form_embed_code for the embed snippet. The reader must infer from the resource scope alone that this is the read-one-by-id call.

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

get_form_embed_codeGet a form's HTMLA
Read-only
Inspect

The HTML to put a form on a website, plus the rules for using it: paste it unchanged except for styling, keep every name attribute and the hidden _webtzm_form and _webtzm_rev inputs, and publish it only on one of the form's allowed websites.

NameRequiredDescriptionDefault
form_idYesThe form's id, as list_forms returns it.

Output Schema

NameRequiredDescription
htmlYes
rulesYes
formIdYes
statusYes
allowedSitesYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral constraints: preserve every name attribute and hidden inputs, paste unchanged except for styling, and publish only on allowed websites. It does not explain return format or rate limits, but the output schema covers return values.

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?

The description is a single dense sentence that front-loads the tool's purpose before listing usage rules. It contains no obvious waste, though the colon-separated rule list is slightly dense and could be more scannable.

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 one-parameter read-only tool with an output schema, the description covers what the tool returns and the critical constraints on using the HTML. The main gap is the lack of explicit sibling differentiation, which matters because get_form and list_forms are adjacent tools.

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 coverage is 100%, and the single form_id parameter is already documented as 'The form's id, as list_forms returns it.' The description adds no additional meaning or syntax beyond the schema, so the baseline of 3 is appropriate.

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?

The description clearly states the resource and output: 'The HTML to put a form on a website.' It is specific enough to distinguish from siblings like get_form or get_submission, but it does not explicitly name or contrast those alternatives.

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

Usage Guidelines2/5

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

The description provides rules for using the returned HTML, but it does not explain when to call this tool versus siblings such as get_form, list_forms, or get_submission. There is no explicit selection guidance or exclusion criteria for the agent.

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

get_submissionGet one submissionA
Read-only
Inspect

One submission by its id, as list_recent_submissions returns it: its form, status, what it does to its Sheet row (operation insert, update or archive, and for a change the entry it changes as targetSubmissionId), when it was accepted and delivered, delivery attempts, whether an insert's row was later removed (removed, removedAt), and for one that needs review the reason - where it broke and which fix applies. Status only, like list_recent_submissions: what the person answered is never included.

NameRequiredDescriptionDefault
submission_idYesThe submission's id, as list_recent_submissions returns it.

Output Schema

NameRequiredDescription
idYes
formIdYes
statusYes
removedNo
attemptsNo
formNameNo
reviewedNo
errorCodeNo
operationYes
removedAtNo
acceptedAtYes
deliveredAtNo
needsReviewYes
needsReviewReasonNo
targetSubmissionIdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real substance beyond that: it discloses the status-only payload ('what the person answered is never included'), the removed/removedAt lifecycle flag for inserts, and the review-reason field. No auth or rate-limit notes, but the scope disclosure is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the opening clause, but the middle of the description is a long comma-spliced enumeration of return fields (operation, targetSubmissionId, accepted/delivered, attempts, removed, removedAt, review reason) that the output schema already carries. Useful sentences coexist with redundant ones.

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?

An output schema exists, so return values needn't be spelled out, and the description is more than sufficient to invoke the tool correctly with one required id. It is slightly misallocated — heavy on return-field detail, thin on when to prefer a sibling — but nothing needed for a correct call is missing.

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 coverage is 100% and the single parameter already documents itself as 'The submission's id, as list_recent_submissions returns it.' The description only restates 'by its id' without adding format, source, or failure semantics, so baseline 3 applies.

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+resource pair ('One submission by its id') and immediately anchors it against the sibling that produces those ids ('as list_recent_submissions returns it'). An agent can distinguish it from list_recent_submissions and get_form without 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?

Implicitly routes the agent: ids come from list_recent_submissions, and this tool takes exactly one. It gives clear context for use but never states exclusions, e.g. that you shouldn't call it for a form definition (get_form) or for bulk retrieval.

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

get_workspaceGet the Webtzm workspaceA
Read-only
Inspect

The connected Webtzm workspace: its name, plan, this month's submissions and active forms against the plan's limits, whether Google is connected (Reconnect Google in the console if it is not), and the console address. The console shows the workspace's forms as Connections; list_forms returns the same set.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
nameYes
planYes
usageYes
googleYes
consoleUrlYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish this is a safe, read-only, non-destructive call, so the bar is lower. The description adds genuinely useful behavior beyond that: it exposes plan-limit comparison, Google connection state, and a remediation hint ('Reconnect Google in the console') that no structured field conveys.

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 resource contents, then a short second sentence to disambiguate from list_forms. Slightly dense with clauses, but each one carries distinct information and nothing is wasted.

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 values need not be spelled out, and the description still summarizes the payload plus the plan-limit and connection semantics an agent needs to interpret it. Nothing required 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?

Zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The schema is empty and fully covered, so no compensating explanation is required.

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?

The description enumerates exactly what the workspace object contains (name, plan, submission/form counts against limits, Google connection status, console address), so an agent knows precisely what this returns. It also explicitly distinguishes itself from the sibling list_forms by noting the console renders the same set as Connections.

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?

Usage context is clear: reach for this to read workspace-level state (plan, limits, Google connection) rather than per-form data, and the list_forms overlap note prevents redundant calls. It stops short of explicit when-not-to-use guidance or naming every sibling as an alternative.

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

list_formsList formsB
Read-only
Inspect

Every form in the workspace with its id, name, status (active, paused, draft or archived), Google output, Google Sheet link, submissions this month, when it last had delivery activity, what it does to its Sheet (operation insert adds rows; update and archive change or remove rows of the form named by targetFormId), whether Record Fetch is on, whether the rows of a form carry edit or remove links (recordLinksEnabled: a form that changes or removes rows puts them there itself, and a form that adds rows has them through the forms linked to it), how many submissions need review (needsReview: stopped for good and not marked reviewed - a delivery with another attempt scheduled is not counted) and how many are held for a website not yet allowed (heldSubmissions). The console shows each form that adds rows as a Connection, with the forms whose targetFormId names it linked to it as its edit and remove abilities; a Connection reads Paused when its form is paused and Needs review when needsReview or heldSubmissions is above zero.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
formsYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-obvious domain semantics — how needsReview excludes deliveries with another attempt scheduled, how heldSubmissions counts blocked-site deliveries, and how recordLinksEnabled propagates through linked forms — which is real added value, though it is expressed as return-field lore rather than tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single ~230-word run-on sentence with deeply nested parentheticals, several of which are sentences themselves. It front-loads the resource well but then buries the operationally important distinctions (needsReview, heldSubmissions, Connection status) in an unparseable clause chain.

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

Completeness3/5

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

An output schema exists, so the description did not need to enumerate return fields at all — yet nearly all of its length is spent re-explaining them. What an agent actually needs for a parameterless read-only list (result size, ordering, whether the whole workspace is always returned) is absent.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly does not invent any filtering or scoping inputs.

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?

The opening clause states a specific verb and resource with scope: 'Every form in the workspace with its id, name, status...'. An agent can tell it returns the full collection rather than a single record, which implicitly separates it from get_form, but no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus get_form, get_form_embed_code, or list_recent_submissions. Usage is only inferable from the field list ('Every form in the workspace'), and there is no mention of ordering, paging, or cost for what could be a large workspace-wide read.

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

list_recent_submissionsList recent submissionsA
Read-only
Inspect

The delivery status of recent submissions, any that need review, and any held because they came from a website the form does not allow yet, newest first. Status only: pending or processing means In delivery, synced means Delivered to Sheet (or to the form's other Google output), failed means another delivery attempt is scheduled, dead_letter means Needs review, and needsReview lists only those (never a delivery with another attempt scheduled), the same count list_forms and the console give. acceptedAt is when Webtzm accepted a submission and deliveredAt when Webtzm wrote it to Google (null until then). operation says what a submission does to its Sheet row: insert adds a row, update changes the row of the entry named by targetSubmissionId, archive removes that row. An insert whose row was later removed has removed true and removedAt (when the removal reached the Sheet, or was accepted while still on its way); its own status stays synced because it was delivered. Each needs-review item says where it broke and which reversible fix applies (retry_delivery, or Reconnect Google in the console). Held items name the website; allow_website releases them. Each submission's receipt is the confirmation email to the person who submitted (null when the form sends none): pending, sent, retrying, failed, or skipped with a reason and a summary - recipient_receipt_cap means that address already had the daily maximum of receipts from this form, which resets at 00:00 UTC and needs no fix. For older submissions pass nextCursor back as cursor; get_submission reads one submission by id. What people answered is never included.

NameRequiredDescriptionDefault
limitNoHow many recent submissions to return, 1 to 20. Defaults to 10.
cursorNoWhere to continue: the nextCursor of the previous answer. Omit for the newest.
form_idNoOnly this form's submissions. Omit for the whole workspace.

Output Schema

NameRequiredDescription
heldNo
recentYes
nextCursorNo
needsReviewYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/non-destructive annotations, it discloses rich domain behavior: exact status mappings, what needsReview excludes, how removed inserts retain synced status, receipt states including recipient_receipt_cap, and that answers are never included. This is substantial context an agent could not infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded and nearly every clause carries domain meaning, but it is delivered as one very long run-on paragraph. The density makes it harder to scan than it needs to be for a list tool with only three parameters.

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?

Given the rich status model, receipt semantics, and output schema, the description is complete enough for an agent to interpret results correctly. It covers pagination, filtering scope, and the important caveat that answers are excluded.

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 already 100%, so the baseline is 3. The description adds useful meaning by tying cursor to the previous answer's nextCursor and clarifying that form_id scopes to one form while omission covers the workspace.

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?

The description clearly identifies the resource (recent submissions), the main payload (delivery status), and the three triage views (delivered, needs review, held), plus newest-first ordering. It also distinguishes itself from get_submission by saying that tool reads one submission by id.

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?

It gives explicit continuation guidance ('For older submissions pass nextCursor back as cursor'), names get_submission as the single-record alternative, and explains that held items can be released with allow_website. It lacks a broad 'use this when' statement, but the usage context is clear.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_form1 field changed
      • addedOutput schema / properties / recordLinks / properties / viaLinkedForms
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedget_submission
    • Changedlist_recent_submissions2 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Where to continue: the nextCursor of the previous answer. Omit for the newest.",
        +  "maxLength": 400,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedOutput schema / properties / nextCursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  2. 1 tool update
    • Changedlist_recent_submissions1 field changed
      • addedOutput schema / properties / held
        Added value: +{
        +  "type": "array"
        +}
  3. 2 tool updates
    • Changedget_form3 fields changed
      • addedOutput schema / properties / recordFetchEnabled
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / recordLinks
        Added value: +{
        +  "properties": {
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "onlyAcceptChangesFromLinks": {
        +      "type": "boolean"
        +    },
        +    "showCurrentAnswers": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / targetFormId
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedlist_forms4 fields changed
      • addedOutput schema / properties / forms / items / properties / operation
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / forms / items / properties / recordFetchEnabled
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / forms / items / properties / recordLinksEnabled
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / forms / items / properties / targetFormId
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  4. 5 tool updates
    • First observedget_form
    • First observedget_form_embed_code
    • First observedget_workspace
    • First observedlist_forms
    • First observedlist_recent_submissions

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources