// for AI agents & developers

PLUG FLOWDESK
INTO ANY AGENT

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.

get_pricingget_featuresstart_trial

01HOSTED MCP SERVER

The fastest path. Point any MCP-capable assistant (Claude Desktop/Code, Cursor, etc.) at our hosted endpoint:

https://flowdesk-landing-2yz.pages.dev/mcp
claude_desktop_config.json / .mcp.json
{
  "mcpServers": {
    "flowdesk": {
      "type": "http",
      "url": "https://flowdesk-landing-2yz.pages.dev/mcp"
    }
  }
}

// Streamable HTTP transport · stateless · no auth required for these read/provision tools

02OPENAI FUNCTION CALLING

Drop these tool definitions into a Chat Completions / Responses request, then route the model's tool calls to the matching REST endpoint below.

tools (JSON)
[
  { "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"] } } }
]

03LANGCHAIN TOOL (PYTHON)

flowdesk_tools.py
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

04PLAIN REST (curl)

shell
# 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"}'

05MACHINE-READABLE INDEX

// Read endpoints are unauthenticated and unmetered for evaluation. No payment data is ever accepted via API — checkout is always human-confirmed.

06AGENT-TO-AGENT

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.

agent-to-agent.sh
# 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.