מוכן לסוכןלשיעור 7

מודול 6 · 80 דקות

WebMCP אימפרטיבי

טופס לא מכסה חיפוש דינמי, קריאת סל, או כלי שמופיע רק כשיש פריטים. בשביל זה registerTool.

const ctx = document.modelContext || navigator.modelContext;
const ac = new AbortController();

await ctx.registerTool({
  name: "search_menu",
  description: "Search the restaurant menu by dish or ingredient.",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string" },
      maxPrice: { type: "number" }
    },
    required: ["query"]
  },
  annotations: { readOnlyHint: true },
  execute: async ({ query, maxPrice }) => { /* string */ }
}, { signal: ac.signal });

// ביטול רישום
ac.abort();

הכלים בדמו

כולם ב־site/js/webmcp.js. הם קוראים לפונקציות מ־app.js — אל תשכפלו לוגיקה.

כללים

בדיקה בקונסול

const tools = await document.modelContext.getTools();
const t = tools.find(x => x.name === "search_menu");
await document.modelContext.executeTool(t, JSON.stringify({query:"טלה"}));

הארגומנט השני הוא מחרוזת JSON, לא אובייקט.

מעבדה

  1. הוסיפו כלי list_courses שמחזיר את המנות לפי מנה ראשונה / עיקרית / קינוח.
  2. רשמו add_to_cart רק בדף התפריט, לא בבית.
  3. הגבילו את פלט החיפוש ל־8 שורות.

שיעור 7 — בדיקות וגמר