MCP-Server

Verbinden Sie jeden MCP-fähigen Agenten (Claude Code, Cursor, VS Code, Codex, das OpenAI Agents SDK und mehr) mit Synthorai, und zwar mit nur einer URL und Ihrem API-Schlüssel. Alle Modelle und Modalitäten, die Verwaltung von API-Schlüsseln und die Abrechnungsdaten werden zu Tools, die der Agent aufrufen kann. Jeder Aufruf wird genau wie die entsprechende REST-Anfrage authentifiziert, begrenzt und abgerechnet.

Endpunkthttps://synthorai.io/v1/mcp
TransportStreamable HTTP, zustandslos (keine Sessions), JSON-Antworten
AuthentifizierungAuthorization: Bearer <API key>
ℹ

Der Schlüssel, mit dem Sie sich verbinden, bestimmt die verfügbaren Tools: Ein Inferenzschlüssel (sk-syn-…) ruft Modelle auf; ein Admin-Schlüssel (sk-syn-admin-…) erhält die Tools, die seine Scopes erlauben, Schlüsselverwaltung mit keys.read oder keys.write, Guthaben und Nutzung mit billing.read. Ein Admin-Schlüssel mit mehreren Scopes erhält alle in einer Verbindung. Früher ausgestellte Provisioning- und Abrechnungsschlüssel (sk-syn-prov-…, sk-syn-bill-…) funktionieren weiterhin.

Die weiteren Scopes eines Admin-Schlüssels bringen Tools für das Anfrageprotokoll, die Prompt-Bibliothek und die Workspace-Einstellungen mit. Die Tabellen unten zeigen, welchen Scope jedes Tool braucht.

Schnellstart

  1. Erstellen Sie in der Konsole auf der Seite API-Schlüssel einen API-Schlüssel. Geben Sie ihm für einen Agenten ein Ausgabenlimit und eine Modell-Allowlist.
  2. Fügen Sie den Server mit einem der folgenden Snippets zu Ihrem Client hinzu und lesen Sie den Schlüssel dabei aus einer Umgebungsvariablen, statt ihn in eine Datei einzufügen.
  3. Fragen Sie Ihren Agenten zum Beispiel: „Liste die drei günstigsten Modelle auf, die Tools unterstützen, lass dann das schnellste diese Datei zusammenfassen und sag mir, was es gekostet hat.“

Client verbinden

Alle Clients verwenden denselben Endpunkt und denselben Header. Setzen Sie zuerst SYNTHORAI_API_KEY in Ihrer Umgebung.

Clients, die sich per Anmeldung verbinden (claude.ai, Claude Desktop, ChatGPT), brauchen keinen Schlüssel. Fügen Sie den Endpunkt oben als Connector hinzu und melden Sie sich bei Synthorai an. Dabei wählen Sie den Workspace und legen fest, was die Verbindung darf. Die Verbindung erhält einen eigenen Schlüssel mit Ablaufdatum. Er steht unter API-Schlüssel und lässt sich dort entfernen.

Claude Code

Führen Sie in Claude Code /mcp aus, um die Verbindung zu prüfen. Mit --scope user steht der Server in jedem Projekt zur Verfügung; alternativ committen Sie die .mcp.json-Variante, um ihn mit Ihrem Team zu teilen (der Schlüssel bleibt in der Umgebung jedes Entwicklers).

claude mcp add --transport http synthorai https://synthorai.io/v1/mcp \
  --header "Authorization: Bearer $SYNTHORAI_API_KEY"
{
  "mcpServers": {
    "synthorai": {
      "type": "http",
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${SYNTHORAI_API_KEY}" }
    }
  }
}

Cursor

Legen Sie dies in ~/.cursor/mcp.json (alle Projekte) oder .cursor/mcp.json (ein Projekt) ab.

{
  "mcpServers": {
    "synthorai": {
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${env:SYNTHORAI_API_KEY}" }
    }
  }
}

VS Code (GitHub Copilot)

Legen Sie dies in .vscode/mcp.json ab. VS Code fragt den Schlüssel einmal ab und speichert ihn sicher.

{
  "inputs": [
    { "type": "promptString", "id": "synthorai-key", "description": "Synthorai API key", "password": true }
  ],
  "servers": {
    "synthorai": {
      "type": "http",
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${input:synthorai-key}" }
    }
  }
}

Codex CLI

Legen Sie dies in ~/.codex/config.toml ab, oder führen Sie codex mcp add synthorai --url https://synthorai.io/v1/mcp --bearer-token-env-var SYNTHORAI_API_KEY aus.

[mcp_servers.synthorai]
url = "https://synthorai.io/v1/mcp"
bearer_token_env_var = "SYNTHORAI_API_KEY"

OpenAI Responses API

Die Server von OpenAI rufen den Endpunkt in Ihrem Namen auf. Lassen Sie die IP-Allowlist des Schlüssels daher leer (oder lassen Sie die Egress-Bereiche von OpenAI zu). Mit allowed_tools geben Sie nur die Tools frei, die das Modell braucht.

import os
from openai import OpenAI

client = OpenAI()
resp = client.responses.create(
    model="gpt-4.1",
    tools=[{
        "type": "mcp",
        "server_label": "synthorai",
        "server_url": "https://synthorai.io/v1/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"},
        "allowed_tools": ["list_models", "chat_completion"],
        "require_approval": "never",
    }],
    input="Find the cheapest Synthorai chat model with tool support and ask it for a haiku about gateways.",
)
print(resp.output_text)

OpenAI Agents SDK

Funktioniert genauso mit jedem Framework, das auf den MCP-Client-SDKs aufbaut (LangChain, LlamaIndex, Pydantic AI, Vercel AI SDK, Mastra …): Richten Sie seinen Transport für Streamable HTTP mit dem Header auf den Endpunkt aus.

import asyncio, os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(
        name="synthorai",
        params={
            "url": "https://synthorai.io/v1/mcp",
            "headers": {"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"},
            "timeout": 120,
        },
        cache_tools_list=True,
    ) as synthorai:
        agent = Agent(name="assistant", instructions="Use the Synthorai tools.", mcp_servers=[synthorai])
        result = await Runner.run(agent, "List three chat models under $1 per million input tokens.")
        print(result.final_output)

asyncio.run(main())

MCP Python SDK

import asyncio, os, httpx2
from mcp import Client
from mcp.client.streamable_http import streamable_http_client

async def main():
    http = httpx2.AsyncClient(
        headers={"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"}, timeout=120)
    async with Client(streamable_http_client("https://synthorai.io/v1/mcp", http_client=http)) as mcp:
        tools = await mcp.list_tools()
        print([t.name for t in tools.tools])
        result = await mcp.call_tool("chat_completion",
                                     {"model": "deepseek-v4-flash", "prompt": "Say hi in five words"})
        print(result.content[0].text)

asyncio.run(main())

Claude Desktop

Claude Desktop verbindet sich per Anmeldung: Fügen Sie den Endpunkt als benutzerdefinierten Connector hinzu, ein Schlüssel ist nicht nötig. Wenn Sie stattdessen einen eigenen Schlüssel verwenden möchten, verbinden Sie sich über die Bridge mcp-remote, die den Header für Sie ergänzt:

{
  "mcpServers": {
    "synthorai": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://synthorai.io/v1/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer sk-syn-..." }
    }
  }
}

curl

Der Server spricht einfaches JSON-RPC über HTTP, ein SDK ist also nicht nötig. Ein Handshake ist nicht erforderlich: Jede Anfrage steht für sich.

curl https://synthorai.io/v1/mcp \
  -H "Authorization: Bearer $SYNTHORAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"chat_completion",
                 "arguments":{"model":"deepseek-v4-flash","prompt":"Say hi in five words"}}}'

Beispielantwort

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      { "type": "text", "text": "Hi there, great to meet!" },
      { "type": "text", "text": "[deepseek-v4-flash · finish_reason stop · 12 in / 7 out tokens · cost $0.0000031 · request_id 0199a7c2-…]" }
    ],
    "structuredContent": {
      "model": "deepseek-v4-flash",
      "content": "Hi there, great to meet!",
      "finish_reason": "stop",
      "usage": { "prompt_tokens": 12, "completion_tokens": 7, "total_tokens": 19 },
      "cost_usd": 0.0000031,
      "request_id": "0199a7c2-…"
    }
  }
}

Tools

tools/list liefert nur die Tools, die Ihr Schlüssel nutzen kann: Die Liste wird nach Schlüsselart und nach den für Ihren Workspace freigeschalteten Funktionen gefiltert (Bild- und Videogenerierung befinden sich in einer eingeschränkten Vorschau). Tools, die ein Modell ausführen, kosten genau so viel wie der REST-Aufruf; alle anderen Tools sind kostenlos.

Inferenzschlüssel

ToolFunktionREST-EndpunktHinweise
list_models Modelle, die der Schlüssel aufrufen kann, günstigste zuerst, mit Kontextlänge, Modalitäten, Fähigkeiten und Listenpreisen. Filter: Kategorie, Fähigkeit, Eingabemodalität, Suche. GET /v1/models + /api/models nur lesend
get_model Alle Details zu einem Modell, einschließlich des effektiven Preises nach etwaigen Rabatten und ob der Schlüssel es aufrufen kann. GET /v1/models/{id} nur lesend
get_pricing Die Preisliste (USD nach Rabatten): Preise pro Token, pro Aufruf, pro Minute, pro Sekunde und gestaffelte Preise. GET /api/pricing nur lesend
chat_completion Eine Chat Completion auf einem beliebigen Modell: ein Prompt oder ein vollständiges messages-Array (Bilder, Tool-Ergebnisse), optional mit strukturierter Ausgabe, Function-Tools, Reasoning Effort und Fallback-Modellen. Liefert Text, Tool-Aufrufe, Nutzung, Kosten und request_id. POST /v1/chat/completions kostenpflichtig
generate_image Bilder generieren oder bearbeiten; Rückgabe als Bildinhalt oder mit response_format=url als Links. POST /v1/images/generations kostenpflichtig
list_image_models Bildmodelle mit Preisen und unterstützten Eingaben. GET /v1/images/models nur lesend
create_video Startet einen Videojob aus einem Prompt oder einem ersten Frame; kann bis zu 60 s auf den Abschluss warten. Abgerechnet wird, wenn der Job abgeschlossen ist. POST /v1/videos kostenpflichtig
get_video Jobstatus; nach Abschluss Links zu den Videos (etwa 24 Stunden gültig). GET /v1/videos/{id} nur lesend
cancel_video Bricht einen Job ab, der noch in der Warteschlange steht (ein bereits gestarteter Job lässt sich nicht stoppen). Abgebrochene und fehlgeschlagene Jobs werden nicht abgerechnet. DELETE /v1/videos/{id} destruktiv
list_video_models Videomodelle mit Auflösungen, Dauern und Preisen. GET /v1/videos/models nur lesend
text_to_speech Sprache aus Text, zurückgegeben als Audioinhalt. POST /v1/audio/speech kostenpflichtig
transcribe_audio Text aus Audio, übergeben als URL oder Base64-Daten (bis 25 MB). POST /v1/audio/transcriptions kostenpflichtig
create_embeddings Embedding-Vektoren für einen Text oder einen Batch von bis zu 2048. POST /v1/embeddings kostenpflichtig
get_key_info Ausgabenlimit des Schlüssels, verbrauchter und verbleibender Betrag, Reset-Zeitraum sowie Ausgaben heute / diese Woche / diesen Monat (USD). GET /v1/key nur lesend
get_generation Der Abrechnungsdatensatz einer Anfrage per request_id: Kosten, Token-Aufschlüsselung, Latenz, Status. GET /v1/generation nur lesend

Provisioning-Schlüssel

ToolFunktionREST-EndpunktHinweise
create_api_key Erstellt einen Inferenzschlüssel mit Ausgabenlimit, Reset-Zeitraum, Modell- und IP-Allowlists, Ablaufdatum und Metadaten. Der geheime Schlüssel steht nur im Ergebnis. POST /api/v1/keys ändert Daten
list_api_keys Die Inferenzschlüssel des Workspace mit Limits, Ausgaben und Status; filterbar nach Metadaten. GET /api/v1/keys nur lesend
get_api_key Einstellungen, Ausgaben und Status eines Schlüssels. GET /api/v1/keys/{id} nur lesend
update_api_key Ändert die Einstellungen eines Schlüssels oder deaktiviert / reaktiviert ihn. Nur die angegebenen Felder ändern sich. PATCH /api/v1/keys/{id} destruktiv
delete_api_key Löscht einen Schlüssel dauerhaft. DELETE /api/v1/keys/{id} destruktiv

Billing-Schlüssel

ToolFunktionREST-EndpunktHinweise
get_balance Aktuell verfügbares Guthaben (USD), mit Aktionsguthaben und geplanten Gutschriften. GET /api/v1/billing/balance nur lesend
get_usage Ausgaben und Anfragen pro Stunde oder Tag, nach Schlüssel und/oder Modell. GET /api/v1/billing/usage nur lesend
list_usage_records Datensätze pro Anfrage mit Tokens, Kosten und Status, paginiert per Cursor. GET /api/v1/billing/records nur lesend
get_billing_summary Summen über einen Zeitraum mit den Top-Schlüsseln und -Modellen. GET /api/v1/billing/summary nur lesend
get_data_freshness Wie aktuell die Abrechnungsdaten sind. GET /api/v1/billing/freshness nur lesend

Admin-Schlüssel: Anfrageprotokoll und Nutzung

ToolFunktionREST-EndpunktHinweise
search_requests Anfragen in einem Zeitraum: Modell, Status, Tokens, Kosten, Zeiten, Schlüssel und Labels. Nie der Prompt oder die Antwort. Erfordert logs.read. GET /api/v1/requests nur lesend
get_request Eine einzelne Anfrage anhand ihrer ID. Erfordert logs.read. GET /api/v1/requests/{id} nur lesend
list_traces Anfragen nach Trace-ID gruppiert, mit Anzahl, Kosten und Dauer. Erfordert logs.read. GET /api/v1/traces nur lesend
list_sessions Anfragen nach Sitzungs-ID gruppiert. Erfordert logs.read. GET /api/v1/sessions nur lesend
get_label_usage Anfragen, Tokens und Kosten, nach einem Label summiert. Erfordert usage.read. GET /api/v1/usage/labels nur lesend

Admin-Schlüssel: Prompt-Bibliothek

ToolFunktionREST-EndpunktHinweise
list_prompts Alle Prompts mit ihren Labels und der neuesten Version. Erfordert prompts.read. GET /api/v1/prompts nur lesend
get_prompt Labels, schrittweise Einführung und Versionen eines Prompts. Erfordert prompts.read. GET /api/v1/prompts/{id} nur lesend
get_prompt_version Text, Modelleinstellungen und Variablen einer Version. Erfordert prompts.read. GET /api/v1/prompts/{id}/versions/{version} nur lesend
save_prompt_version Speichert die nächste Version. Für Aufrufer ändert sich nichts, bis ein Label verschoben wird. Erfordert prompts.write. POST /api/v1/prompts/{id}/versions ändert Daten
move_prompt_label Verschiebt ein Label auf eine Version. Wer production verschiebt, ändert, was Aufrufer erhalten. Erfordert prompts.write. PUT /api/v1/prompts/{id}/labels/{label} destruktiv
list_prompt_test_sets Die Testsets eines Prompts, ohne ihre Zeilen. Erfordert evals.read. GET /api/v1/prompts/{id}/test-sets nur lesend
get_prompt_test_set Ein Testset mit seinen Zeilen und Prüfungen. Erfordert evals.read. GET /api/v1/prompts/{id}/test-sets/{set} nur lesend
list_prompt_eval_runs Die letzten Läufe eines Prompts: verglichene Versionen, Testset und Anzahl bestandener Zeilen. Erfordert evals.read. GET /api/v1/prompts/{id}/eval-runs nur lesend
get_prompt_eval_run Ein Lauf mit den Antworten beider Versionen und dem Ergebnis jeder Prüfung. Erfordert evals.read. GET /api/v1/prompts/{id}/eval-runs/{run} nur lesend

Admin-Schlüssel: Workspace

ToolFunktionREST-EndpunktHinweise
list_audit_logs Was im Workspace geändert wurde und von wem. Erfordert audit.read. GET /api/v1/audit-logs nur lesend
list_members Mitglieder und ihre Rollen. Erfordert members.read. GET /api/v1/members nur lesend
get_byok_settings Welche Anbieter Ihre eigenen Schlüssel nutzen und wie sie jeweils eingerichtet sind. Nie die Schlüssel. Erfordert byok.read. GET /api/v1/byok nur lesend
list_export_destinations Wohin Anfragedaten exportiert werden. Nie Zugriffsschlüssel oder Header. Erfordert exports.read. GET /api/v1/export-destinations nur lesend

list_models, get_model und get_pricing stehen jeder Schlüsselart zur Verfügung; bei einem Inferenzschlüssel zeigt list_models nur die Modelle, die dieser Schlüssel aufrufen kann.

Festlegen, was eine Verbindung darf

  • Für den Workspace. Unter Einstellungen > MCP schaltet ein Admin MCP ein oder aus, wählt die Tool-Gruppen, die Verbindungen nutzen dürfen, und legt fest, ob Tools verwendet werden dürfen, die etwas ändern. Auf einer dedizierten Instanz ist MCP aus, bis ein Admin es einschaltet.
  • Für eine einzelne Verbindung. Senden Sie X-MCP-Readonly: true, um alle Tools zu entfernen, die etwas ändern oder Geld ausgeben, und X-MCP-Toolsets: logs,prompts, um nur diese Gruppen zu behalten (usage, logs, prompts, keys, workspace, inference). Clients, die keine Header setzen können, hängen ?readonly=true&toolsets=logs,prompts an die URL an.
  • Das alles schränkt die Tools nur ein. Ein Tool wird aufgelistet, wenn es die Scopes des Schlüssels, die Einstellungen des Workspace und die Einschränkungen der Verbindung zulassen.
  • Jede Änderung wird protokolliert. Was über MCP geändert wird, steht mit dem Schlüssel und dem Namen des Clients im Audit-Log.

So sehen Ergebnisse aus

Jedes Ergebnis enthält einen lesbaren Textblock und dieselben Daten als JSON in structuredContent, sodass Chat-Clients wie Programme damit arbeiten können. Bilder und Audio kommen als Bild- und Audioinhalt zurück, Videos als Links. Tools, die ein Modell ausführen, enden mit einer Belegzeile (Modell, Tokens, Kosten und request_id) , die get_generation später nachschlagen kann.

Berechtigungen und Sicherheit

  • Dieselben Regeln wie bei der REST-API. Jeder Tool-Aufruf wird von dem jeweils genannten REST-Endpunkt mit Ihrem Schlüssel ausgeführt: Authentifizierung, Schlüsselart, IP-Allowlist, Modell-Allowlist, Ausgabenlimit, Rate-Limits und Abrechnung gelten unverändert. MCP fügt keine Berechtigung hinzu und überspringt keine Prüfung.
  • Geringste Rechte je Schlüssel. Ein Inferenzschlüssel kann weder Schlüssel verwalten noch die Abrechnung des Workspace lesen; ein Admin-Schlüssel kann keine Modelle aufrufen und darf nur, was seine Scopes erlauben.
  • Hinweise zur Freigabe. Jedes Tool trägt MCP-Annotationen. Nur lesende Tools sind mit readOnlyHint markiert; Tools, die Geld ausgeben, gelten nicht als nur lesend; update_api_key, delete_api_key und cancel_video sind mit destructiveHint markiert. Clients entscheiden anhand dieser Angaben, wann sie vor der Ausführung bei Ihnen nachfragen.
  • Empfohlener Schlüssel für Agenten: ein eigener Inferenzschlüssel mit täglich zurückgesetztem Ausgabenlimit, einer allowed_models-Liste und einer IP-Allowlist, wenn der Agent auf bekannten Hosts läuft. Sie können ihn einzeln widerrufen, ohne Produktionsschlüssel anzutasten.
  • Secrets und nicht vertrauenswürdige Inhalte. create_api_key gibt den neuen Schlüssel nur einmal zurück: sagen Sie Ihrem Agenten, wo er ihn speichern soll. Behandeln Sie Modellausgaben und Tool-Ergebnisse als nicht vertrauenswürdige Eingaben (Prompt Injection), bevor ein Agent darauf reagiert.

Protokolldetails

PunktDetail
Protokollversionen2026-07-28 (zustandslos, _meta pro Anfrage sowie Header Mcp-Method / Mcp-Name, server/discover) und 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 (initialize-Handshake). Beide unter derselben URL; jede Anfrage wird in der Protokollgeneration beantwortet, die sie spricht.
SessionsKeine. Es wird keine Mcp-Session-Id vergeben, sodass jede Anfrage jede Server-Replica erreichen kann und nach einem erneuten Verbindungsaufbau nichts neu initialisiert werden muss.
Methodeninitialize, ping, tools/list, tools/call; mit 2026-07-28 server/discover statt des Handshakes. GET und DELETE liefern 405; JSON-RPC-Batches werden nicht akzeptiert.
FehlerEin unbekanntes Tool ist ein JSON-RPC-Fehler (-32602). Alles andere (ungültige Argumente, eine Ablehnung durch die API, eine fehlgeschlagene Generierung) ist ein Tool-Ergebnis mit isError: true und einer Meldung, auf die das Modell reagieren kann. Mit 2026-07-28 liefern Probleme im Envelope HTTP 400 mit -32020 (Header stimmen nicht überein) oder -32022 (nicht unterstützte Version, mit Liste der unterstützten).
Cachingtools/list wird in fester Reihenfolge (Prompt-Cache-freundlich) mit ttlMs von 10 Minuten und cacheScope: "private" zurückgegeben, da die Liste von Ihrem Schlüssel abhängt.
Rate-Limit600 MCP-Nachrichten pro Minute und Schlüssel (HTTP 429 mit Retry-After). Jeder Tool-Aufruf zählt zusätzlich gegen die Limits des REST-Endpunkts, den er aufruft.
Lange AufrufeEin Aufruf kann bis zu 30 Minuten laufen (langes Reasoning). Videogenerierung ist asynchron: create_video liefert einen Job, den get_video abfragt.

Fehlerbehebung

SymptomUrsache und Lösung
401, oder der Client meldet, dass eine Authentifizierung nötig istDer Schlüssel fehlt, ist ungültig, abgelaufen oder deaktiviert. Senden Sie ihn als Authorization: Bearer <key> und prüfen Sie, ob die Umgebungsvariable dort gesetzt ist, wo der Client läuft.
Ein erwartetes Tool wird nicht aufgeführtDie Tools hängen von der Schlüsselart (siehe Tabellen oben) und von Vorschaufunktionen ab: Bild- und Video-Tools erscheinen nur für Workspaces, die für diese Vorschauen freigeschaltet sind.
Ein Tool-Ergebnis meldet HTTP 402Das Guthaben des Workspace ist aufgebraucht. Laden Sie es in der Konsole auf; get_key_info zeigt das eigene Limit des Schlüssels.
Ein Tool-Ergebnis meldet HTTP 403 für ein ModellDie allowed_models des Schlüssels oder der Modellzugriff Ihres Workspace schließen es aus. list_models zeigt genau, was der Schlüssel aufrufen kann.
chat_completion liefert keinen Text, finish_reason ist lengthEin Reasoning-Modell hat das gesamte max_tokens-Budget mit Nachdenken verbraucht. Erhöhen Sie max_tokens oder senken Sie reasoning_effort.
HTTP 429Mehr als 600 Nachrichten pro Minute auf einem Schlüssel oder das eigene Limit des REST-Endpunkts. Warten Sie die in Retry-After angegebene Zeit ab.

Demnächst

  • MCP-Gateway: Derselbe Endpunkt bündelt zusätzlich MCP-Server von Drittanbietern (GitHub, Slack, Ihre eigenen) unter Ihrem Schlüssel, mit Berechtigungen pro Tool, serverseitig verwahrten Anmeldedaten und einem gemeinsamen Audit-Log.
  • Fortschritt bei langen Aufrufen, gestreamt, während ein Tool läuft.

Siehe auch: API-Schlüssel · Provisioning-Schlüssel · Billing-API · Chat Completions