All integrations

Google Forms

GOOGLE WORKSPACE · FILES & DOCS

Create forms and read the responses they are allowed to see.

Connect Google Forms with Fabriq Developer

Your user consents at Google Forms. The credential lands in a vault your agent cannot read, and the tool list it gets back is the intersection of that user’s grant and the agent’s own scopes.

provider “forms”
from af_sdk import AgenticFabriq

af = AgenticFabriq()                      # reads AF_APP_ID / AF_APP_SECRET

url = await af.initiate_connection(request, provider="forms")   # consent at Google Forms
return redirect(url)

async with await af.for_user(request) as session:
    tools = await session.get_tools()     # only what this user granted

Provider names are surfaces, not vendors, and the authoritative list is the capabilities endpoint rather than any page including this one — an unknown name returns 400 with the valid list. Fabriq Developer is free to start and needs no provider paperwork. Start free or read the quickstart.

Connecting Google Forms in practice

Google Forms meters forms.responses.list as an "expensive read" with its own lower quota — 450 per minute per project and 180 per user against 975 and 390 for ordinary reads — so polling for responses exhausts a different budget from reading the form itself. There is no daily cap at all, which makes the per-minute numbers the only thing to design around.

Scopes that draw scrutiny

  • https://www.googleapis.com/auth/forms.body Read-write access to a form’s structure and content; forms.get accepts this or the readonly variant.
  • https://www.googleapis.com/auth/forms.body.readonly Reads the form body without allowing edits, the narrowest Forms-specific grant that still satisfies forms.get.
  • https://www.googleapis.com/auth/drive Restricted. forms.get also accepts full Drive access, which is a much broader grant for the same read.
  • https://www.googleapis.com/auth/drive.readonly Restricted. Another accepted alternative for forms.get, and the one that quietly turns a form integration into a restricted-scope review.
  • https://www.googleapis.com/auth/drive.file Per-file Drive access, accepted by forms.get and the narrowest of the Drive options.

Rate limits

  • Read requests: 975 per minute per project, 390 per minute per user per project; unlimited per day.
  • Expensive read requests (forms.responses.list): 450 per minute per project, 180 per minute per user per project.
  • Write requests: 375 per minute per project, 150 per minute per user per project.
  • Exceeding a quota returns 429: Too many requests, with truncated exponential backoff recommended.

Worth knowing

  • Because forms.get accepts drive or drive.readonly as alternatives to forms.body, it is easy to ship a form reader on a restricted Drive scope by accident and land in a security assessment.
  • Form watches — the push-notification mechanism that avoids polling responses — have their own separate limits documented elsewhere, so the numbers on the quota page do not cover the event path.
  • Google states standard API use is free but that charges for exceeding quota are planned for later in 2026.

Checked against Forms API usage limits (2026-09-29), forms.get reference (authorization scopes) (2026-09-29)

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

google_forms_add_questionWRITE

Add a new question to a form. Supports TEXT, PARAGRAPH, MULTIPLE_CHOICE, CHECKBOX, DROPDOWN, LINEAR_SCALE, DATE, and TIME question types. IMPORTANT: You must first call google_forms_list to get the form_id.

forms.body
google_forms_createWRITE

Create a new Google Form with a title. Returns the form ID for adding questions.

forms.body
google_forms_delete_questionWRITE

Delete a question from a form. IMPORTANT: You must first call google_forms_get to get the question_id.

forms.body
google_forms_getREAD

Get a Google Form's structure including title, description, and all questions. IMPORTANT: You must first call google_forms_list to get the form_id.

forms.body.readonly
google_forms_get_responseREAD

Get a specific form response by ID. IMPORTANT: You must first call google_forms_list_responses to get the response_id.

forms.responses.readonly
google_forms_listREAD

List Google Forms. Returns form IDs, names, and links.

drive.readonly
google_forms_list_responsesREAD

List all responses to a Google Form. IMPORTANT: You must first call google_forms_list to get the form_id.

forms.responses.readonly
google_forms_updateWRITE

Update a form's title or description. IMPORTANT: You must first call google_forms_list to get the form_id.

forms.body
google_forms_update_questionWRITE

Update an existing question's text or required status in a form. IMPORTANT: You must first call google_forms_get to get question IDs.

forms.body

Put Google Forms behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.