The catalogue/Google Forms

Google Forms

app.google.forms

Create and manage Google Forms, add questions, and read submitted responses

OAuth 2googleRead the source
Version2.0.0
Categorygoogle
AuthOAuth 2
Tools12
Transportstdio
LicenceMIT
01

What it does

The app, in its own words.

Manage Google Forms — create forms, add questions, and read responses via Google Forms API.

googleformssurveyresponsesquestions
02

Tools

12 tools the agent can call.

Every one is declared with typed parameters and returns structured results, so the host can render them instead of narrating them.

  • add-questionAdd a question item to a Google Form at a specific position. Supported question types in `questionItem.question`: - **textQuestion**: `{ paragraph: false }` (short answer) or `{ paragraph: true }` (paragraph) - **choiceQuestion**: `{ type: "RADIO"|"CHECKBOX"|"DROP_DOWN", options: [{ value: "Option 1" }, ...] }` - **scaleQuestion**: `{ low: 1, high: 5, lowLabel: "Bad", highLabel: "Good" }` - **dateQuestion**: `{ includeTime: false, includeYear: true }` - **timeQuestion**: `{ duration: false }` Params: formId (required), title (required), questionItem (required), index? (insert position, defaults to end), description?.
  • create-formCreate a new Google Form with a title. Returns the form ID and responder URL. Params: title (required), documentTitle? (defaults to the form title).
  • create-watchCreate a watch on a Google Form to receive push notifications via a Cloud Pub/Sub topic. Event types: - `"SCHEMA"` — triggers when the form structure changes (questions added/removed/updated) - `"RESPONSES"` — triggers when a new response is submitted The Pub/Sub topic must grant publish privileges to `serviceAccount:forms-notifications@system.gserviceaccount.com`. A watch expires after 7 days and can be renewed. Maximum 2 watches per form (one per event type). Params: formId (required), eventType (required), topicName (required — fully qualified Pub/Sub topic, e.g. "projects/my-project/topics/my-topic"), watchId? (custom ID, 4-63 chars, /a-z-/).
  • delete-itemDelete an item (question, section, etc.) from a Google Form by its index position. Use get-form first to see current items and their positions. Params: formId (required), index (required — 0-based position of the item to delete).
  • get-formGet the full structure of a Google Form by its ID, including all items and questions. Params: formId (required).
  • get-responseGet a specific response to a Google Form by its response ID. Params: formId (required), responseId (required).
  • list-formsList all Google Forms in your Drive. Uses the Drive API to find files with the Google Forms MIME type. Params: pageSize? (default 10, max 100), pageToken? (pagination token from a previous response).
  • list-responsesList responses submitted to a Google Form. Supports pagination and filtering by submission timestamp. Params: formId (required), pageSize? (default 10, max 5000), pageToken?, filter? (RFC3339 timestamp filter, e.g. "timestamp > 2024-01-01T00:00:00Z").
  • list-watchesList all watches on a Google Form owned by the invoking project. The maximum number of watches is two per form (one per event type). Params: formId (required).
  • update-formUpdate a Google Form using batch update requests. Supports adding, editing, and deleting items, as well as updating form info and settings. Available request types in the `requests` array: - **createItem**: Add a new item (question, section, etc.) at a specific location. `{ createItem: { item: { title, questionItem: { question: { required, choiceQuestion | textQuestion | scaleQuestion | dateQuestion | timeQuestion } } }, location: { index: 0 } } }` - **updateItem**: Modify an existing item by its ID. `{ updateItem: { item: { itemId, title, ... }, location: { index: 0 }, updateMask: "title,description" } }` - **deleteItem**: Remove an item by its location index. `{ deleteItem: { location: { index: 0 } } }` - **updateFormInfo**: Update the form title, description, or document title. `{ updateFormInfo: { info: { title, description, documentTitle }, updateMask: "title,description" } }` - **updateSettings**: Change form settings such as quiz mode or response collection. `{ updateSettings: { settings: { quizSettings: { isQuiz: true } }, updateMask: "quizSettings.isQuiz" } }` See https://developers.google.com/forms/api/reference/rest/v1/forms/batchUpdate for full schemas. Params: formId (required), requests (required — array of update requests).
  • update-form-infoUpdate the metadata of a Google Form — title, description, or document title. This is a convenience wrapper around the batchUpdate API. Params: formId (required), title?, description?, documentTitle?.
  • update-itemUpdate an existing item in a Google Form. You must provide the item object with the itemId of the item to update, and an updateMask specifying which fields to change. Common updateMask values: - `"title"` — update the item title - `"description"` — update the item description - `"title,description"` — update both - `"questionItem.question.required"` — change whether a question is required - `"questionItem.question.choiceQuestion.options"` — update choice options Params: formId (required), item (required — must include itemId), location (required — the index of the item), updateMask (required — comma-separated field paths to update).
03

Auth and permissions

What it asks for.

Declared in the manifest, in advance. The app cannot reach anything it did not ask for here.

Scopes

https://www.googleapis.com/auth/forms.bodyhttps://www.googleapis.com/auth/forms.responses.readonlyhttps://www.googleapis.com/auth/drive.filehttps://www.googleapis.com/auth/userinfo.email

System secrets

CLIENT_IDCLIENT_SECRET

User secrets

ACCESS_TOKENREFRESH_TOKEN

Reading further

The manifest and the source for Google Forms live in the monorepo, alongside the other apps.

Read the sourceBack to the catalogue

Google Forms · Agent Apps