Use the Google Forms CLI from KosmoKrator to call Google Forms tools headlessly, return JSON, inspect schemas, and automate workflows from coding agents, scripts, and CI.
Google Forms can be configured headlessly with `kosmokrator integrations:configure google_forms`.
# Install KosmoKrator first if it is not available on PATH.curl -fsSL https://raw.githubusercontent.com/OpenCompanyApp/kosmokrator/main/install.sh | bash# Configure and verify this integration.kosmokrator integrations:configure google_forms --set access_token="$GOOGLE_FORMS_ACCESS_TOKEN" --enable --read allow --write ask --jsonkosmokrator integrations:doctor google_forms --jsonkosmokrator integrations:status --json
Credentials
Authentication type: OAuth browser flowoauth2_authorization_code. Configure credentials once, then use the same stored profile from
scripts, coding CLIs, Lua code mode, and the MCP gateway.
Key
Env var
Type
Required
Label
access_token
GOOGLE_FORMS_ACCESS_TOKEN
OAuth token oauth
yes
Google Account
Call Google Forms Headlessly
Use the generic call form when another coding CLI or script needs a stable universal interface.
Every function below can be called headlessly. The generic form is stable across all integrations;
the provider shortcut is shorter but specific to Google Forms.
google_forms.google_forms_add_question
Write write
Add a question to a Google Form. Supports types: text, paragraph, multiple_choice, checkbox, dropdown, scale, date, time, rating. Use options for choice types. Use low/high/lowLabel/highLabel for scale. Use ratingScale/ratingIcon for rating. Use includeTime/includeYear for date. Use duration for time. Omit index to add at end. Use google_forms_get to see current form structure before editing.
Get a Google Form's structure: title, description, settings, all questions with types/options/IDs, and responder URL.
The form ID is the long string in the Google Forms URL: docs.google.com/forms/d/{formId}/edit
To list all forms, use google_drive_search with file type "application/vnd.google-apps.form".
Get a single response to a Google Form by response ID, with question labels.
The form ID is the long string in the Google Forms URL: docs.google.com/forms/d/{formId}/edit
Set publish settings for a Google Form: publish/unpublish and accept/stop accepting responses. At least one of published or acceptingResponses must be provided.
Update a question in a Google Form by its 0-based index. Can update title, description, required status, and options (for choice questions). Use google_forms_get to see current form structure.
Use these parameter tables when building CLI payloads without calling integrations:schema first.
google_forms.google_forms_add_question
Add a question to a Google Form. Supports types: text, paragraph, multiple_choice, checkbox, dropdown, scale, date, time, rating. Use options for choice types. Use low/high/lowLabel/highLabel for scale. Use ratingScale/ratingIcon for rating. Use includeTime/includeYear for date. Use duration for time. Omit index to add at end. Use google_forms_get to see current form structure before editing.
Get a Google Form's structure: title, description, settings, all questions with types/options/IDs, and responder URL.
The form ID is the long string in the Google Forms URL: docs.google.com/forms/d/{formId}/edit
To list all forms, use google_drive_search with file type "application/vnd.google-apps.form".
Get a single response to a Google Form by response ID, with question labels.
The form ID is the long string in the Google Forms URL: docs.google.com/forms/d/{formId}/edit
Set publish settings for a Google Form: publish/unpublish and accept/stop accepting responses. At least one of published or acceptingResponses must be provided.
Update a question in a Google Form by its 0-based index. Can update title, description, required status, and options (for choice questions). Use google_forms_get to see current form structure.
Email collection: DO_NOT_COLLECT, VERIFIED, or RESPONDER_INPUT.
Permissions
Headless calls still follow the integration read/write permission policy. Configure read/write defaults
with integrations:configure. Add --force only for trusted automation that should bypass that policy.