# FlowForge > FlowForge is self-hosted workflow automation (like n8n or Zapier) that runs on ordinary PHP shared hosting with one cron job. It connects 1,696 apps (8,727 actions, 809 triggers) on a visual canvas, has an AI workflow builder, AI voice agents that answer and make phone calls and book appointments, and an MCP server so AI agents can build and run workflows. This is the FlowForge instance at https://flowforge.mightymango.dev. Its workflows, credentials and runs are private to its team; the endpoints below are for people and agents with an account. ## For AI agents - [MCP server](https://flowforge.mightymango.dev/api/mcp): Streamable HTTP, JSON-RPC 2.0 over POST. Send `Authorization: Bearer `; a signed-in user creates the token under Settings → API & MCP, and the agent gets that user's permissions. - [Full reference](https://flowforge.mightymango.dev/llms-full.txt): how workflows are built (triggers, steps, `{{ steps.. }}` data mapping, config formats), every MCP tool with its parameters, and the complete app catalog. ## MCP tools - `search_apps`: Find integrations by name, purpose or action (e.g. "send sms", "google sheets"). Returns app keys with their action and trigger keys. - `get_app`: Input definitions of an app's actions/triggers. Format "key*:type=default" (* = required, select options in []). Ask only for the ops you need. - `list_workflows`: All workflows: id, name, active, trigger type, step count. - `get_workflow`: Full definition of one workflow (nodes with config, edges). - `save_workflow`: Create (omit id) or replace (give id) a workflow. Send the complete node and edge list; positions are computed. Returns warnings to relay or fix. - `set_workflow_active`: Turn a workflow on (its trigger runs it in the background) or off. - `delete_workflow`: Ask to delete a workflow. The user must confirm in the UI; nothing is deleted until then. - `list_templates`: Ready-made workflows (key, name, apps). Prefer use_template when one fits the request — it is cheaper than building from scratch. - `use_template`: Create a workflow from a template. Returns its id and what the user must fill in; adjust it afterwards with save_workflow if needed. - `list_credentials`: Saved credentials (id, name, app). Optionally filter by app key. - `test_workflow`: Run a workflow now with its test data and get a per-step result. This performs real actions (emails, messages, API writes): only use when the user asked, or the steps are read-only. - `get_execution`: Per-step result of a past run (to explain or fix a failure). - `list_voice_agents`: Voice agents (AI phone agents): id, name, provider, whether they book appointments. Also lists the voice agent templates. Use an agent id in voice.place_call and the voice triggers. - `create_voice_agent`: Create a voice agent that answers or makes phone calls. Start from a template when one fits; otherwise write complete instructions (role, goals, tone, rules). Turn booking on when it schedules appointments, reservations, viewings or calls; bookings appear under Voice agents → Bookings. It starts as a free browser agent the user can talk to; for real calls they connect Vapi or ElevenLabs on its Phone tab. Returns its id and link. - `create_custom_app`: Add an app that isn't in the catalog (search_apps found nothing for the service), or update one you made earlier (same name or key). Describe the service's real, documented API: base URL, auth, and an action per endpoint the workflow needs, with output_fields naming the response fields later steps use. If the service publishes an OpenAPI/Swagger 3 spec, pass openapi_url instead of actions. Returns the app key and its action keys for save_workflow; the user then saves a credential for it. For a single one-off request, http.request is enough. ## Voice agents AI phone agents (an AI receptionist or calling agent) that answer and make calls through Vapi or ElevenLabs, book appointments and keep every call's recording, transcript and summary. Create one with `create_voice_agent` (`list_voice_agents` shows existing agents and templates), then connect it to workflows with the `voice.call_ended` and `voice.booking_created` triggers and the `voice.place_call` action. ## Connect from Claude Code ``` claude mcp add --transport http flowforge https://flowforge.mightymango.dev/api/mcp --header "Authorization: Bearer " ``` ## Optional - [Sign in](https://flowforge.mightymango.dev/login) - [Sitemap](https://flowforge.mightymango.dev/sitemap.xml)