Typeform
Forms and surveys. Build and remove forms, read and clear responses, manage webhooks and themes, and pull response-rate insights.
| Property | Value |
|---|---|
| Slug | typeform |
| Definition version | 0.1.0 |
| Base URL | https://api.typeform.com |
| Auth schemes | api_key |
| Action tools | 28 |
| By class | 14 read, 8 write, 6 destructive |
| Triggers | 0 |
| Provider rate limit | not declared, so outbound calls are unpaced |
Measured routing accuracy
56 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 28 cases written by hand and 28 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.
| Measure | Cases | Share |
|---|---|---|
| top-1 | 26/56 | 46.4% |
| top-8 | 51/56 | 91.1% |
The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.
Authentication
Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.
api_key
| Property | Value |
|---|---|
| Placement | header |
| Name | Authorization |
| Rendered as | Bearer {key} |
Submit the key with ConnectionsService rather than putting it in a request; it is sealed at rest and never returned.
Tools
28 action tools. The catalog-wide slug is typeform.<tool>, which is what search_tools returns and call_tool takes.
typeform.get_current_account
Get the connected Typeform account's own profile: account id, email, and alias. Use when the user asks whose Typeform account is connected, or before a tool that needs the account's own identity rather than a form or workspace id.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /me.
Takes no arguments.
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
account_id | string | |
alias | string | |
email | string | |
language | string |
Also retrieved by: "whose typeform account is this", "show my own typeform profile", "what email is my typeform login tied to", "check which account is connected".
typeform.list_forms
List the Typeform forms and surveys in the connected account, with each form's id, title, and last updated time. Use when the user asks what forms or surveys they have, wants to find one by name, or needs a form's id before get_form or list_responses. Filter by workspace or by a title search.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
page | integer | no | Page number, default 1. |
page_size | integer | no | Results per page, default 10, max 200. |
search | string | no | Filter to forms whose title contains this text. |
workspace_id | string | no | Filter to forms that live in this workspace. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[]._links | object | |
items[]._links.display | string | |
items[].id | string | |
items[].last_updated_at | string | |
items[].settings | object | |
items[].settings.is_public | boolean | |
items[].title | string | |
page_count | integer | |
total_items | integer |
Also retrieved by: "what surveys do I have set up", "show me every questionnaire I've built", "find the form named customer feedback", "list all my typeform builds", "what did I make recently", "pull up my form library".
typeform.get_form
Get one Typeform form's full definition by form id: title, every question field, theme, and settings. Use after list_forms or when the user already names a specific form and wants to see or check its questions before update_form or create_webhook.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms/{{params.form_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id from list_forms. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
_links | object | |
_links.display | string | |
fields | array of object | |
fields[].id | string | |
fields[].ref | string | |
fields[].title | string | |
fields[].type | string | |
id | string | |
language | string | |
settings | object | |
settings.is_public | boolean | |
settings.progress_bar | string | |
settings.show_progress_bar | boolean | |
theme | object | |
theme.href | string | |
title | string | |
workspace | object | |
workspace.href | string |
Also retrieved by: "show me all the questions on that survey", "pull up the full build for that questionnaire", "what does that intake form actually ask", "open up that specific survey's structure".
typeform.create_form
Build a new Typeform form or survey from a title and a list of question fields. Use when the user wants to make, build, or create a new form, survey, or questionnaire from scratch. For copying an existing form's questions, read it first with get_form and pass its fields here.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /forms.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
fields | array of object | no | Question fields, in display order. |
fields[].properties | object | no | Type-specific settings, e.g. choices for multiple_choice. |
fields[].ref | string | no | Stable id you assign this question, for later reference. |
fields[].title | string | no | The question text shown to respondents. |
fields[].type | string, one of short_text, long_text, multiple_choice, yes_no, email, number, rating, opinion_scale, date, file_upload | no | Question field type. |
settings | object | no | Form-level settings, e.g. is_public true and progress_bar set to "proportion". |
theme_id | string | no | Theme id to apply. Omit for Typeform's default theme. |
title | string | yes | The new form's title. |
workspace_id | string | no | Workspace to create the form in. Omit for the account's default workspace. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
_links | object | |
_links.display | string | |
fields | array of object | |
fields[].id | string | |
fields[].ref | string | |
fields[].title | string | |
fields[].type | string | |
id | string | |
title | string |
Also retrieved by: "build me a new customer feedback survey", "make a questionnaire with these questions", "set up a fresh intake form from scratch", "I need a new form for collecting signups".
typeform.update_form
Replace a Typeform form's title, questions, theme, or settings by form id. Use when the user wants to edit, rename, or rework an existing form's questions, not create a new one. This replaces the whole form definition, so read it first with get_form and edit the fields you want changed.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /forms/{{params.form_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
fields | array of object | no | Full replacement list of question fields. |
fields[].properties | object | no | |
fields[].ref | string | no | |
fields[].title | string | no | |
fields[].type | string, one of short_text, long_text, multiple_choice, yes_no, email, number, rating, opinion_scale, date, file_upload | no | |
form_id | string | yes | Typeform form id to update. |
settings | object | no | Full replacement form-level settings object. |
theme_id | string | no | New theme id to apply. |
title | string | no | New form title. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
fields | array of object | |
fields[].id | string | |
fields[].ref | string | |
fields[].title | string | |
fields[].type | string | |
id | string | |
title | string |
Also retrieved by: "rework the questions on that survey", "rename that questionnaire and swap its look", "edit the fields on my existing intake form", "change the questions in that build".
typeform.delete_form
Permanently delete a Typeform form by form id, along with its collected responses. Use when the user wants to remove, trash, or get rid of a form entirely. Unrecoverable: the form's questions and every response tied to it are gone, not merely unpublished.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /forms/{{params.form_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id to delete permanently. |
Also retrieved by: "trash that old survey for good", "get rid of the questionnaire I don't need anymore", "remove that form and everything tied to it", "wipe out that intake build entirely".
typeform.list_responses
List the responses submitted to a Typeform form, with each respondent's answers and submission time. Use when the user asks what came in on a form, wants recent submissions, or needs a response's id before delete_responses. Filter by completion, a date range, or a free-text query over the answers.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms/{{params.form_id}}/responses.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
completed | boolean | no | Filter to only completed (true) or only partial (false) responses. |
form_id | string | yes | Typeform form id whose responses to list. |
page_size | integer | no | Results per page, default 25, max 1000. |
query | string | no | Free-text search over respondent answers and hidden fields. |
since | string | no | Only responses submitted at or after this ISO 8601 time. |
sort | string, one of submitted_at, submitted_at, asc, submitted_at, desc | no | Sort order, default newest first. |
until | string | no | Only responses submitted before this ISO 8601 time. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].answers | array of object | |
items[].answers[].boolean | boolean | |
items[].answers[].choice | object | |
items[].answers[].date | string | |
items[].answers[].email | string | |
items[].answers[].field | object | |
items[].answers[].number | number | |
items[].answers[].text | string | |
items[].answers[].type | string | |
items[].answers[].url | string | |
items[].landed_at | string | |
items[].response_id | string | |
items[].submitted_at | string | |
items[].token | string | |
page_count | integer | |
total_items | integer |
Also retrieved by: "what came in on my feedback survey", "show me the latest submissions", "who filled out that questionnaire this week", "pull up everyone who answered that form".
typeform.get_response
Get one Typeform response's full answers by form id and response id. Use after list_responses or when the user already has a specific submission's id and wants just its answers rather than a whole page of results.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms/{{params.form_id}}/responses.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id the response belongs to. |
response_id | string | yes | Response id from list_responses. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].answers | array of object | |
items[].answers[].boolean | boolean | |
items[].answers[].choice | object | |
items[].answers[].date | string | |
items[].answers[].email | string | |
items[].answers[].field | object | |
items[].answers[].number | number | |
items[].answers[].text | string | |
items[].answers[].type | string | |
items[].answers[].url | string | |
items[].landed_at | string | |
items[].response_id | string | |
items[].submitted_at | string | |
items[].token | string |
Also retrieved by: "what did that specific person answer", "pull up one submission's full answers", "show me a single entry from that survey".
typeform.delete_responses
Permanently erase one or more submitted responses from a Typeform form by their response ids. Use when the user wants to clear out, wipe, or remove specific submissions, such as test entries or a privacy request. Unrecoverable; the answers are gone, not merely hidden from list_responses.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /forms/{{params.form_id}}/responses.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id the responses belong to. |
response_ids | array of string | yes | Response ids to delete permanently, from list_responses. |
Also retrieved by: "clear out those test submissions", "wipe a handful of entries from that survey", "remove specific answers, someone asked to be forgotten", "erase those particular responses for good".
typeform.list_webhooks
List the webhooks registered on a Typeform form, with each one's tag, target url, and enabled state. Use when the user asks what integrations or notification hooks are wired up to a form, or before update_webhook or delete_webhook.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms/{{params.form_id}}/webhooks.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id whose webhooks to list. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].enabled | boolean | |
items[].id | string | |
items[].tag | string | |
items[].updated_at | string | |
items[].url | string | |
items[].verify_ssl | boolean |
Also retrieved by: "what integrations are wired to that survey", "show me every hook connected to that form", "what's listening for new submissions on this build".
typeform.get_webhook
Get one Typeform webhook's full details by form id and tag: its target url, enabled state, and secret status. Use after list_webhooks or when the user already names a specific webhook and wants to check its current settings.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /forms/{{params.form_id}}/webhooks/{{params.tag}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id the webhook belongs to. |
tag | string | yes | Webhook tag (its name) from list_webhooks. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
enabled | boolean | |
id | string | |
tag | string | |
updated_at | string | |
url | string | |
verify_ssl | boolean |
Also retrieved by: "check the settings on that connected hook", "what url is that notification pointed at", "pull up details on one specific integration".
typeform.create_webhook
Register a new Typeform webhook on a form: a callback url Typeform posts to every time someone submits a response. Use when the user wants to hook up, connect, or subscribe an endpoint to a form's new submissions. Give the webhook a new tag; reusing an existing tag changes that webhook instead, which is what update_webhook is for.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /forms/{{params.form_id}}/webhooks/{{params.tag}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
enabled | boolean | no | Whether the webhook is active. Defaults to true. |
form_id | string | yes | Typeform form id to attach the webhook to. |
secret | string | no | Optional shared secret Typeform signs each delivery with. |
tag | string | yes | A new name identifying this webhook, unique within the form. |
url | string | yes | HTTPS endpoint Typeform should post each response to. |
verify_ssl | boolean | no | Whether Typeform verifies the endpoint's SSL certificate. Defaults to true. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
enabled | boolean | |
id | string | |
tag | string | |
url | string | |
verify_ssl | boolean |
Also retrieved by: "hook my crm up to new submissions", "connect an endpoint to that survey's answers", "set up a notification for every new entry", "wire this form to post to our system".
typeform.update_webhook
Change an existing Typeform webhook's target url, enabled state, or secret by form id and tag. Use when the user wants to redirect, pause, re-enable, or otherwise change what an already-connected webhook does, rather than connect a new one.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /forms/{{params.form_id}}/webhooks/{{params.tag}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
enabled | boolean | no | Set false to pause deliveries, true to resume them. |
form_id | string | yes | Typeform form id the webhook belongs to. |
secret | string | no | New shared secret Typeform signs each delivery with. |
tag | string | yes | Existing webhook tag from list_webhooks to modify. |
url | string | no | New endpoint url for this webhook. |
verify_ssl | boolean | no | Whether Typeform verifies the endpoint's SSL certificate. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
enabled | boolean | |
id | string | |
tag | string | |
url | string | |
verify_ssl | boolean |
Also retrieved by: "redirect that hook to a new url", "pause the notification on that survey for a bit", "change what that connected integration points at", "swap the secret on that hook".
typeform.delete_webhook
Remove a Typeform webhook by form id and tag, stopping event deliveries to its url for good. Use when the user wants to unsubscribe, disconnect, or turn off a form's notification hook. Unrecoverable; recreate it with create_webhook if needed again.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /forms/{{params.form_id}}/webhooks/{{params.tag}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id the webhook belongs to. |
tag | string | yes | Webhook tag to remove. |
Also retrieved by: "disconnect that integration from the survey", "turn off the notification hitting our old endpoint", "remove a hook we don't need anymore".
typeform.list_themes
List the visual themes available to the Typeform account, with each theme's name and colors. Use when the user asks what themes, looks, or styles they can apply to a form, or wants a theme's id before create_form, update_form, or get_theme.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /themes.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
page | integer | no | Page number, default 1. |
page_size | integer | no | Results per page, default 10, max 200. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].colors | object | |
items[].colors.answer | string | |
items[].colors.background | string | |
items[].colors.button | string | |
items[].colors.question | string | |
items[].font | string | |
items[].id | string | |
items[].name | string | |
page_count | integer | |
total_items | integer |
Also retrieved by: "what looks can I apply to my typeform forms", "show me the visual styles available in typeform", "what color schemes do I have saved in typeform".
typeform.get_theme
Get one Typeform theme's full color and font settings by theme id. Use after list_themes or when the user already names a specific theme and wants to check its exact colors before applying it.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /themes/{{params.theme_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
theme_id | string | yes | Typeform theme id from list_themes. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
colors | object | |
colors.answer | string | |
colors.background | string | |
colors.button | string | |
colors.question | string | |
font | string | |
has_transparent_background | boolean | |
id | string | |
name | string |
Also retrieved by: "what colors does that saved typeform style use", "pull up the font and palette for that typeform theme", "check the exact look of a specific typeform style".
typeform.create_theme
Create a new custom Typeform theme with a name, font, and colors. Use when the user wants to design, set up, or save a new visual style for their forms to reuse. Typeform themes are set once at creation; to change one, create a new theme rather than edit this one.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /themes.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
colors | object | no | Hex colors for question, answer, button, and background. |
colors.answer | string | no | |
colors.background | string | no | |
colors.button | string | no | |
colors.question | string | no | |
font | string | no | Typeform font family name to use. |
has_transparent_background | boolean | no | Whether form backgrounds using this theme are transparent. |
name | string | yes | The new theme's name. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
colors | object | |
colors.answer | string | |
colors.background | string | |
colors.button | string | |
colors.question | string | |
font | string | |
id | string | |
name | string |
Also retrieved by: "design a new color scheme for my typeform surveys", "save this palette as a reusable typeform style", "set up a new brand look for my typeform forms".
typeform.delete_theme
Permanently delete a custom Typeform theme by theme id. Use when the user wants to remove or clean up a saved visual style. Unrecoverable; any form still applying this theme falls back to Typeform's default look.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /themes/{{params.theme_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
theme_id | string | yes | Typeform theme id to delete permanently. |
Also retrieved by: "remove that old typeform color scheme", "clean up a typeform style I no longer use", "get rid of that saved typeform theme".
typeform.list_workspaces
List the Typeform workspaces the connected account belongs to, with each workspace's name and form count. Use when the user asks what workspaces, teams, or folders their forms are organized into, or wants a workspace's id before list_forms or create_form.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /workspaces.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
page | integer | no | Page number, default 1. |
page_size | integer | no | Results per page, default 10, max 200. |
search | string | no | Filter to workspaces whose name contains this text. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].default | boolean | |
items[].forms | object | |
items[].forms.count | integer | |
items[].id | string | |
items[].name | string | |
items[].shared | boolean | |
page_count | integer | |
total_items | integer |
Also retrieved by: "what teams are my typeform forms organized into", "show me every folder my typeform surveys live in", "what typeform workspaces do I belong to".
typeform.get_workspace
Get one Typeform workspace's details by workspace id: its name and form count. Use after list_workspaces or when the user already names a specific workspace and wants its current details before update_workspace or list_workspace_members.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /workspaces/{{params.workspace_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
workspace_id | string | yes | Typeform workspace id from list_workspaces. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
default | boolean | |
forms | object | |
forms.count | integer | |
id | string | |
name | string | |
shared | boolean |
Also retrieved by: "how many forms are in that typeform folder", "pull up the details for that typeform team space", "check what's inside a specific typeform workspace".
typeform.create_workspace
Create a new Typeform workspace with a name. Use when the user wants to set up a new team, folder, or workspace to organize forms into, separate from the account's default workspace.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /workspaces.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | yes | The new workspace's name. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
default | boolean | |
id | string | |
name | string |
Also retrieved by: "set up a new folder for the marketing team's typeform forms", "make a typeform workspace to organize these surveys", "start a new shared typeform space for our forms".
typeform.update_workspace
Rename a Typeform workspace by workspace id. Use when the user wants to rename, relabel, or retitle a workspace, not create a new one or change its membership.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /workspaces/{{params.workspace_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | yes | New workspace name. |
workspace_id | string | yes | Typeform workspace id to rename. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
name | string |
Also retrieved by: "rename that typeform workspace", "relabel the folder my typeform surveys are in", "retitle our shared typeform team space".
typeform.delete_workspace
Permanently delete a Typeform workspace by workspace id, along with every form still inside it. Use when the user wants to remove or tear down a whole workspace or team folder. Unrecoverable: move or copy any form worth keeping out of the workspace first.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /workspaces/{{params.workspace_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
workspace_id | string | yes | Typeform workspace id to delete permanently. |
Also retrieved by: "tear down that whole typeform folder of forms", "remove the typeform workspace and everything in it", "get rid of that typeform team space for good".
typeform.list_workspace_members
List the people who belong to a Typeform workspace, with each person's email and role. Use when the user asks who's on a workspace or team, or wants a headcount before add_workspace_member or remove_workspace_member.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /workspaces/{{params.workspace_id}}/members.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
workspace_id | string | yes | Typeform workspace id to list members of. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
items | array of object | |
items[].email | string | |
items[].role | string |
Also retrieved by: "who's on the marketing team's typeform workspace", "show me everyone with access to that typeform folder", "what's the headcount on this shared typeform space".
typeform.add_workspace_member
Invite someone to a Typeform workspace by email. Use when the user wants to add, invite, or onboard a teammate onto a shared workspace so they can see or edit its forms.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /workspaces/{{params.workspace_id}}/members.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
email | string | yes | Invitee's email address. |
role | string, one of admin, member | no | Role to grant. Defaults to member. |
workspace_id | string | yes | Typeform workspace id to invite the person into. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
email | string | |
role | string |
Also retrieved by: "invite a teammate into that typeform folder", "add someone to the shared typeform workspace", "onboard a new person onto the typeform team space".
typeform.remove_workspace_member
Remove someone from a Typeform workspace by email, revoking their access to its forms. Use when the user wants to offboard, remove, or kick a teammate off a shared workspace. They keep their own Typeform account; only workspace access is revoked.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /workspaces/{{params.workspace_id}}/members.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
email | string | yes | The member's email address to remove. |
workspace_id | string | yes | Typeform workspace id to remove the person from. |
Also retrieved by: "take that person off the shared typeform workspace", "offboard a teammate from the typeform folder", "revoke someone's access to our typeform team space".
typeform.get_form_insights
Get a Typeform form's overall response-rate summary: views, started and completed counts, completion rate, and average completion time. Use when the user asks how a form is performing, what its conversion or completion rate is, or how many people have seen versus finished it.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /insights/{{params.form_id}}/summary.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
form_id | string | yes | Typeform form id to get insights for. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
fields | array of object | |
fields[].dropoffs | integer | |
fields[].id | string | |
fields[].title | string | |
fields[].type | string | |
summary | object | |
summary.average_time | number | |
summary.completed_responses | integer | |
summary.completion_rate | number | |
summary.total_responses | integer | |
summary.total_views | integer |
Also retrieved by: "how's my typeform survey performing", "what's the completion rate on that typeform questionnaire", "how many people finished versus just started my typeform", "check the conversion numbers on that typeform form".
typeform.get_question_insights
Get one question's answer breakdown within a Typeform form: how many people answered it, dropped off on it, and, for choice questions, how answers split across each option. Use when the user asks which question loses the most people, or wants to see the answer distribution for one specific question.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /insights/{{params.form_id}}/summary/{{params.field_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
field_id | string | yes | Question field id from get_form. |
form_id | string | yes | Typeform form id the question belongs to. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
average_time | number | |
breakdown | array of object | |
breakdown[].count | integer | |
breakdown[].label | string | |
dropoffs | integer | |
id | string | |
responses | integer | |
title | string | |
type | string |
Also retrieved by: "which question is losing the most people on my typeform", "show me how answers split on that specific typeform question", "what's the drop-off on this one typeform field", "break down the responses to a single typeform question".