with one click
Retrieve form responses or create forms in Typeform
npx skills add https://github.com/ferosai/feros --skill typeformCopy and paste this command into Claude Code to install the skill
Retrieve form responses or create forms in Typeform
npx skills add https://github.com/ferosai/feros --skill typeformCopy and paste this command into Claude Code to install the skill
Read or update contacts, opportunities, notes, and conversations in GoHighLevel
Save or retrieve records from Airtable bases
Send emails, SMS, or manage contacts via Brevo (formerly Sendinblue)
Manage bookings, availability, and event types in Cal.com
Check availability, create scheduling links, or list upcoming events in Calendly
Create or update tasks and lists in ClickUp
| name | typeform |
| display_name | Typeform |
| description | Retrieve form responses or create forms in Typeform |
| auth_type | oauth2 |
| category | surveys |
When the user wants their voice agent to retrieve Typeform submissions or look up survey data. Common triggers:
Check connection via check_connection("typeform").
If not connected: Use secret("typeform") in tool scripts. The system
will automatically emit the correct action card based on the platform
configuration. Do NOT emit action cards manually.
Discover forms (Typeform supports auto-discovery):
api_call("typeform", "GET", "/forms") → list all forms with IDs and titlesUse the real form ID in the tool config.
{
"name": "typeform.get_responses",
"description": "Retrieve the latest responses from a Typeform survey",
"params": [
{"name": "form_id", "description": "Typeform form ID", "type": "string", "required": true},
{"name": "page_size", "description": "Number of responses to return (default 5)", "type": "string", "required": false}
],
"script": "let key = secret('typeform');\nlet n = page_size || '5';\nlet resp = http_get_h('https://api.typeform.com/forms/' + form_id + '/responses?page_size=' + n + '&sort_by=submitted_at&order_by=desc', {'Authorization': 'Bearer ' + key});\nif (resp.status >= 200 && resp.status < 300) { return resp.body; }\nthrow new Error(`Typeform ${resp.status}: ${resp.body}`);",
"side_effect": false
}
secret("typeform") for credentialsapi_call to discover form IDs instead of asking the userthrow using resp.status/resp.body