API imperativa

Alexandra Klepper
Alexandra Klepper

Pubblicato: 18 maggio 2026

Spiegazione Web Estensioni Stato di Chrome Intenzione
GitHub Prova per sviluppatori Prova per sviluppatori Prova per sviluppatori Prova per sviluppatori Visualizza Intenzione di sperimentare

Puoi utilizzare l'API imperativa WebMCP per definire molti tipi di strumenti con JavaScript standard. Gli strumenti possono eseguire diverse funzioni, come l'inserimento di dati nei moduli, la navigazione del sito e la gestione dello stato.

Prima di utilizzare questa API, leggi gli esempi di casi d'uso.

Fornire il contesto del modello

Utilizza l'interfaccia modelContext per registrare gli strumenti. La registrazione dello strumento richiede un nome, una descrizione e uno schema di input con proprietà pertinenti.

Utilizza registertool per aggiungere un singolo strumento al contesto del modello.

WebMCPza Maker

navigator.modelContext.registerTool({
  name: 'toggle_layer',
  description: 'Control pizza layers (sauce, cheese). Use "add", "remove", or "toggle".',
  inputSchema: {
    type: 'object',
    properties: {
      layer: { type: 'string', enum: ['sauce-layer', 'cheese-layer'] },
      action: { type: 'string', enum: ['add', 'remove', 'toggle'] },
    },
    required: ['layer'],
  },
  execute: ({ layer, action }) => {
    toggleLayer(layer, action);
    return `Performed ${action || 'toggle'} on layer: ${layer}`;
  },
});

Ottenere lo stato dell'ordine

navigator.modelContext.registerTool({
  name: 'get_order_status',
  description: 'Search orders in a given timeframe. Returns order number, shipping status and location',
  inputSchema: {
    "type": "object",
    "properties": {
      "timeframe": { "type": "string", "oneOf": [
        { "type": "string", "const": "today", "title": "Today" },
        { "type": "string", "const": "yesterday", "title": "Yesterday" },
        { "type": "string", "const": "last_7_days", "title": "Last 7 Days" },
        { "type": "string", "const": "last_30_days", "title": "Last 30 Days" },
        { "type": "string", "const": "last_6_months", "title": "Last 6 Months" }],
      "enum": [ "today", "yesterday", "last_7_days", "last_30_days", "last_6_months" ],
      "description": "Timeframe for the order lookup." }
    },
    "required": [ "timeframe" ]
  },
  execute: ({ timeframe }) => {
    // Add your API or database logic here to fetch and return the order data as a string.
  },
});

Puoi rimuovere uno strumento con AbortSignal, se passato come parametro facoltativo.

const addTodoTool = {
  name: "addTodo",
  description: "Add a new item to the todo list",
  inputSchema: {
    type: "object",
    properties: { text: { type: "string" } },
  },
  execute: ({ text }) => {
    // You should handle the persistence logic here (omitted for demo)
    return `Added todo: ${text}`;
  },
  annotations: {
    readOnlyHint: false,
    untrustedContentHint: true
  },
};
const controller = new AbortController();
navigator.modelContext.registerTool(addTodoTool, { signal: controller.signal });

// Unregister the tool later...
controller.abort();

Interagire e condividere feedback

WebMCP è in fase di discussione e potrebbe subire modifiche in futuro. Se provi questa API e hai un feedback, saremo felici di riceverlo.