/api/v1 the rest of the platform uses: every tool call re-enters the API, carrying your key, so
your organization scoping, scopes, and audit trail all apply exactly as they would over REST.
Use it when you want an agent to drive Flowyte — list agents, create and configure one, add
knowledge, wire skills and guardrails, deploy the chat widget, test, and publish — without writing
REST glue. If you’re calling the API directly instead, see For AI agents.
- Endpoint:
https://mcp.flowyte.com/mcp(https://builder.flowyte.com/mcpalso works as an alias) - Transport: Streamable HTTP + JSON-RPC 2.0 (stateless, plain JSON)
- Protocol: MCP
2025-11-25, negotiated down for older clients - Auth:
Authorization: Bearer flowyte_sk_…
Connect
initialize to negotiate the protocol, then tools/list to discover the tools your
key can call. The server is stateless — there is no session id, and it never pushes changes — so each
request is authorized on its own.
Mint a scoped key in the dashboard’s Developer page (Settings → API keys) and grant only the
scopes you need. Your key alone determines your organization — no other headers. See
Authentication.
Authentication
The gateway accepts only Flowyte-issued bearers — a foreign token is rejected401. Two
credentials work, both resolved by the same resolver /api/v1 uses:
The gateway holds no credentials of its own and never touches the database directly. Because each
tool call re-runs your key’s scopes and organization isolation, a revoked key stops working instantly
and a scope your key lacks fails the same way it would over REST.
Full OAuth (authorization-server metadata, dynamic client registration) is on the roadmap. Today,
API-key auth is the supported path — a compliant MCP posture. OAuth-capable clients can already
discover the seam: an unauthenticated request returns
401 with a
WWW-Authenticate: Bearer resource_metadata="…" header pointing at
/.well-known/oauth-protected-resource.Tools
Tools split into two capability domains, andtools/list is scope-filtered — a key sees only
the tools whose scopes it holds. A config-only key never sees the escalation tools, and a
connector-only key never sees the control tools.
Control tools
Configure and run an agent. Reads are safe; writes re-run your scopes on the underlying endpoint.Escalation tools
Manage where and when an agent hands a conversation to an external operator agent, and — for connector runtimes — work the live handoff. These tools carry their own scope family, so they only appear for a key that holds it, and they’re enabled once you’ve connected an AI Harness.
A connector key holding only
escalations:* sees exactly the runtime tools — never a config or
control tool. See AI Harnesses for the full setup.
The publish confirm gate
publish_agent changes live traffic, so it’s a two-call operation — never a one-shot:
1
Get the report
Call
get_prepublish_report. It compiles the draft, returns what will and won’t change, and mints
a short-lived prepublishToken bound to the exact draft you reviewed. The token expires in 10
minutes and is absent if the draft doesn’t compile.2
Publish with the token
Call
publish_agent with that prepublish_token. It verifies the token and that the draft hasn’t
changed since the report ran, then freezes a new version. Any edit in between (a configure_agent
or configure_skill) invalidates the token — re-run the report and publish with the fresh one.A worked example
The tool-call flow to list, build, and publish an agent. Each call is a JSON-RPCtools/call request
to POST /mcp; the response carries both a structured ApiResponse envelope and the same JSON as text.
Safety
- Curated, task-level tools — not a raw endpoint mirror. Each tool has a closed input schema and is written for an operator agent.
- Writes re-run your scopes. Every call re-enters
/api/v1with your key, so scope enforcement, organization isolation, and rate limits all apply per call. - Publish needs the confirm token from a fresh
get_prepublish_report— you can’t publish blind. - Everything is audited. Each tool call lands in your audit trail exactly as the equivalent REST call would.
Errors
Business, validation, and permission failures come back as atools/call result with
isError: true and actionable text (the REST error body) so the model can self-correct — for example,
a downstream 403 when your key lacks the underlying scope. JSON-RPC error objects are reserved
for protocol faults (unknown tool, malformed request, auth).
Next: build against the REST API directly in For AI agents, or set up an
AI Harness to work escalated conversations.