> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Forms Integration for AI Agents & Workflows

> Create, update, and read Google Forms and their responses via the Google Forms API.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/google-forms.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=7a9b5bac103b1da84305be8c5c1b71e2" alt="Google Forms logo" width="72" height="72" data-path="logos/google-forms.svg" />

## Overview

Add **Google Forms** to any ModuleX agent or workflow. Create, update, and read Google Forms and their responses via the Google Forms REST API (`forms.googleapis.com/v1`).

<Info>
  **Categories**: Productivity & Collaboration · Forms & Surveys · **Auth**: OAuth2 · **Actions**: 6
</Info>

## Authentication

### OAuth2 Authentication

Connect using Google OAuth (recommended)

#### Required Credentials

| Field         | Description                                                   | Required | Format                                                                     |
| ------------- | ------------------------------------------------------------- | -------- | -------------------------------------------------------------------------- |
| Client ID     | Google OAuth App Client ID from the Google Cloud Console.     | Yes      | `xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com` |
| Client Secret | Google OAuth App Client Secret from the Google Cloud Console. | Yes      | `GOCSPX-xxxxxxxxxxxxxxxxxxxxxxxx`                                          |

#### OAuth Configuration

* **Authorization URL**: `https://accounts.google.com/o/oauth2/v2/auth`
* **Token URL**: `https://oauth2.googleapis.com/token`
* **Scopes**: `https://www.googleapis.com/auth/forms.body`, `https://www.googleapis.com/auth/forms.responses.readonly`

## Available Actions

<AccordionGroup>
  <Accordion title="create_form — Creates a new Google Form with the specified title and optional document title.">
    ### Parameters

    <ResponseField name="title" type="string" required>
      The title of the form which is visible to responders.
    </ResponseField>

    <ResponseField name="document_title" type="string">
      The title of the document which is visible in Google Drive. Optional.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FormInfo": {
          "additionalProperties": false,
          "description": "The ``info`` subobject embedded in a Google Form resource.",
          "properties": {
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "documentTitle": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Documenttitle"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            }
          },
          "title": "FormInfo",
          "type": "object"
        },
        "FormSummary": {
          "additionalProperties": false,
          "description": "Slim view of a Google Form resource returned by Get/Create.",
          "properties": {
            "formId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Formid"
            },
            "responderUri": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Responderuri"
            },
            "revisionId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Revisionid"
            },
            "info": {
              "anyOf": [
                {
                  "$ref": "#/$defs/FormInfo"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "settings": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Settings"
            },
            "items": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Items",
              "type": "array"
            }
          },
          "title": "FormSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "form": {
          "anyOf": [
            {
              "$ref": "#/$defs/FormSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateFormOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_text_question — Creates a new text question (short or paragraph) in an existing Google Form via batchUpdate.">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Identifier of the Google Form to update.
    </ResponseField>

    <ResponseField name="title" type="string" required>
      Title of the question.
    </ResponseField>

    <ResponseField name="description" type="string" required>
      Description of the question.
    </ResponseField>

    <ResponseField name="index" type="integer" required>
      The 0-based index where the item is inserted in the form. Must be in the range \[0..N), where N is the current number of items.
    </ResponseField>

    <ResponseField name="paragraph" type="boolean" required>
      If true, the question is a paragraph (multi-line) question. If false, it is a short text question.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FormInfo": {
          "additionalProperties": false,
          "description": "The ``info`` subobject embedded in a Google Form resource.",
          "properties": {
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "documentTitle": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Documenttitle"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            }
          },
          "title": "FormInfo",
          "type": "object"
        },
        "FormSummary": {
          "additionalProperties": false,
          "description": "Slim view of a Google Form resource returned by Get/Create.",
          "properties": {
            "formId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Formid"
            },
            "responderUri": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Responderuri"
            },
            "revisionId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Revisionid"
            },
            "info": {
              "anyOf": [
                {
                  "$ref": "#/$defs/FormInfo"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "settings": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Settings"
            },
            "items": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Items",
              "type": "array"
            }
          },
          "title": "FormSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "formId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Formid"
        },
        "replies": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Replies",
          "type": "array"
        },
        "form": {
          "anyOf": [
            {
              "$ref": "#/$defs/FormSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "writeControl": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Writecontrol"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateTextQuestionOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_form — Gets information about a Google Form, including its title, settings, and items.">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Identifier of the Google Form to retrieve.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FormInfo": {
          "additionalProperties": false,
          "description": "The ``info`` subobject embedded in a Google Form resource.",
          "properties": {
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "documentTitle": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Documenttitle"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            }
          },
          "title": "FormInfo",
          "type": "object"
        },
        "FormSummary": {
          "additionalProperties": false,
          "description": "Slim view of a Google Form resource returned by Get/Create.",
          "properties": {
            "formId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Formid"
            },
            "responderUri": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Responderuri"
            },
            "revisionId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Revisionid"
            },
            "info": {
              "anyOf": [
                {
                  "$ref": "#/$defs/FormInfo"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "settings": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Settings"
            },
            "items": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Items",
              "type": "array"
            }
          },
          "title": "FormSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "form": {
          "anyOf": [
            {
              "$ref": "#/$defs/FormSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "GetFormOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_form_response — Gets a single response from a Google Form by response ID.">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Identifier of the Google Form the response belongs to.
    </ResponseField>

    <ResponseField name="response_id" type="string" required>
      The response ID within the form to retrieve.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FormResponseSummary": {
          "additionalProperties": false,
          "description": "A single response to a Google Form.",
          "properties": {
            "responseId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Responseid"
            },
            "formId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Formid"
            },
            "createTime": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Createtime"
            },
            "lastSubmittedTime": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Lastsubmittedtime"
            },
            "respondentEmail": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Respondentemail"
            },
            "answers": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Answers"
            },
            "totalScore": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Totalscore"
            }
          },
          "title": "FormResponseSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "response": {
          "anyOf": [
            {
              "$ref": "#/$defs/FormResponseSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "GetFormResponseOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_form_responses — Lists all responses submitted to a Google Form.">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Identifier of the Google Form whose responses are listed.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FormResponseSummary": {
          "additionalProperties": false,
          "description": "A single response to a Google Form.",
          "properties": {
            "responseId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Responseid"
            },
            "formId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Formid"
            },
            "createTime": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Createtime"
            },
            "lastSubmittedTime": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Lastsubmittedtime"
            },
            "respondentEmail": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Respondentemail"
            },
            "answers": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Answers"
            },
            "totalScore": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Totalscore"
            }
          },
          "title": "FormResponseSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "responses": {
          "items": {
            "$ref": "#/$defs/FormResponseSummary"
          },
          "title": "Responses",
          "type": "array"
        },
        "nextPageToken": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Nextpagetoken"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListFormResponsesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_form_title — Updates the title of an existing Google Form via batchUpdate.">
    ### Parameters

    <ResponseField name="form_id" type="string" required>
      Identifier of the Google Form to update.
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The new title of the form which is visible to responders.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FormInfo": {
          "additionalProperties": false,
          "description": "The ``info`` subobject embedded in a Google Form resource.",
          "properties": {
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "documentTitle": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Documenttitle"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            }
          },
          "title": "FormInfo",
          "type": "object"
        },
        "FormSummary": {
          "additionalProperties": false,
          "description": "Slim view of a Google Form resource returned by Get/Create.",
          "properties": {
            "formId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Formid"
            },
            "responderUri": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Responderuri"
            },
            "revisionId": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Revisionid"
            },
            "info": {
              "anyOf": [
                {
                  "$ref": "#/$defs/FormInfo"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "settings": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Settings"
            },
            "items": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Items",
              "type": "array"
            }
          },
          "title": "FormSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "formId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Formid"
        },
        "replies": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Replies",
          "type": "array"
        },
        "form": {
          "anyOf": [
            {
              "$ref": "#/$defs/FormSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "writeControl": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Writecontrol"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateFormTitleOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* The Google Forms API enforces per-project quotas administered through Google Cloud. Default quota is **300 read requests per minute per project** and **60 write requests per minute per project** (subject to change — see [https://developers.google.com/forms/api/limits](https://developers.google.com/forms/api/limits)).
* Per-user quotas may apply for OAuth client credentials with many concurrent users.
* A `400 Bad Request` is returned when `index` for `create_text_question` is outside `[0..N)` where N is the current item count.
* **Error model:** non-2xx responses from the API raise `httpx.HTTPStatusError`, which the ModuleX runtime surfaces as a failed tool call with the original API error text included.

## Related integrations

<CardGroup cols={3}>
  <Card title="Cal.com" href="/integrations/tools/cal-com" />

  <Card title="Canva" href="/integrations/tools/canva" />

  <Card title="ConvertAPI" href="/integrations/tools/convertapi" />
</CardGroup>

## Links

* [Google Forms](https://forms.google.com)
