---
name: forms-management
version: 2.0.0
domain: productivity
description: Creare, pubblicare, leggere risposte Google Forms. NOTA CRITICA — API-created forms unpublished by default (since 2026-06-30); skill chiama set_publish_settings esplicitamente post-creation.
trigger-keywords: ['modulo', 'form', 'sondaggio', 'questionario', 'crea form']
user-invocable: true
allowed-tools:
  - google_workspace_create_form
  - google_workspace_get_form
  - google_workspace_set_publish_settings
  - google_workspace_get_form_response
  - google_workspace_list_form_responses
  - google_workspace_batch_update_form
  - aria-memory_wiki_recall_tool
  - aria-memory_wiki_update_tool
  - aria-hitl_request
  - aria-hitl_list_pending
  - aria-hitl_approve
  - aria-hitl_cancel
max-tokens: 8000
estimated-cost-eur: 0.05
---

# Forms Management

## Obiettivo
Creare, pubblicare, e gestire sondaggi Google Forms. Lettura risposte e analisi aggregata.

## Proxy invocation rule

Tutte le chiamate ai backend MCP passano dal proxy usando la nuova sintassi gerarchica.
Non serve `_caller_id` — il namespace identifica l'agente.

## Procedura

### Creiamo form
1. Parsing input: titolo form, descrizione, domande (lista con tipo: testo, scelta multipla, scala).
2. **HITL anteprima**: `hitl_request` mostra preview form strutturato.
3. Su conferma: crea form via proxy:
   ```
   aria-mcp-proxy-productivity_call_tool({
     "server": "google_workspace",
     "tool": "create_form",
     "arguments": {
       "title": "<titolo>",
       "description": "<descrizione>",
       "items": [
         {
           "title": "<domanda>",
           "question_item": {
             "question": "<testo>",
             "type": "MULTIPLE_CHOICE",  // o TEXT, SCALE, etc.
             "options": ["opzione1", "opzione2"]
           }
         }
       ]
     }
   })
   ```
4. Form creato → **NOTA CRITICA**: API forms unpublished by default (since 2026-06-30).
   Chiama esplicitamente `set_publish_settings`:
   ```
   aria-mcp-proxy-productivity_call_tool({
     "server": "google_workspace",
     "tool": "set_publish_settings",
     "arguments": {
       "form_id": "<form_id>",
       "publish_settings": {
         "quiz_settings": null,
         "is_published": true,
         "access_type": "PUBLIC"
       }
     }
   })
   ```
5. Output: "Form creato e pubblicato, link sharing: <url>."

### Leggiamo risposte
1. Parsing input: form ID, filtri opzionali (data range, respondent).
2. Leggi form metadati:
   ```
   aria-mcp-proxy-productivity_call_tool({
     "server": "google_workspace",
     "tool": "get_form",
     "arguments": {"form_id": "<form_id>"}
   })
   ```
3. Lista risposte:
   ```
   aria-mcp-proxy-productivity_call_tool({
     "server": "google_workspace",
     "tool": "list_form_responses",
     "arguments": {"form_id": "<form_id>"}
   })
   ```
4. Aggregazione semplice: per domanda, conta risposte per opzione.
5. Output: report markdown con tabelle risposta/count.

### Aggiorniamo form (add domande, modify esistenti)
1. Parsing input: form ID, nuove domande, modifiche.
2. **HITL anteprima**: mostra delta (nuove domande, rimosse, modificate).
3. Batch update via proxy:
   ```
   aria-mcp-proxy-productivity_call_tool({
     "server": "google_workspace",
     "tool": "batch_update_form",
     "arguments": {
       "form_id": "<form_id>",
       "requests": [
         {
           "update_item": {
             "item": {...},
             "location": {"index": <position>}
           }
         }
       ]
     }
   })
   ```

## Output
- Form creato: form_id + URL pubblico.
- Risposte: report markdown (1 pagina, tabelle count per domanda).
- Aggiornato: itemsModified count + confirm.

## Invarianti
- **CRITICO**: API forms unpublished by default (2026-06-30 change). Set `is_published: true` via `set_publish_settings`.
- Write ops (create_form, batch_update_form) richiedono HITL gate (P7).
- Publish ops richiedono HITL gate (P7).
- Quiz features (answer keys) non usate (focus on surveys/forms).
- Risposte anonime (no respondent tracking).
- Esportazione risposte: CSV via Forms API aggregation, non Google Sheets export.

## Failure modes
- Form published false → HITL failure, ripeti set_publish_settings.
- Batch update partial → continua, report errors.
- Form con 100+ risposte → tronca analisi a sample (first 100).
