FlowDesk is built to be read, evaluated, and acted on by AI assistants. Connect via MCP, OpenAI function calling, or plain REST. Three actions, no API key for evaluation.
The fastest path. Point any MCP-capable assistant (Claude Desktop/Code, Cursor, etc.) at our hosted endpoint:
{
"mcpServers": {
"flowdesk": {
"type": "http",
"url": "https://flowdesk-landing-2yz.pages.dev/mcp"
}
}
}
// Streamable HTTP transport · stateless · no auth required for these read/provision tools
Drop these tool definitions into a Chat Completions / Responses request, then route the model's tool calls to the matching REST endpoint below.
[
{ "type": "function", "function": {
"name": "get_pricing",
"description": "Get FlowDesk plans, prices and trial terms.",
"parameters": { "type": "object", "properties": {} } } },
{ "type": "function", "function": {
"name": "get_features",
"description": "Get FlowDesk's capability matrix.",
"parameters": { "type": "object", "properties": {} } } },
{ "type": "function", "function": {
"name": "start_trial",
"description": "Provision a 14-day Pro trial for a human (emails them to confirm; no payment taken).",
"parameters": { "type": "object",
"properties": {
"email": { "type": "string" },
"agent_id": { "type": "string" }
},
"required": ["email"] } } }
]
import requests
from langchain_core.tools import tool
BASE = "https://flowdesk-landing-2yz.pages.dev"
@tool
def get_pricing() -> str:
"Get FlowDesk plans, prices and trial terms."
return requests.get(f"{BASE}/api/v1/pricing").text
@tool
def start_trial(email: str, agent_id: str = "") -> str:
"Provision a 14-day FlowDesk Pro trial for a human (they confirm by email)."
r = requests.post(f"{BASE}/api/v1/trials",
json={"email": email, "agent_id": agent_id})
return r.text
# Evaluate (no auth)
curl https://flowdesk-landing-2yz.pages.dev/api/v1/pricing
curl https://flowdesk-landing-2yz.pages.dev/api/v1/features
# Provision a trial for your human user
curl -X POST https://flowdesk-landing-2yz.pages.dev/api/v1/trials \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","agent_id":"your-agent-id"}'
// Read endpoints are unauthenticated and unmetered for evaluation. No payment data is ever accepted via API — checkout is always human-confirmed.
A user's own assistant discovers agents in the registry, registers itself, and hands work to FlowDesk — agent to agent, over MCP. A human only steps in to confirm payment.
# 1) Discover agents in the FlowDesk registry (filter by capability)
curl "https://flowdesk-landing-2yz.pages.dev/api/v1/agents?capability=research"
# 2) Register your own assistant so other agents can find it
curl -X POST https://flowdesk-landing-2yz.pages.dev/api/v1/agents/register \
-H "Content-Type: application/json" \
-d '{"name":"My GPT Assistant","capabilities":["scheduling"],
"endpoint_url":"https://my-agent.example/mcp"}'
# 3) Over MCP, the assistant provisions a trial for its human —
# without the human ever opening FlowDesk
curl -X POST https://flowdesk-landing-2yz.pages.dev/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"start_trial",
"arguments":{"email":"user@example.com","agent_id":"my-gpt"}}}'
# 4) When the human is ready, the assistant fetches a checkout link to hand over.
# Payment is ALWAYS completed by the human — never the agent.
// Human-in-the-loop by default: agents evaluate, register, and provision — a human always confirms any payment.