התחלה מהירה
- בהגדרות החשבון → API ומחברים → צור מפתח. המפתח (
ivm_live_…) מוצג פעם אחת. - קריאה ראשונה:
curl https://mcp.ivreetmeet.co.il/v1/meetings?limit=5 \
-H "Authorization: Bearer ivm_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ב-Python:
import httpx
API = "https://mcp.ivreetmeet.co.il/v1"
H = {"Authorization": "Bearer ivm_live_XXXXXXXX"}
meetings = httpx.get(f"{API}/meetings", headers=H, params={"limit": 5}).json()["meetings"]
mid = meetings[0]["id"]
summary = httpx.get(f"{API}/meetings/{mid}/summary", headers=H).json()["summary"]
transcript = httpx.get(f"{API}/meetings/{mid}/transcript", headers=H, params={"format": "txt"}).text
העלאת הקלטה (קובץ או כתובת):
curl -X POST https://mcp.ivreetmeet.co.il/v1/meetings -H "Authorization: Bearer ivm_live_…" \
-F "[email protected]" -F "title=שיחה עם לקוח" -F "summary_instructions=סכם החלטות ומשימות בלבד"
# או
curl -X POST https://mcp.ivreetmeet.co.il/v1/meetings -H "Authorization: Bearer ivm_live_…" -H "Content-Type: application/json" \
-d '{"source_url":"https://example.com/recording.mp3","title":"פגישת תיאום"}'
תיעוד OpenAPI מלא: /v1/docs. כתובת MCP: https://mcp.ivreetmeet.co.il/mcp.
אימות והרשאות
מפתח API אישי
נוצר בהגדרות (או POST /v1/api-keys עם טוקן ההתחברות של האפליקציה). נשמר אצלנו רק כ-SHA-256. נשלח כ-Authorization: Bearer ivm_live_… ל-REST ול-MCP.
OAuth 2.1 לכלי AI
Claude, ChatGPT, Codex ודומיהם נרשמים אוטומטית (dynamic client registration), מפנים אתכם לדף אישור בעברית, ומקבלים טוקן לשעה עם refresh token. ניתוק מהגדרות → אפליקציות מחוברות.
הרשאות (scopes)
חיבור MCP מכלי AI
כתובת השרת: https://mcp.ivreetmeet.co.il/mcp (streamable HTTP). כל כלי מקבל את אותם 15 כלים: list_meetings, search_meetings, get_meeting, get_summary, get_transcript, get_action_items, get_decisions, get_speakers, get_health, get_processing_status, upload_meeting, join_meeting, resummarize, ו-search/fetch עבור מחקר עומק ב-ChatGPT.
Claude Code
# כניסה עם OAuth (מומלץ): הוסיפו את השרת ואז /mcp בתוך Claude Code כדי להתחבר
claude mcp add --transport http ivreetmeet https://mcp.ivreetmeet.co.il/mcp --scope user
# או עם מפתח API קבוע
claude mcp add --transport http ivreetmeet https://mcp.ivreetmeet.co.il/mcp --header "Authorization: Bearer ivm_live_…"
אחרי ההוספה: /mcp → בחרו ivreetmeet → Authenticate → דף האישור נפתח בדפדפן.
claude.ai (אתר ואפליקציה)
Settings → Connectors (או Customize → Connectors) → Add custom connector → הדביקו https://mcp.ivreetmeet.co.il/mcp → Connect → התחברו בדף האישור. זמין בכל התוכניות (בחינם: מחבר מותאם אחד). בארגון: מנהל מוסיף ב-Organization settings → Connectors.
ChatGPT
Settings → Security and login → הפעילו Developer mode → הוסיפו חיבור (Connectors / Apps) עם הכתובת https://mcp.ivreetmeet.co.il/mcp → אישור OAuth. הכלים search ו-fetch מאפשרים גם Deep research על הפגישות שלכם.
Codex (CLI ו-IDE)
codex mcp add ivreetmeet --url https://mcp.ivreetmeet.co.il/mcp
codex mcp login ivreetmeet # OAuth
# או ב-~/.codex/config.toml
[mcp_servers.ivreetmeet]
url = "https://mcp.ivreetmeet.co.il/mcp"
bearer_token_env_var = "IVREETMEET_API_KEY"Cursor
// ~/.cursor/mcp.json (או .cursor/mcp.json בפרויקט)
{ "mcpServers": { "ivreetmeet": {
"url": "https://mcp.ivreetmeet.co.il/mcp",
"headers": { "Authorization": "Bearer ivm_live_…" } } } }
בלי headers, Cursor יפעיל OAuth ויפנה לדף האישור.
Gemini CLI / Antigravity
// ~/.gemini/settings.json
{ "mcpServers": { "ivreetmeet": {
"httpUrl": "https://mcp.ivreetmeet.co.il/mcp",
"headers": { "Authorization": "Bearer ivm_live_…" } } } }
// OAuth במקום מפתח: "oauth": { "enabled": true, "authProviderType": "dynamic_discovery" }Grok
grok.com/connectors → New Connector → Custom → הכתובת https://mcp.ivreetmeet.co.il/mcp → השלימו את האימות (OAuth). לפי תיעוד xAI זמין ל-Grok Business ו-Enterprise; ה-API של xAI (Remote MCP tools) עובד עם אותה כתובת ומפתח API.
REST v1
| נתיב | מה |
|---|---|
GET /v1/me | מי אני, סוג האימות וההרשאות |
GET /v1/meetings | רשימה: status, q, from, to, limit, cursor |
GET /v1/meetings/{id} | פרטים, מצב עיבוד, דוברים |
GET /v1/meetings/{id}/transcript?format=json|txt|srt|vtt | תמליל עם דוברים וזמנים (json מדופדף ב-offset/limit) |
GET /v1/meetings/{id}/summary · /action-items · /decisions · /speakers · /health · /status | סיכום, משימות, החלטות, דוברים, בריאות תקשורת, מצב |
GET /v1/meetings/{id}/export?format=pdf|docx | קובץ להורדה |
POST /v1/meetings · POST /v1/meetings/batch | העלאה (קובץ עד 500 MB או source_url), עד 50 בבת אחת |
POST /v1/meetings/upload-url · /upload-url/complete · /register | קבצים גדולים (עד 2 GB) ישירות ל-S3 |
POST /v1/meetings/{id}/resummarize · DELETE /v1/meetings/{id} | סיכום מחדש עם הנחיות, מחיקה |
/v1/api-keys · /v1/connected-apps | ניהול מפתחות ואפליקציות מחוברות (עם טוקן ההתחברות של האפליקציה) |
/v1/webhooks · /v1/integrations/google-drive · /v1/bots | webhooks, תיוק לדרייב, בוט |
העלאות גדולות והקלטות טלפון
פורמטים: MP3, WAV, M4A, AAC, OGG/OPUS, FLAC, WEBM, MP4/MOV/MKV (רק האודיו), AMR/3GP ממקליטי טלפון, WMA, AIFF, CAF. עד 500 MB דרך POST /v1/meetings; עד 2 GB / 4 שעות דרך העלאה ישירה:
import httpx, os
API, H = "https://mcp.ivreetmeet.co.il/v1", {"Authorization": "Bearer ivm_live_…"}
path = "long_call.m4a"; size = os.path.getsize(path)
up = httpx.post(f"{API}/meetings/upload-url", headers=H, json={"filename": path, "size_bytes": size}).json()
if up["method"] == "PUT":
httpx.put(up["url"], content=open(path, "rb").read(), headers=up["headers"], timeout=None)
else: # multipart: parts of up["part_size"] bytes
etags = []
with open(path, "rb") as f:
for part in up["parts"]:
r = httpx.put(part["url"], content=f.read(up["part_size"]), timeout=None)
etags.append({"part_number": part["part_number"], "etag": r.headers["ETag"]})
httpx.post(f"{API}/meetings/upload-url/complete", headers=H, json={"key": up["key"], "upload_id": up["upload_id"], "parts": etags})
meeting = httpx.post(f"{API}/meetings/register", headers=H, json={"key": up["key"], "title": "שיחה ארוכה"}).json()
Webhooks
אירועים: meeting.completed, meeting.failed, bot.joined, bot.done. כל משלוח חתום; אמתו כך:
import hmac, hashlib
def verify(secret: str, headers: dict, body: bytes) -> bool:
ts, sig = headers["X-IvreetMeet-Timestamp"], headers["X-IvreetMeet-Signature"]
expected = "sha256=" + hmac.new(secret.encode(), ts.encode() + b"." + body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, sig)
גוף המשלוח: {"id","event","created_at","data":{"id","title","status","duration_seconds","links":{"app","api"}}}. ניסיונות חוזרים אחרי 1, 5, 15, 60 ו-240 דקות; GET /v1/webhooks/{id}/deliveries מראה הכול. POST /v1/webhooks/{id}/test שולח אירוע בדיקה עכשיו.
תיוק אוטומטי ל-Google Drive
בהגדרות → API ומחברים → חבר Google Drive. כלל התיוק קובע תיקייה לפי {title_prefix} (הטקסט שלפני " - " או ":" בכותרת, למשל שם הפרויקט), {title} או {date:%Y-%m}, ואילו קבצים לשמור: תמליל (DOCX/TXT), סיכום (DOCX/MD) וההקלטה. כל פגישה שמסתיימת מתויקת תוך דקה.
בוט לפגישות Zoom / Google Meet / Teams
הדביקו קישור ב"הוסף בוט לפגישה" (או POST /v1/bots / הכלי join_meeting). הבוט "IvreetMeet" מצטרף, מקליט, ובסיום ההקלטה הופכת לפגישה רגילה עם תמליל וסיכום.
מגבלות ושגיאות
- 60 בקשות בדקה ו-20 העלאות בשעה לכל מפתח או אפליקציה (
429עםRetry-After). - תמלול דרך MCP מוגבל ל-40,000 תווים לקריאה; המשיכו עם
next_offset. - מכסת החשבון (דקות ופגישות לחודש) חלה גם על ה-API:
402 usage_limit_reached. - כל שגיאה:
{"error":{"code":"…","message":"…"}}.
איך זה נראה
English
IvreetMeet API — programmatic access to your own Hebrew meeting transcripts and summaries. Base URL https://mcp.ivreetmeet.co.il, OpenAPI at /v1/docs, MCP server at /mcp (streamable HTTP).
Auth. Personal API keys (ivm_live_…, created in Settings → API & connectors, shown once) as Authorization: Bearer; or OAuth 2.1 for AI clients (dynamic client registration, PKCE, Hebrew consent page, 1-hour access tokens, rotating refresh tokens; metadata at /.well-known/oauth-authorization-server). Scopes: meetings:read, meetings:write, bots:write, webhooks:manage, integrations:manage.
Connect. Claude Code: claude mcp add --transport http ivreetmeet https://mcp.ivreetmeet.co.il/mcp then /mcp to sign in (or --header "Authorization: Bearer ivm_live_…"). claude.ai: Settings → Connectors → Add custom connector → the URL. ChatGPT: Developer mode → add the URL (OAuth; search/fetch support deep research). Codex: codex mcp add ivreetmeet --url https://mcp.ivreetmeet.co.il/mcp + codex mcp login. Cursor and Gemini CLI/Antigravity: mcpServers JSON with the URL and an Authorization header (or OAuth). Grok: grok.com/connectors → New → Custom → the URL.
REST. GET /v1/meetings (filters, cursor), /v1/meetings/{id}, /transcript?format=json|txt|srt|vtt, /summary, /action-items, /decisions, /speakers, /health, /status, /export?format=pdf|docx; POST /v1/meetings (multipart file ≤500 MB or JSON source_url), /batch (≤50), presigned /upload-url → S3 PUT or multipart → /register (≤2 GB); /resummarize, DELETE. Webhooks (meeting.completed, meeting.failed, bot.joined, bot.done) signed with X-IvreetMeet-Signature: sha256=HMAC-SHA256(secret, timestamp + "." + body), five retries. Google Drive filing by folder rule. Meeting bot for Zoom / Meet / Teams links: the bot joins only a running meeting and must be admitted by a participant on Meet/Teams (waiting room on Zoom).
Limits. 60 requests/min and 20 uploads/hour per key or client (429 + Retry-After); MCP transcript pages ≤40,000 characters; account quotas apply (402 usage_limit_reached). Errors: {"error":{"code","message"}}.