517 async def set_model(self, model: str | None = None) -> None517 async def set_model(self, model: str | None = None) -> None
518 async def rewind_files(self, user_message_id: str) -> None518 async def rewind_files(self, user_message_id: str) -> None
519 async def get_mcp_status(self) -> McpStatusResponse519 async def get_mcp_status(self) -> McpStatusResponse
520 async def get_context_usage(self) -> ContextUsageResponse
520 async def reconnect_mcp_server(self, server_name: str) -> None521 async def reconnect_mcp_server(self, server_name: str) -> None
521 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None522 async def toggle_mcp_server(self, server_name: str, enabled: bool) -> None
522 async def stop_task(self, task_id: str) -> None523 async def stop_task(self, task_id: str) -> None
540| `set_model(model)` | Cambia il modello per la sessione corrente. Passa `None` per ripristinare il [modello predefinito di Claude Code](/docs/it/model-config) |541| `set_model(model)` | Cambia il modello per la sessione corrente. Passa `None` per ripristinare il [modello predefinito di Claude Code](/docs/it/model-config) |
541| `rewind_files(user_message_id)` | Ripristina i file al loro stato al messaggio utente specificato. Richiede `enable_file_checkpointing=True`. Vedi [File checkpointing](/docs/it/agent-sdk/file-checkpointing) |542| `rewind_files(user_message_id)` | Ripristina i file al loro stato al messaggio utente specificato. Richiede `enable_file_checkpointing=True`. Vedi [File checkpointing](/docs/it/agent-sdk/file-checkpointing) |
542| `get_mcp_status()` | Ottieni lo stato di tutti i server MCP configurati. Restituisce [`McpStatusResponse`](#mcpstatusresponse) |543| `get_mcp_status()` | Ottieni lo stato di tutti i server MCP configurati. Restituisce [`McpStatusResponse`](#mcpstatusresponse) |
544| `get_context_usage()` | Ottieni una suddivisione dell'utilizzo della finestra di contesto per categoria, skill e strumento. Gli stessi dati che `/context` mostra in una sessione interattiva. Restituisce [`ContextUsageResponse`](#contextusageresponse). Per calcolare la suddivisione, Claude Code effettua diverse richieste API di conteggio dei token che non compaiono nel flusso di messaggi; vedi [come vengono gestite queste richieste](#contextusageresponse) |
543| `reconnect_mcp_server(server_name)` | Riprova a connettersi a un server MCP che ha fallito o è stato disconnesso |545| `reconnect_mcp_server(server_name)` | Riprova a connettersi a un server MCP che ha fallito o è stato disconnesso |
544| `toggle_mcp_server(server_name, enabled)` | Abilita o disabilita un server MCP a metà sessione. La disabilitazione rimuove i suoi strumenti |546| `toggle_mcp_server(server_name, enabled)` | Abilita o disabilita un server MCP a metà sessione. La disabilitazione di un server stdio, SSE o HTTP rimuove i suoi strumenti |
545| `stop_task(task_id)` | Interrompi un'attività in background in esecuzione. Un [`TaskNotificationMessage`](#tasknotificationmessage) con stato `"stopped"` segue nel flusso di messaggi |547| `stop_task(task_id)` | Interrompi un'attività in background in esecuzione. Un [`TaskNotificationMessage`](#tasknotificationmessage) con stato `"stopped"` segue nel flusso di messaggi |
546| `get_server_info()` | Ottieni le informazioni di inizializzazione del server, inclusi i comandi disponibili e gli stili di output |548| `get_server_info()` | Ottieni le informazioni di inizializzazione del server, inclusi i comandi disponibili e gli stili di output |
547| `disconnect()` | Disconnettiti da Claude |549| `disconnect()` | Disconnettiti da Claude |
616 Esempio - Input streaming con ClaudeSDKClient618 Esempio - Input streaming con ClaudeSDKClient
617</h4>619</h4>
618 620
621`query()` accetta anche un iterabile asincrono di dict di messaggi utente, quindi puoi assemblare il prompt al momento dell'invio o includere blocchi di contenuto come immagini. Claude Code inizia a rispondere al primo messaggio generato non appena arriva, senza aspettare che l'iterabile finisca, e `receive_response()` si ferma al `ResultMessage` che termina quella risposta. Metti tutto ciò che Claude dovrebbe leggere prima di rispondere in un messaggio, come fa questo generatore, e abbina ogni chiamata `query()` al suo proprio ciclo `receive_response()`.
622
619```python theme={null}623```python theme={null}
620import asyncio624import asyncio
621from claude_agent_sdk import ClaudeSDKClient625from claude_agent_sdk import ClaudeSDKClient
622 626
623 627
624async def message_stream():628async def message_stream():
625 """Generate messages dynamically."""629 """Assemble the prompt at send time and yield it as one user message."""
626 yield {630 readings = {"Temperature": "25°C", "Humidity": "60%"}
627 "type": "user",631 data = ", ".join(f"{name}: {value}" for name, value in readings.items())
628 "message": {"role": "user", "content": "Analyze the following data:"},
629 }
630 await asyncio.sleep(0.5)
631 yield {
632 "type": "user",
633 "message": {"role": "user", "content": "Temperature: 25°C, Humidity: 60%"},
634 }
635 await asyncio.sleep(0.5)
636 yield {632 yield {
637 "type": "user",633 "type": "user",
638 "message": {"role": "user", "content": "What patterns do you see?"},634 "message": {
635 "role": "user",
636 "content": f"Analyze the following sensor data and describe any patterns you see: {data}",
637 },
639 }638 }
640 639
641 640
1607| `scope` | `str` (opzionale) | Ambito di configurazione |1606| `scope` | `str` (opzionale) | Ambito di configurazione |
1608| `tools` | `list` (opzionale) | Strumenti forniti da questo server, ognuno con i campi `name`, `description`, e `annotations` |1607| `tools` | `list` (opzionale) | Strumenti forniti da questo server, ognuno con i campi `name`, `description`, e `annotations` |
1609 1608
1609<h3 id="contextusageresponse">
1610 `ContextUsageResponse`
1611</h3>
1612
1613Risposta da [`ClaudeSDKClient.get_context_usage()`](#methods). Questo è lo stesso payload che Claude Code renderizza per il comando `/context` in una sessione interattiva, quindi insieme ai conteggi dei token contiene campi di visualizzazione come `color` e `gridRows` che Claude Code utilizza per disegnare la griglia di utilizzo `/context`.
1614
1615Claude Code costruisce questo payload inviando diverse richieste all'API di [token-counting](https://platform.claude.com/docs/en/build-with-claude/token-counting). Queste richieste non appaiono nel flusso di messaggi, quindi il tracciamento dei costi che legge il flusso non le vedrà. Sull'API Anthropic, il conteggio dei token non viene fatturato.
1616
1617```python theme={null}
1618class ContextUsageResponse(TypedDict):
1619 categories: list[ContextUsageCategory]
1620 totalTokens: int
1621 maxTokens: int
1622 rawMaxTokens: int
1623 percentage: float
1624 model: str
1625 isAutoCompactEnabled: bool
1626 memoryFiles: list[dict[str, Any]]
1627 mcpTools: list[dict[str, Any]]
1628 agents: list[dict[str, Any]]
1629 gridRows: list[list[dict[str, Any]]]
1630 autoCompactThreshold: NotRequired[int]
1631 deferredBuiltinTools: NotRequired[list[dict[str, Any]]]
1632 systemTools: NotRequired[list[dict[str, Any]]]
1633 systemPromptSections: NotRequired[list[dict[str, Any]]]
1634 slashCommands: NotRequired[dict[str, Any]]
1635 skills: NotRequired[dict[str, Any]] # skill usage with frontmatter breakdown
1636 messageBreakdown: NotRequired[dict[str, Any]] # message tokens by type
1637 apiUsage: NotRequired[dict[str, Any] | None]
1638```
1639
1640Ogni voce `ContextUsageCategory` contiene `name`, `tokens`, `color` e un flag opzionale `isDeferred`. `totalTokens` è l'utilizzo del contesto corrente della sessione, e `maxTokens` è la finestra rispetto alla quale viene misurato l'utilizzo. Quella finestra è la finestra di contesto del modello, o la finestra di auto-compattazione inferiore quando se ne applica una, e `rawMaxTokens` contiene lo stesso valore di `maxTokens`. `apiUsage` contiene l'utilizzo dalla risposta API più recente, non un totale in esecuzione per la sessione. Claude Code lascia i campi opzionali `deferredBuiltinTools`, `systemTools` e `systemPromptSections` non impostati, quindi aspettati che siano assenti anche se il tipo li dichiara.
1641
1610<h3 id="sdkpluginconfig">1642<h3 id="sdkpluginconfig">
1611 `SdkPluginConfig`1643 `SdkPluginConfig`
1612</h3>1644</h3>
2712 2744
2713Documentazione degli schemi di input/output per tutti gli strumenti Claude Code integrati. Mentre Python SDK non esporta questi come tipi, rappresentano la struttura degli input e output dello strumento nei messaggi.2745Documentazione degli schemi di input/output per tutti gli strumenti Claude Code integrati. Mentre Python SDK non esporta questi come tipi, rappresentano la struttura degli input e output dello strumento nei messaggi.
2714 2746
2747Ogni output mostrato è il valore che leggete da [`UserMessage.tool_use_result`](#usermessage) per quello strumento. I nomi delle chiavi appaiono esattamente come Claude Code li emette. Una chiave annotata `| None` con un commento "presente quando" o "opzionale" viene omessa quando non si applica.
2748
2715<h3 id="agent">2749<h3 id="agent">
2716 Agent2750 Agent
2717</h3>2751</h3>
2805```python theme={null}2839```python theme={null}
2806{2840{
2807 "status": "remote_launched",2841 "status": "remote_launched",
2808 "taskId": str, # ID dell'attività remota2842 "taskId": str, # ID dell'attività inviata
2809 "sessionUrl": str, # Collegamento alla sessione cloud remota2843 "sessionUrl": str, # Collegamento alla sessione cloud
2810 "description": str, # La descrizione del compito2844 "description": str, # La descrizione del compito
2811 "prompt": str, # Il prompt che l'agente esegue2845 "prompt": str, # Il prompt che l'agente esegue
2812 "outputFile": str, # Percorso del file dove viene scritto l'output dell'agente2846 "outputFile": str, # Percorso del file dove viene scritto l'output dell'agente
2813}2847}
2814```2848```
2815 2849
2816Restituisce il risultato dal subagente. L'output è discriminato sul campo `status`: `"completed"` per compiti terminati, `"async_launched"` per compiti in background, e `"remote_launched"` per compiti che Claude Code ha inviato a una sessione cloud remota, dove `sessionUrl` si collega a quella sessione e `taskId` l'identifica. Se Claude Code [ha mantenuto il worktree isolato del subagente](/docs/it/worktrees#isolate-subagents-with-worktrees), `worktreePath` sulla variante `completed` è dove trovarlo, e `worktreeBranch` è il suo ramo quando Claude Code ha creato il worktree con git.2850Restituisce il risultato dal subagente. L'output è discriminato sul campo `status`: `"completed"` per compiti terminati, `"async_launched"` per compiti in background, e `"remote_launched"` per compiti che Claude Code ha inviato a una sessione cloud, dove `sessionUrl` si collega a quella sessione e `taskId` l'identifica. Se Claude Code [ha mantenuto il worktree isolato del subagente](/docs/it/worktrees#isolate-subagents-with-worktrees), `worktreePath` sulla variante `completed` è dove trovarlo, e `worktreeBranch` è il suo ramo quando Claude Code ha creato il worktree con git.
2817 2851
2818Sulla variante `completed`, `resolvedModel` nomina il modello su cui il subagente ha iniziato, che può differire dal `model` input richiesto quando [`availableModels`](/docs/it/model-config#restrict-model-selection) o un altro override si applica. Questo campo richiede Claude Code v2.1.174 o successivo. Sulla variante `async_launched`, `resolvedModel` nomina il modello in uso quando l'agente si è spostato in background, quindi uno scambio che è accaduto prima del backgrounding si riflette lì. Il campo `modelsUsed` su entrambe le varianti elenca i modelli utilizzati in ordine, con ripetizioni consecutive compresse; è impostato solo quando il modello è stato scambiato durante l'esecuzione. `modelsUsed` e il comportamento di `resolvedModel` al momento del backgrounding richiedono Claude Code v2.1.212 o successivo.2852Sulla variante `completed`, `resolvedModel` nomina il modello su cui il subagente ha iniziato, che può differire dal `model` input richiesto quando [`availableModels`](/docs/it/model-config#restrict-model-selection) o un altro override si applica. Questo campo richiede Claude Code v2.1.174 o successivo. Sulla variante `async_launched`, `resolvedModel` nomina il modello in uso quando l'agente si è spostato in background, quindi uno scambio che è accaduto prima del backgrounding si riflette lì. Il campo `modelsUsed` su entrambe le varianti elenca i modelli utilizzati in ordine, con ripetizioni consecutive compresse; è impostato solo quando il modello è stato scambiato durante l'esecuzione. `modelsUsed` e il comportamento di `resolvedModel` al momento del backgrounding richiedono Claude Code v2.1.212 o successivo.
2819 2853
2885 2919
2886**Nome dello strumento:** `Bash`2920**Nome dello strumento:** `Bash`
2887 2921
2888Per ciò che imposta il limite massimo in primo piano, vedi [Timeout e limiti di output](/docs/it/tools-reference#timeout-and-output-limits). Per il limite di tempo in background, vedi [Comandi in background](/docs/it/tools-reference#background-commands).2922Per ciò che imposta il limite massimo in primo piano, vedi [Timeout e limiti di output](/docs/it/tools-reference#timeout-and-output-limits). Per il limite di tempo in background, vedi [Limite di tempo per i comandi in background](/docs/it/tools-reference#time-limit-for-background-commands).
2889 2923
2890**Input:**2924**Input:**
2891 2925
2962 2996
2963```python theme={null}2997```python theme={null}
2964{2998{
2965 "message": str, # Messaggio di conferma2999 "filePath": str, # Il file che è stato modificato
2966 "replacements": int, # Numero di sostituzioni effettuate3000 "oldString": str, # Il testo che è stato sostituito
2967 "file_path": str, # Percorso del file che è stato modificato3001 "newString": str, # Il testo che lo ha sostituito
3002 "originalFile": str | None, # Contenuto del file prima della modifica
3003 "structuredPatch": [ # Diff hunks per la modifica
3004 {
3005 "oldStart": int,
3006 "oldLines": int,
3007 "newStart": int,
3008 "newLines": int,
3009 "lines": list[str],
3010 }
3011 ],
3012 "userModified": bool, # Se l'utente ha modificato la modifica proposta prima di accettarla
3013 "replaceAll": bool, # Se tutte le occorrenze sono state sostituite
3014 "gitDiff": { # Riepilogo git diff opzionale per il file
3015 "filename": str,
3016 "status": "modified" | "added",
3017 "additions": int,
3018 "deletions": int,
3019 "changes": int,
3020 "patch": str,
3021 "repository": str | None, # Proprietario/repo GitHub quando disponibile
3022 } | None,
2968}3023}
2969```3024```
2970 3025
2984}3039}
2985```3040```
2986 3041
2987**Output (File di testo):**3042L'output assume una delle seguenti forme a seconda di ciò che Claude ha letto. Controllare la chiave `type` per distinguerle.
3043
3044**Output (type: `"text"`):**
3045
3046```python theme={null}
3047{
3048 "type": "text",
3049 "file": {
3050 "filePath": str, # Il file che è stato letto
3051 "content": str, # Il contenuto restituito
3052 "numLines": int, # Numero di righe nel contenuto restituito
3053 "startLine": int, # Numero di riga in cui inizia il contenuto
3054 "totalLines": int, # Numero totale di righe nel file
3055 "truncatedByTokenCap": bool | None, # Presente e True quando una lettura dell'intero file ha superato il limite di token e il contenuto è la prima pagina
3056 },
3057}
3058```
3059
3060**Output (type: `"image"`):**
3061
3062```python theme={null}
3063{
3064 "type": "image",
3065 "file": {
3066 "base64": str, # Dati dell'immagine codificati in Base64
3067 "type": "image/jpeg" | "image/png" | "image/gif" | "image/webp", # Tipo MIME dell'immagine
3068 "originalSize": int, # Dimensione del file originale in byte
3069 "dimensions": { # Informazioni di dimensionamento opzionali per la mappatura delle coordinate
3070 "originalWidth": int | None, # Opzionale; larghezza originale in pixel
3071 "originalHeight": int | None, # Opzionale; altezza originale in pixel
3072 "displayWidth": int | None, # Opzionale; larghezza dopo il ridimensionamento
3073 "displayHeight": int | None, # Opzionale; altezza dopo il ridimensionamento
3074 } | None,
3075 },
3076}
3077```
3078
3079**Output (type: `"notebook"`):**
3080
3081```python theme={null}
3082{
3083 "type": "notebook",
3084 "file": {
3085 "filePath": str, # Il notebook che è stato letto
3086 "cells": list, # Celle del notebook
3087 },
3088}
3089```
3090
3091**Output (type: `"pdf"`):**
3092
3093```python theme={null}
3094{
3095 "type": "pdf",
3096 "file": {
3097 "filePath": str, # Il PDF che è stato letto
3098 "base64": str, # Dati PDF codificati in Base64
3099 "originalSize": int, # Dimensione del file in byte
3100 },
3101}
3102```
3103
3104**Output (type: `"parts"`):**
2988 3105
2989```python theme={null}3106```python theme={null}
2990{3107{
2991 "content": str, # Contenuto del file con numeri di riga3108 "type": "parts",
2992 "total_lines": int, # Numero totale di righe nel file3109 "file": {
2993 "lines_returned": int, # Righe effettivamente restituite3110 "filePath": str, # Il PDF che è stato letto
3111 "originalSize": int, # Dimensione del file in byte
3112 "count": int, # Numero di pagine estratte come immagini
3113 "outputDir": str, # Directory contenente le immagini delle pagine estratte
3114 },
3115 "firstPage": int | None, # Numero di pagina del documento opzionale della prima pagina estratta
2994}3116}
2995```3117```
2996 3118
2997**Output (Immagini):**3119**Output (type: `"file_unchanged"`):**
2998 3120
2999```python theme={null}3121```python theme={null}
3000{3122{
3001 "image": str, # Dati dell'immagine codificati in Base643123 "type": "file_unchanged", # Il file è invariato da quando Claude l'ha letto l'ultima volta in questa sessione, quindi il contenuto non viene ripetuto
3002 "mime_type": str, # Tipo MIME dell'immagine3124 "file": {
3003 "file_size": int, # Dimensione del file in byte3125 "filePath": str,
3126 },
3127 "source": "seeded" | None, # Presente quando la copia precedente proveniva da un file CLAUDE.md o memory caricato all'avvio piuttosto che da una chiamata Read
3004}3128}
3005```3129```
3006 3130
3023 3147
3024```python theme={null}3148```python theme={null}
3025{3149{
3026 "message": str, # Messaggio di successo3150 "type": "create" | "update", # Se la scrittura ha creato un nuovo file o sovrascritto uno esistente
3027 "bytes_written": int, # Numero di byte scritti3151 "filePath": str, # Il file che è stato scritto
3028 "file_path": str, # Percorso del file che è stato scritto3152 "content": str, # Il contenuto che è stato scritto
3153 "structuredPatch": [ # Diff hunks; vuoto per un nuovo file, quando nulla è cambiato, o quando Claude Code ha saltato il diff
3154 {
3155 "oldStart": int,
3156 "oldLines": int,
3157 "newStart": int,
3158 "newLines": int,
3159 "lines": list[str],
3160 }
3161 ],
3162 "originalFile": str | None, # Contenuto precedente; None per un nuovo file o quando il contenuto precedente era troppo grande da includere
3163 "gitDiff": { # Riepilogo git diff opzionale per il file
3164 "filename": str,
3165 "status": "modified" | "added",
3166 "additions": int,
3167 "deletions": int,
3168 "changes": int,
3169 "patch": str,
3170 "repository": str | None, # Proprietario/repo GitHub quando disponibile
3171 } | None,
3172 "userModified": bool | None, # Opzionale; se l'utente ha modificato il contenuto proposto prima di accettarlo
3029}3173}
3030```3174```
3031 3175
3048 3192
3049```python theme={null}3193```python theme={null}
3050{3194{
3051 "matches": list[str], # Array dei percorsi dei file corrispondenti3195 "durationMs": int, # Tempo impiegato per eseguire la ricerca, in millisecondi
3052 "count": int, # Numero di corrispondenze trovate3196 "numFiles": int, # Numero di percorsi restituiti, dopo qualsiasi troncamento
3053 "search_path": str, # Directory di ricerca utilizzata3197 "filenames": list[str], # Percorsi dei file corrispondenti
3198 "truncated": bool, # Se i risultati sono stati troncati al limite di 100 file
3199 "totalMatches": int | None, # Numero totale opzionale di file corrispondenti prima del troncamento; un limite inferiore quando countIsComplete è False
3200 "countIsComplete": bool | None, # Opzionale; se totalMatches è esatto
3054}3201}
3055```3202```
3056 3203
3204`totalMatches` e `countIsComplete` richiedono Claude Code v2.1.191 o successivo.
3205
3057<h3 id="grep">3206<h3 id="grep">
3058 Grep3207 Grep
3059</h3>3208</h3>
3074 "-B": int | None, # Righe da mostrare prima di ogni corrispondenza3223 "-B": int | None, # Righe da mostrare prima di ogni corrispondenza
3075 "-A": int | None, # Righe da mostrare dopo ogni corrispondenza3224 "-A": int | None, # Righe da mostrare dopo ogni corrispondenza
3076 "-C": int | None, # Righe da mostrare prima e dopo3225 "-C": int | None, # Righe da mostrare prima e dopo
3226 "context": int | None, # Righe da mostrare prima e dopo; -C è un alias
3227 "-o": bool | None, # Stampa solo le parti corrispondenti di ogni riga
3077 "head_limit": int | None, # Limita l'output alle prime N righe/voci3228 "head_limit": int | None, # Limita l'output alle prime N righe/voci
3229 "offset": int | None, # Salta le prime N righe/voci prima di applicare head_limit
3078 "multiline": bool | None, # Abilita la modalità multilinea3230 "multiline": bool | None, # Abilita la modalità multilinea
3079}3231}
3080```3232```
3081 3233
3082**Output (modalità content):**3234**Output:**
3083 3235
3084```python theme={null}3236```python theme={null}
3085{3237{
3086 "matches": [3238 "mode": "content" | "files_with_matches" | "count" | None, # La modalità di output che è stata utilizzata
3087 {3239 "numFiles": int, # Numero di file nel risultato; sempre 0 in modalità content
3088 "file": str,3240 "filenames": list[str], # File corrispondenti in modalità files_with_matches; vuoto nelle altre modalità
3089 "line_number": int | None,3241 "content": str | None, # Righe corrispondenti in modalità content, o conteggi per file in modalità count
3090 "line": str,3242 "numLines": int | None, # Numero di righe nel contenuto, presente in modalità content
3091 "before_context": list[str] | None,3243 "numMatches": int | None, # Conteggio totale delle corrispondenze, presente in modalità count
3092 "after_context": list[str] | None,3244 "totalFiles": int | None, # Totale opzionale prima di head_limit e offset, in modalità files_with_matches
3093 }3245 "totalLines": int | None, # Totale opzionale prima di head_limit e offset, in modalità content
3094 ],3246 "appliedLimit": int | None, # Presente quando head_limit ha troncato il risultato
3095 "total_matches": int,3247 "appliedOffset": int | None, # Presente quando è stato applicato un offset
3096}3248}
3097```3249```
3098 3250
3099**Output (modalità files\_with\_matches):**3251Grep restituisce questa forma di dict in ogni modalità di output. Quali chiavi opzionali sono presenti dipende da `output_mode`.
3100 3252
3101```python theme={null}3253`totalFiles` richiede Claude Code v2.1.208 o successivo. `totalLines` richiede Claude Code v2.1.210 o successivo.
3102{
3103 "files": list[str], # File contenenti corrispondenze
3104 "count": int, # Numero di file con corrispondenze
3105}
3106```
3107 3254
3108<h3 id="notebookedit">3255<h3 id="notebookedit">
3109 NotebookEdit3256 NotebookEdit
3127 3274
3128```python theme={null}3275```python theme={null}
3129{3276{
3130 "message": str, # Messaggio di successo3277 "new_source": str, # La sorgente scritta nella cella
3131 "edit_type": "replaced" | "inserted" | "deleted", # Tipo di modifica eseguita3278 "old_source": str | None, # Sorgente della cella precedente, presente per replace e delete
3132 "cell_id": str | None, # ID della cella interessata3279 "cell_id": str | None, # ID della cella modificata, quando disponibile
3133 "total_cells": int, # Numero totale di celle nel notebook dopo la modifica3280 "cell_type": "code" | "markdown", # Il tipo della cella
3281 "language": str, # Il linguaggio di programmazione del notebook
3282 "edit_mode": str, # La modalità di modifica che è stata utilizzata
3283 "error": str | None, # Messaggio di errore quando l'operazione non è riuscita
3284 "notebook_path": str, # Il file del notebook
3285 "original_file": str, # Contenuto del notebook prima della modifica
3286 "updated_file": str, # Contenuto del notebook dopo la modifica
3134}3287}
3135```3288```
3136 3289
3228 3381
3229```python theme={null}3382```python theme={null}
3230{3383{
3231 "message": str, # Messaggio di successo3384 "oldTodos": [ # L'elenco todo prima dell'aggiornamento
3232 "stats": {"total": int, "pending": int, "in_progress": int, "completed": int},3385 {
3386 "content": str,
3387 "status": "pending" | "in_progress" | "completed",
3388 "activeForm": str,
3389 }
3390 ],
3391 "newTodos": [ # L'elenco todo dopo l'aggiornamento
3392 {
3393 "content": str,
3394 "status": "pending" | "in_progress" | "completed",
3395 "activeForm": str,
3396 }
3397 ],
3233}3398}
3234```3399```
3235 3400
3401 3566
3402```python theme={null}3567```python theme={null}
3403{3568{
3404 "message": str, # Messaggio di conferma3569 "plan": str | None, # Il piano che è stato presentato all'utente
3405 "approved": bool | None, # Se l'utente ha approvato il piano3570 "isAgent": bool, # True quando un subagente ha chiamato lo strumento
3571 "filePath": str | None, # Presente quando il piano è stato salvato in un file
3572 "hasTaskTool": bool | None, # Opzionale; se lo strumento Agent è disponibile nel contesto corrente
3573 "planWasEdited": bool | None, # Presente e True quando l'utente ha modificato il piano prima di approvarlo
3574 "awaitingLeaderApproval": bool | None, # Presente e True quando un compagno di squadra ha inviato il piano al team lead per l'approvazione
3575 "requestId": str | None, # ID opzionale di quella richiesta di approvazione
3406}3576}
3407```3577```
3408 3578
3420}3590}
3421```3591```
3422 3592
3593Il risultato è un elenco piuttosto che un dict, quindi `tool_use_result` contiene un `list` per questo strumento.
3594
3423**Output:**3595**Output:**
3424 3596
3425```python theme={null}3597```python theme={null}
3426{3598[ # Una voce per risorsa
3427 "resources": [
3428 {3599 {
3429 "uri": str,3600 "uri": str, # URI della risorsa
3430 "name": str,3601 "name": str, # Nome della risorsa
3431 "description": str | None,3602 "mimeType": str | None, # Tipo MIME opzionale
3432 "mimeType": str | None,3603 "description": str | None, # Descrizione opzionale
3433 "server": str,3604 "server": str, # Server che fornisce questa risorsa
3434 }3605 }
3435 ],3606]
3436 "total": int,
3437}
3438```3607```
3439 3608
3440<h3 id="readmcpresource">3609<h3 id="readmcpresource">
3457```python theme={null}3626```python theme={null}
3458{3627{
3459 "contents": [3628 "contents": [
3460 {"uri": str, "mimeType": str | None, "text": str | None, "blob": str | None}3629 {
3630 "uri": str, # URI della risorsa
3631 "mimeType": str | None, # Tipo MIME opzionale
3632 "text": str | None, # Contenuto di testo, o una nota sul contenuto binario
3633 "blobSavedTo": str | None, # Presente quando Claude Code ha salvato il contenuto binario su disco; percorso del file salvato
3634 }
3461 ],3635 ],
3462 "server": str,3636 "error": str | None, # Presente quando il server non poteva leggere la risorsa
3463}3637}
3464```3638```
3465 3639