OneLi ב־Mastra

איך נותנים לסוכן שבנוי ב־Mastra לבצע שיחות טלפון בעברית דרך OneLi, לעקוב אחרי השיחה, לענות להתייעצויות ולקבל את התוצאה.

ל־Mastra יש לקוח MCP מובנה. מוסיפים את שרת OneLi עם מפתח ה־API בכותרת, והסוכן מקבל את כל הכלים של OneLi.

התקנה

  1. יוצרים מפתח API ב־oneli.io/app/connect ושומרים אותו במשתנה הסביבה ONELI_API_KEY בשרת.
  2. מתקינים את החבילות:
Terminal
npm i @mastra/core @mastra/mcp zod

נבדק מול: @mastra/core 1.79.0 · @mastra/mcp 2.5.0

חיבור דרך MCP (מומלץ)

TypeScript
import { MCPClient } from '@mastra/mcp'
import { Agent } from '@mastra/core/agent'

const mcp = new MCPClient({
  id: 'oneli',
  servers: {
    oneli: {
      url: new URL('https://mcp.oneli.io/mcp'),   // url => Streamable HTTP
      requestInit: { headers: { Authorization: `Bearer ${process.env.ONELI_API_KEY}` } },
    },
  },
})

export const callAgent = new Agent({
  id: 'call-agent', name: 'Call Agent',
  instructions: 'Use OneLi to place and follow phone calls.',
  model: 'openai/gpt-5.6-sol',            // any model id you use
  tools: await mcp.listTools(),           // names are namespaced: oneli_create_call_task, …
})

חלופה: כלי REST משלכם

TypeScript
import { createTool } from '@mastra/core/tools'
import { z } from 'zod'

export const createCallTask = createTool({
  id: 'create-call-task',
  description: 'Have OneLi place a phone call. to_number in E.164.',
  inputSchema: z.object({ to_number: z.string(), goal: z.string(), instructions: z.string().optional() }),
  execute: async (input, { abortSignal }) => {
    const r = await fetch('https://api.oneli.io/v1/call-tasks', {
      method: 'POST', signal: abortSignal,
      headers: { Authorization: `Bearer ${process.env.ONELI_API_KEY}`, 'Content-Type': 'application/json' },
      body: JSON.stringify({ idempotency_key: crypto.randomUUID(), ...input }),
    })
    if (!r.ok) throw new Error(`OneLi ${r.status}: ${await r.text()}`)
    return r.json()
  },
})

שימו לב

  • שמות הכלים מקבלים קידומת של שם השרת, למשל oneli_create_call_task.
  • בגרסאות 1.x הפונקציה נקראה getTools(); היום listTools().
  • למפתח נפרד לכל משתמש: listToolsets() ומעבירים את התוצאה בזמן generate או stream.

מספרי טלפון: OneLi מקבלת מספר ישראלי בכל פורמט נפוץ (050-1234567,‏ +972501234567). כשהשיחה מתחילה, הסוכן ממשיך עם get_call_events או עם GET /v1/call-tasks/:id/events כדי לעקוב, לענות להתייעצויות ולקבל את הסיכום.

מה הלאה

מקורות: mastra.ai/reference/tools/mcp-client · mastra.ai/docs/agents/using-tools