Skip to content
FlowCastle logo

FlowCastle MCP server

Which MCP servers are FlowCastle's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-23

← Back to FlowCastle

Whose server it is
  • Registry nameai.flowcastle/flowcastleverified in the MCP registry

The registry name sits under flowcastle.ai. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-23
  • Stateanswerschecked 2026-10-23
  • Tools60
  • Server calls itselftelegram-flow-builder-mcp
  • Server version0.1.0
  • Protocol version2025-06-18

On 2026-10-23 the server answered initialize and tools/list without a sign-in. First answer in 534 ms.

Should an agent connect itNot proven either way yet
  • Whether its tools do the product's job has not been judged yet.
  • Checked on 4 of the 7 days it takes to judge reliability.

Once connected

  • create_application, update_application, set_watched_groups, send_message, send_flow_to_contacts change data without a sign-in: anyone with the address can call them.
  • Its definitions take about 29344 tokens of context: enable only the tools a task needs.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 4, the first on 2026-10-23
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 4 so far
  • Use2 GitHub stars
  • Answeredmeasuring4 of the 7 daily checks it takes to print a share
  • Median first answer562 ms
  • Space in an agent's context≈ 29,344 tokensthe definitions of all its tools (60), which an agent carries on every turn
  • Tool definitionsA · 99 of 100
  • Typed results0 of 60 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 3 of 60

What an agent can do with it

  • not sure · Accept orders and payments inside Telegram chats
  • not sure · Schedule follow-up reminders and broadcast messages automatically
  • not sure · Pass conversations to a human agent when needed

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: create_application, update_application, set_watched_groups, send_message, send_flow_to_contacts

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers60 tools · read 2026-10-23
  • list_applications

    List the applications this API key can access, with the caller role and the permissions it grants. Start here when using a personal API key (usr_...): every other tool needs an explicit applicationId, which this tool supplies. Read-only…

  • create_application

    Create a new application (workspace) owned by the caller. Requires a personal API key (usr_...) — application-scoped keys cannot create applications. Seeds default flows unless skipDefaultFlows is true. Creates persistent state and is NOT…

  • update_application

    Update application-level settings (name, active state, default language, language for everyone else, incoming-message behavior). Requires the manage_settings permission in that application. Only the fields you pass are changed; omitted…

  • import_website_knowledge

    Crawl a website into a knowledge base so an AI_TOOL_ROUTER can answer from it. Creates a new base (named after the host) unless knowledgeBaseId is given. Honours robots.txt, skips junk and duplicate pages, keeps blog posts by default, and…

  • get_website_import

    Status of a website import started by import_website_knowledge or an import_website_into_knowledge_base action: stage, progress, counters, warnings and the pages that were not imported. Read-only. Poll until status is DONE…

  • list_watched_groups

    List the group/channel chats a telegram_mtproto userbot monitors. Read-only. The watched list is the single source of truth for which chats the userbot processes: messages from unlisted group/channel chats are dropped (fail closed) and…

  • list_telegram_operations

    Discover supported Telegram MTProto account operations, input schemas, permissions and limits. Requires manage_broadcasts. All current operations read public data; this catalog does not connect to Telegram. botId may be omitted when the…

  • execute_telegram_operation

    Submit one supported read operation on the connected telegram_mtproto account. Call list_telegram_operations for the input schema. Returns a requestId; poll get_telegram_operation until completed, error or timed_out. Requires…

  • get_telegram_operation

    Read a Telegram operation status and result using its requestId and the same applicationId/botId used for submission. Requires manage_broadcasts for the owning application. Poll every two seconds. Results expire one hour after their last…

  • set_watched_groups

    Replace a telegram_mtproto userbot's watched-groups list — the chats it monitors. Requires the manage_settings permission. SET semantics: send the COMPLETE desired list every time (call list_watched_groups first and include existing…

  • sync_dialog_contacts

    Import a telegram_mtproto userbot's existing chats as contacts — DM partners, groups, and channels — so everything the account already talks to becomes a contact send_message can target without waiting for each chat to message first…

  • get_workspace_summary

    Return a compact application, flow, sequence, operation, and bot summary — the cheapest way to orient in a workspace. Read-only, no side effects. Deliberately omits variables and full flow graphs: use get_variable_context for variables…

  • get_variable_context

    Search variable definitions by scope and keyword, or read one variable by id. Read-only. Returns { variables, total, returned, truncated } — compare returned against total to detect a cut-off result set and re-call with a higher limit…

  • get_application_context

    Return the full application-level automation context in one read-only call: every flow (with folders), connected bots, variables, sequences, and operations. This is the broad orientation call — prefer get_workspace_summary when you only…

  • get_module_catalog

    Return a compact index of both installed and available marketplace modules, with each module's key, versions, description, actions, and triggers. Read-only. Start here when you need a capability the core action kinds do not cover; then…

  • get_module_details

    Return everything needed to use one module: action input fields and their types, trigger configuration, manual setup fields (credentials an operator must fill in the dashboard), and references to already-installed actions. Read-only. Call…

  • install_module

    Install an exact marketplace module version into an application and create any missing installed-template actions. Requires the manage_automation permission. Call get_module_catalog first to select the module and version, then…

  • search_flows

    Find every flow and block whose contents contain a keyword. Read-only. Searches message text and its translations, button labels and URLs, action names and configs, action input/output field paths and values, condition operands, trigger…

  • get_flow_context

    Return one flow's graph topology: its blocks in reading order from the start block, a short summary per block, and where each block and each menu button leads (links[].to, menu.buttons[].to). Read-only. Deliberately omits block data…

  • get_block_details

    Return the complete contents of one block: block data, action configs, HTTP request bodies, custom-code files, triggers, menu payloads, and media paths. Read-only. This is the heaviest read in the API — call get_flow_context first to find…

  • get_action_schema

    Read-only, needs no API key. The action-authoring contract apply_actions batches are validated against. With NO arguments, returns an INDEX of block types, actions, action kinds and topics with descriptions and sizes. Then request only…

  • get_design_guidelines

    Return the flow-design rules that validation does NOT enforce: when to split a branch into its own flow, how navigation and menus must be wired, and worked examples. Read-only, needs no API key. Called with NO arguments it returns a…

  • get_funnel_analytics

    Return the measured conversion funnels of the workspace's ENTRY flows over the last 30 days, busiest first: how many new contacts entered, which blocks they reached, the share who stop at each block, which buttons lead nowhere (pressed…

  • get_flow_analytics

    Measure how NAMED flows are actually used over the last 30 days: how many contacts entered each one, where inside it they stop (per block, with the stop RATE), how many were answered by a human agent afterwards, and how many hit an error…

  • get_survey_results

    Read what customers ANSWERED in this workspace's surveys. A survey is any flow marked isSurvey: its choice questions record which option each contact tapped, and its free-text questions store the reply the contact typed. Called with NO…

  • search_flow_examples

    Search the library of reusable flow examples covering common business cases (lead capture, onboarding, payments, reminders). Read-only, needs no API key. Returns summaries to choose by — id, title, summary, useWhen, tags, requiredModules…

  • get_flow_example

    Return one reusable flow example by id, optionally with a complete action batch you can adapt and pass to apply_actions. Read-only, needs no API key. Call search_flow_examples first to find the id.

  • validate_actions

    Dry-run validation of a proposed batch of flow-builder actions. Mutates nothing and is safe to repeat. OPTIONAL: apply_actions runs this exact validation itself and applies nothing when invalid, so calling validate_actions first is…

  • apply_actions

    Validate and apply a batch of flow-builder actions — the single write path for editing flows, blocks, variables, broadcasts, sequences, and folders. Call this directly; a separate validate_actions call beforehand is unnecessary…

  • deploy_application

    Publish the workspace to its bots — the API equivalent of the dashboard's Deploy button. This is the step that makes edits live. apply_actions writes to the DRAFT graph. Until this runs the connected bots keep serving the previously…

  • run_flow_autotest

    Runs deterministic behavioural tests against flows that are ALREADY applied (compiles them to an AST and simulates a user). Call after apply_actions to verify a build; read `summary` and the failed checks, patch with apply_actions…

  • send_message

    Send a message to ONE contact right now, outside any flow. For reaching many contacts use a broadcast instead. Target the contact with contactId (globally unique — preferred), or with platformId (the platform-side id, e.g. the Telegram…

  • send_flow_to_contacts

    Run an EXISTING interactive flow for each listed contact right now, outside any trigger — as if each of them had just triggered it. Use it when the WHOLE message is the flow — its first block's text, media and buttons are what the…

  • read_messages

    Read the message transcript: what users sent the bot and what the bot sent back, newest first. Source is the runtime's own message ledger, written by the bot as it handled each turn — inbound messages are recorded before any routing…

  • list_contacts

    List and search contacts in the application, paginated, newest first. Read-only. Filters combine as AND; search matches name, username, email, phone, and platformId; `tags` / `tagIds` keep only contacts carrying at least one of those tags…

  • list_bot_chats

    List the groups and channels the application's bots were added to, newest first: title, kind, the numeric chatId a flow uses to address the chat, when the bot was added, and the bot's status and rights there (is it an administrator, can…

  • list_contact_tags

    List the contact tags in use in the application (or one bot) with how many contacts carry each, most-used first. Read-only. This is the attribution view: UTM tags ("utm: <slug>", set by ?start=utm--<slug> deep links, one per ad or…

  • get_contact

    Return one contact's full profile plus every contact-variable value stored for them. Read-only. Values may hold personal data; variables of type SECRET are always redacted. Call list_contacts first to find the contactId.

  • get_contact_activity

    Return one contact's engagement history: goals they achieved and buttons they clicked, newest first, plus all-time goal totals. Read-only. This is the per-contact companion to get_broadcast_analytics (which is aggregate). Clicks are…

  • list_event_contacts

    The reverse lookup: which contacts triggered one analytics event — achieved a goal (kind GOAL + goalKey), clicked a button (BUTTON_CLICK + blockId, optionally buttonId/buttonIndex), were sent a block (BLOCK_SENT + blockId), or received a…

  • create_contact

    Create a contact manually — for imports or externally-sourced audiences; contacts who message a bot are created automatically. Requires the manage_broadcasts permission. platformId must be unique within the bot (duplicate fails with 409)…

  • update_contact

    Update a contact's profile fields and/or contact-variable values. Requires the manage_broadcasts permission. Only the fields you pass are changed — omitted fields keep their current value — so the call is idempotent. The variables map…

  • list_broadcasts

    List broadcasts in the application with status, schedule, and delivery counts. Read-only. Filters combine as AND. Note that delivery counts report messages attempted, not confirmed deliveries. recipientCount is the number of delivery rows…

  • get_broadcast_details

    Return full details for a single broadcast: status, schedule, recurrence rule, linked flow, and delivery breakdown by status. recipientCount is the number of delivery rows once the broadcast has started sending. Before that it is a live…

  • get_broadcast_analytics

    Return engagement analytics for a broadcast: delivery breakdown by status plus per-message-block sent and clicked counts for its flow, over an optional date window. Read-only. Sent counts reflect messages attempted, not confirmed…

  • list_releases

    List the application's releases, newest first. A release is a frozen copy of everything the editor held when it was published (flows, steps, menus, actions, variables), stored with the rows' own ids. Each entry has its number, when and…

  • restore_release

    Put an earlier release back into the editor: every flow, step, menu, action and variable returns exactly as it was, under the same ids, so running conversations, scheduled steps and buttons users already received keep working. Nothing is…

  • list_pulse_items

    List Pulse items — the workspace attention queue. Two kinds: `attention` is an observed problem a detector found (failing flows, a failed broadcast, an unsubscribe spike), `recommendation` is a proposed improvement. Read-only. Defaults to…

  • get_pulse_item

    Return one Pulse item in full: the measured evidence, the ids of the conversations and execution-log rows behind it, and the change Apply would build if the item carries one. Read-only. Call list_pulse_items first to get the itemId. Note…

  • update_pulse_item

    Change one Pulse item's state. Every action changes the queue for the WHOLE workspace — an item belongs to the workspace, not to whoever called the tool, so dismissing a recommendation hides it from every member and records who decided…

  • list_follow_up_tasks

    List follow-up tasks — reminders for a person to get back to a contact. Read-only, ordered by due time so overdue work comes first. A follow-up sends nothing by itself. Scopes: `mine` is the open work assigned to the key's owner and needs…

  • create_follow_up_task

    Create a follow-up reminder for a person to get back to a contact. Creates persistent state and is NOT idempotent: calling it twice creates two reminders. Nothing is sent when it comes due — it is a to-do, not an automation; use…

  • update_follow_up_task

    Close, reopen, snooze, or reschedule one follow-up task. Completing it records that a person handled the reminder — it does not message the contact. Snoozing moves the due time too, so the task reappears when the snooze ends.

  • query_flow_logs

    Read the bot execution log (flow_execution_log) — the record of what the runtime actually did, and the only place that separates "the action ran" from "the action produced output". Read-only; requires the view_logs permission. Two modes…

  • get_tribute_setup

    Read the Tribute one-time payment setup of an application: whether a Tribute account is connected, the notification link and whether the owner confirmed it, the products set up here, the number contact variables a purchase can add to, and…

  • list_tribute_account_products

    List the digital products in the owner's connected Tribute account, read live from Tribute, 100 per page, newest first. Read-only; requires manage_automation. Each product says whether it can be set up (only an approved digital product…

  • save_tribute_product

    Set up a product of the connected Tribute account for sale in this application, or change one already set up (one saved product per Tribute product, so calling it again updates). Requires manage_automation. Returns the saved product; its…

  • update_tribute_connection

    Connect a Tribute account to the application or change the connection. Requires manage_settings. Pass at least one field; they are applied in the order apiKey, notificationsConfirmed, paused. Returns the same view as get_tribute_setup…

  • list_tribute_purchases

    List the Tribute payments the application received, newest first, 50 per call. Read-only; requires read_payments. Each row has the payment state, the delivery state and, when delivery needs a person, the reason. An empty list means no…

  • retry_tribute_delivery

    Queue one Tribute payment for delivery again, for a payment that was paid but not delivered. Requires recover_payments. It queues, it does not deliver in the call: read list_tribute_purchases afterwards. Refused with…

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "flowcastle": {
      "type": "http",
      "url": "https://api.flowcastle.ai/api/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http flowcastle https://api.flowcastle.ai/api/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://api.flowcastle.ai/api/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.