Chiama MyTools direttamente con WebMCP
WebMCP è uno standard web emergente che permette a una pagina di consegnare a un agente IA un elenco di funzioni richiamabili invece di uno schermo da interpretare. Una pagina registra degli strumenti su document.modelContext — ciascuno con un nome, una descrizione e uno schema JSON — e un agente che gira in quel browser può elencarli e chiamarli.
MyTools registra tre strumenti validi per tutto il sito su ogni pagina, e altri tre su ciascuna delle sue 55 pagine strumento: leggere lo stato, eseguire l'operazione, salvare il risultato. Il lavoro continua ad avvenire nel browser, sulla macchina dell'utente. WebMCP cambia chi preme il pulsante, non dove finisce il file.
Dove funziona, e quanto è consolidato
Il browser di ChatGPT chiama già oggi questi strumenti. OpenAI ha aggiunto il supporto di WebMCP al browser integrato nell'app desktop di ChatGPT: lì gli strumenti qui sotto sono richiamabili senza flag, senza token di trial e senza alcuna configurazione da parte tua. MyTools è già stato guidato così sul campo: un crash specifico di quel browser è stato segnalato da qualcuno il cui agente stava già usando questi strumenti, ed è stato corretto nell'agosto 2026.
Su Chrome è un origin trial. Il trial va da Chrome 149 a Chrome 156, all'incirca fino alla fine del 2026. MyTools include un token per la propria origine di produzione, quindi in un Chrome compatibile gli strumenti ci sono senza dover attivare alcun flag. Se il trial si conclude senza che l'API venga rilasciata, document.modelContext sparirà da Chrome e con lui questi strumenti — ed è per questo che il punto di ingresso via URL qui sotto non andrà da nessuna parte.
La specifica è una bozza, non uno standard ratificato. WebMCP è un Draft Community Group Report del W3C Web Machine Learning Community Group, curato da ingegneri di Google e Microsoft, ed esplicitamente fuori dallo standards track del W3C. La sua forma è già cambiata una volta: gli strumenti si registravano su navigator.modelContext prima che l'API passasse a document.modelContext. Se parti da materiale più vecchio, verifica prima questo.
Verifica la funzionalità, non darla per scontata. document.modelContext o c'è o non c'è e, con più di un'implementazione che arriva secondo i propri tempi, è l'unica verifica che valga la pena fare. Non analizzare mai lo user agent per dedurlo. Dove manca, su questo sito non si rompe nulla: gli strumenti semplicemente non esistono e ogni pagina continua a funzionare come pagina.
Esiste un'alternativa che funziona ovunque. Dove WebMCP non è disponibile, guida il sito attraverso il suo punto di ingresso via URL: 50 dei 55 strumenti si aprono con il file già caricato da un URL che costruisci tu. I due meccanismi coprono le stesse operazioni; cambia solo l'ergonomia.
Se fai delle prove in locale, in un Chrome senza il token del trial, attiva chrome://flags/#enable-webmcp-testing.
Per approfondire — La bozza di specifica · La documentazione WebMCP di Chrome
Tre strumenti su ogni pagina
Questi sono registrati su tutto il sito, comprese le pagine che non sono affatto strumenti: la homepage, un articolo, questa pagina. Sono il modo in cui un agente trova la strada verso lo strumento giusto.
find_mytools_tools — Cerca nel catalogo. Accetta query, category, inputType e limit, tutti facoltativi, e restituisce gli strumenti corrispondenti con il loro slug, il percorso della pagina e se accettano l'URL di un file. Sola lettura. L'output è limitato, quindi restringi la ricerca invece di chiedere tutto.
open_mytools_tool — Apre uno strumento, pronto all'uso. Accetta slug — obbligatorio, così come restituito da find_mytools_tools — più urls, facoltativo, per caricare direttamente dei file remoti, e carryResult, che passa allo strumento aperto i file appena prodotti dallo strumento corrente, invece di ritrovarsi davanti a una schermata di caricamento vuota.
suggest_mytools_pipeline — Dato lo slug di uno strumento e i nomi dei file che ha prodotto, elenca gli strumenti a cui quei file possono passare. Tornano solo le destinazioni compatibili: un lotto non viene mai proposto a uno strumento che accetta un solo file, e a nessuno strumento viene proposto un formato che non è in grado di aprire.
Altri tre su ogni pagina strumento
Tutti e 55 gli strumenti espongono la stessa terna, il cui nome deriva dallo slug dello strumento con i trattini trasformati in trattini bassi. Su /pdf/rotate-pdf sono get_rotate_pdf_state, run_rotate_pdf e download_rotate_pdf.
get_<tool>_state — Che cosa è caricato, come sono impostate le opzioni e un suggerimento che indica la chiamata da fare dopo. Leggilo prima di eseguire qualsiasi cosa: è da lì che arrivano il numero di pagine, le durate e le dimensioni in pixel, ed è ciò che rende sensati gli argomenti.
run_<tool> — Fa il lavoro. Gli argomenti cambiano da strumento a strumento e sono descritti nel suo schema; tutto ciò che ometti mantiene quanto impostato a schermo. La chiamata non restituisce il controllo finché l'operazione non è finita, quindi non c'è niente da interrogare ciclicamente: sulla codifica di un video lungo impiega semplicemente il tempo che serve alla codifica.
download_<tool> — Salva il risultato sul dispositivo dell'utente. Viene registrato solo quando un risultato esiste, quindi la sua presenza nell'elenco degli strumenti è il segnale che il lavoro è concluso. Gli strumenti che producono più file accettano index per salvarne uno, oppure zip per salvarli tutti in un unico archivio.
Tre strumenti si concludono con un URL pubblicato anziché con un file — i due che pubblicano su Facebook e quello che carica su YouTube — e quindi non registrano alcuno strumento download. Si rifiutano anche di agire se nessuno ha effettuato l'accesso: il login apre un popup che solo un clic vero può aprire.
Un esempio concreto
Ruotare un PDF che si trova a un URL, dall'inizio alla fine. Ogni risposta qui sotto è l'output reale di questi strumenti, non una sua approssimazione.
1. Trova lo strumento.
find_mytools_tools({ query: "rotate pdf", inputType: "application/pdf", limit: 3 })
→ { "total": 55, "matched": 1, "tools": [
{ "slug": "rotate-pdf", "title": "Rotate PDF",
"description": "Rotate PDF pages in one click",
"multiple": true, "byUrl": true } ] }2. Aprilo con il file già caricato. Gli strumenti specifici della pagina cambiano insieme alla pagina, quindi rileggi l'elenco degli strumenti subito dopo.
open_mytools_tool({ slug: "rotate-pdf",
urls: ["https://example.com/rental-application.pdf"] })
→ "Opened Rotate PDF with 1 file(s) loading from URL. Everything is processed
locally in the browser. The page-specific tools available to you have changed."3. Leggi lo stato. Il numero di pagine arriva dal PDF stesso, ed è ciò che rende utile inviare un intervallo di pagine.
get_rotate_pdf_state({})
→ { "phase": "configure",
"pdfs": [ { "name": "rental-application.pdf", "pages": 2, "rotations": [0, 0] } ],
"saving": false, "result": null,
"hint": "Call run_rotate_pdf with a rotation, optionally narrowed with pages,
to turn the loaded PDFs." }4. Eseguilo. La chiamata restituisce il controllo quando la rotazione è finita, e a quel punto download_rotate_pdf esiste.
run_rotate_pdf({ rotation: 90 })
→ "Rotated 1 PDF(s) by 90°. Call download_rotate_pdf to save it."5. Salvalo. Il file va sul dispositivo dell'utente; i byte non li ricevi mai.
download_rotate_pdf({})
→ "Saving rental-application-rotated.pdf to the user's device."Restituire una decisione all'utente
Non tutti gli argomenti devono essere scelti da te. Quale parte di una foto tenere, quali pagine di una scansione contano davvero, quanto forte è abbastanza forte: sono decisioni che richiedono di avere il file sotto gli occhi. Questi strumenti sono fatti apposta perché tu possa fermarti, lasciare decidere l'utente e poi riprendere. get_<tool>_state riporta ciò che è a schermo in quel preciso momento, compresa una modifica che l'utente ha appena fatto con il mouse, e ogni argomento che ometti in run_<tool> mantiene il valore impostato a schermo. Omettili tutti e l'esecuzione userà esattamente ciò che ha impostato lui.
Lo strumento di ritaglio immagini, con un trascinamento vero e proprio nel mezzo:
get_crop_image_state({})
→ … "source": { "width": 6240, "height": 4160 },
"selection": { "x": 1459, "y": 420, "width": 3330, "height": 3328 }
← the user drags the box over what they want to keep
get_crop_image_state({})
→ … "selection": { "x": 2910, "y": 831, "width": 3330, "height": 3329 }
run_crop_image({})
→ "Cropped to 3330×3329 pixels out of 6240×4160 (5507 KB, image/jpeg).
Call download_crop_image to save it."Di' che cosa ti serve nello stesso turno in cui apri lo strumento — "trascina il riquadro sulla parte che vuoi tenere, poi dimmi di procedere" — e rileggi lo stato quando l'utente ti risponde. Mentre aspetti non c'è nulla di bloccato nella pagina: l'utente sta lavorando in una normale scheda del browser.
È qui che passa la linea di confine tra una pagina strumento e un'API. Il lavoro che nessuno ha bisogno di guardare sta bene dietro a una chiamata API, e metterci davanti un browser sarebbe puro sovraccarico. Una pagina si guadagna il suo posto quando serve che una persona veda il file per decidere qualcosa — e WebMCP è ciò che tiene utile un agente attraverso quel momento: carica, misura, converte e salva prima e dopo un giudizio che non spetta a lui dare.
Quattro aspetti che ne determinano il comportamento
L'output è limitato a circa 1500 caratteri. Quindi la risposta sullo stato è un riepilogo, non un dump. Gli elenchi lunghi vengono troncati in coda e segnalati come troncati, e il contenuto dei file non vi compare mai. Se ti serve l'intero catalogo invece del risultato di una ricerca, scarica capabilities.json.
Nessun byte attraversa il confine. Non puoi passare un file a uno strumento e non ne ricevi mai uno. I file entrano tramite un URL che il browser scarica ed escono tramite download_<tool>, che avvia un normale download del browser verso la macchina dell'utente. Tutto ciò che scambi con questi strumenti è testo.
Le chiamate si possono annullare. Ogni esecuzione riceve un AbortSignal. Annullare un'esecuzione interrompe davvero il lavoro invece di abbandonarlo — la codifica di un video viene terminata, non lasciata in esecuzione in un worker — e torna come annullamento, non come errore.
L'elenco degli strumenti cambia mentre navighi. Sono registrati solo gli strumenti della pagina corrente. Aprire un altro strumento annulla la registrazione della terna della pagina precedente e registra quella nuova, quindi rileggi l'elenco degli strumenti dopo ogni open_mytools_tool invece di dare per scontato che quanto hai visto prima sia ancora lì.
Domande a cui vale la pena avere risposta
Quali strumenti di MyTools può chiamare direttamente un agente?
faq.coverage.answer
Funziona solo su Chrome?
No. Il browser integrato nell'app desktop di ChatGPT supporta WebMCP, e Chrome lo espone fino a Chrome 156 a chi partecipa all'origin trial, come MyTools. La specifica è la bozza di un community group del W3C che qualsiasi browser con capacità agentiche può implementare: tratta quindi la disponibilità come qualcosa da verificare in fase di esecuzione, non come un elenco fisso.
Servono una chiave API o un account?
No. Non c'è registrazione, né login, né chiave, né quota. Se il browser espone WebMCP, gli strumenti ci sono già alla prima visita.
Chiamare run_<tool> carica il file su un server?
No. Il lavoro avviene nel browser e MyTools non ha alcun archivio di file lato server. L'unica eccezione è il caricamento di un file da un URL: il nostro server scarica l'URL che indichi affinché il browser possa lavorare sui byte, e non lo conserva.
Che cosa succede se il browser non supporta WebMCP?
Non si rompe nulla. document.modelContext semplicemente non c'è e non viene registrato alcuno strumento; le pagine funzionano come pagine normali. Ripiega sul punto di ingresso via URL, che non richiede alcun supporto da parte del browser.
Si possono concatenare più strumenti senza scaricare nel mezzo?
Sì. Chiama suggest_mytools_pipeline con lo slug e i nomi dei file appena prodotti per vedere che cosa li accetta, poi open_mytools_tool con carryResult: lo strumento successivo si apre con quei file già caricati.
Un agente e una persona possono lavorare sullo stesso strumento nello stesso momento?
faq.together.answer