Connect branchly and your agent gets 37 tools, among them create_data_source, create_node, create_prompt. It answers at https://api.branchly.io/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
Connect your agent to branchly: manage content, prompts, actions, learn from analytics and insights
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
create_data_source | Create a new data source for the authenticated application. The 'settings' object must match the given 'type'. Returns the created data source. Creating a data source does not sync any content — use run_data_source to start a sync. |
create_node | Create a new content node in the knowledge base. Label defaults to 'content'. Inputs: title, text, source, label, custom_metadata, score_boost |
create_prompt | Create a new prompt version for the authenticated application. The new prompt is automatically set as active and the previously active prompt of the same type and subtype is deactivated. Use this whenever you want to change prompt text. Inputs: prompt, type, subtype, interface_type |
create_tool | Create a new tool (AI action) for the authenticated application. Tool names must be unique per application, snake_case, max 64 chars. 'tool_config' and 'function_arguments' must match the given 'tool_type'. Returns the created tool. |
get_active_sessions_by_embed | Time series of active sessions broken down by embed type (chat, chat_widget, navigator, search_interface, voice, api). Use this to understand which interfaces are driving usage. Inputs: time_filter |
get_active_sessions_over_time | Time series of active sessions, bucketed by day or week (auto-chosen from the time window). Each row breaks the total down by interaction type (chat / search / navigation / form_submission / voice). Gaps are zero-filled, so the series is sa Inputs: time_filter, embed_types |
get_answer_type_distribution | Distribution of chat answer types (e.g. 'answered', 'no_answer', 'tool_call', 'human_handoff'), ranked by occurrence count. Use this to monitor answer quality: a high 'no_answer' share signals content gaps; a high 'human_handoff' share sign Inputs: time_filter |
get_application | Return the full configuration of the authenticated application. |
get_sentiment_distribution | Sentiment distribution of chat answers as counts of 'positive', 'negative', and 'neutral'. Optionally restrict to specific answer types. Use this as a quick quality signal — a rising 'negative' share usually warrants drilling into individua Inputs: time_filter, answer_types |
get_top_cited_sources | Knowledge-base nodes most frequently cited in chat answers, ranked by citation count. Each row carries the node UUID (vertex_id), its title, optional source URL, and citation_count. Use this to understand which knowledge is actually load-be Inputs: time_filter, embed_types, limit |
get_top_clicked_urls | URLs users actually clicked from inside the embed (search results, citation links, follow-ups, etc.), ranked by click count. Optionally filter by click event type. Use this to see what users find useful enough to click through to. Inputs: time_filter, event_types, limit |
get_top_devices | Top device categories (e.g. 'desktop', 'mobile', 'tablet') across all request types, ranked by occurrence count. Use this to understand the device mix of real users interacting with the embed. Inputs: time_filter, limit |
get_top_geographies | Top (country, region) combinations across all request types, ranked by occurrence count. Country is an ISO country code; region may be null when unavailable. Use this to understand geographic distribution of users. Inputs: time_filter, limit |
get_top_interaction_sources | Page URLs the user was ON when they interacted with the embed (chat, search, navigation, form submission), ranked by occurrence count. Differs from get_top_clicked_urls: this is the ORIGIN page, not the destination. Use this to find which p Inputs: time_filter, limit |
get_top_languages | Top detected natural languages of user CHAT questions, ranked by occurrence count. Differs from get_top_locales: locale reflects the embed/browser setting, language is detected from the actual query text. Use both to spot mismatches (e.g. G Inputs: time_filter, limit |
get_top_locales | Top locales (BCP-47 style, e.g. 'de_DE', 'en_US') across chat, search, and navigation requests, ranked by occurrence count. Use this to understand which languages/regions are being served and where content gaps may exist. Inputs: time_filter, limit |
get_top_searches | Top user search queries (normalized: lowercased, trimmed), ranked by occurrence count. Use this to discover dominant user intents and content gaps; pair with read_sessions(search_query=...) to inspect specific sessions. Inputs: time_filter, limit |
get_top_tags | Top tags attached to chat answers (auto-derived classifications), ranked by occurrence count. Optionally restrict to specific answer types. Use this for a quick topical breakdown of chat traffic. Inputs: time_filter, answer_types, limit |
get_trending_classifications | Time series of trending classifications (topics OR intents inferred from chat content), one series per classification id. Each series item carries a period timestamp and count. Use this to see how topical or intent demand shifts over time. Inputs: classification_type, time_filter |
list_data_sources | List data sources for the authenticated application. Optionally filter by data source type(s). Returns paginated results ordered by last update. Inputs: page, limit, data_source_types |
list_nodes | List nodes in the knowledge base. Optionally filter by vertex label(s), data source type(s), or data source IDs. Optionally sort by updated_at ('asc' or 'desc'). Provide 'query' and 'locale' to perform a full-text search across node content Inputs: page, limit, labels, data_source_types, data_source_ids, sort_parameters |
list_prompts | List prompts for the authenticated application. Optionally filter by type, subtype, or active status. Returns paginated results ordered by active status then last update. Inputs: page, limit, prompt_type, subtype, is_active, interface_type |
list_tools | List tools configured for the authenticated application. Optionally filter by active status. Returns all matching tools. Inputs: active |
read_chat_request_documents | Read the full document chunks retrieved for a single chat request (QA or SA). Returns chunk_id, vertex_id, title, full text, score, source, data source type, page metadata, and whether the chunk was cited in the final answer. Use this after Inputs: chat_request_id |
read_chat_request_tool_calls | Read the full tool calls executed for a single chat request. Returns tool_call_id, tool_id, tool_name, tool_type, full arguments (JSON), and full content/response (JSON). Use this to inspect what the assistant invoked and how the tool respo Inputs: chat_request_id |
read_data_source_runs | List data source runs for the authenticated application, latest first. Optionally filter by data source ID or run status. Returns the latest runs (default 5) and the total matching count. Use this to track the progress of a run triggered vi Inputs: data_source_id, status, limit |
read_node | Read a node by its ID. Returns full node details. Inputs: node_id |
read_search_request_results | Read the full search results returned for a single instant-search request. Returns chunk_id, vertex_id, title, full text, and relevance score. Use this to inspect the exact results a user saw for their search query. Ordered by score descend Inputs: search_request_id |
read_session_detail | Read a single session with its full history in token-dense form. Returns all interactions (chat, navigation, search, form, voice). Document chunks and tool calls are returned as references (IDs + titles) - use read_node(vertex_id) or read_t Inputs: session_id |
read_sessions | List sessions for application. Filter by interaction types (chat, search, navigation, form_submission, voice), embed types, answer types, tool IDs, or a full-text search query. Each session includes its full history, but document chunks and Inputs: page, limit, interactions, embed_types, answer_types, tool_ids |
read_tool | Read a tool by its ID. Returns full tool details. Inputs: tool_id |
run_data_source | Trigger an asynchronous run (sync/crawl) of a data source by its ID. The run is queued as a background job. Returns the accepted status. Track progress with read_data_source_runs. Inputs: data_source_id |
update_chat_request_analytics | Update analytics fields on a chat request: summary, tags, answer_type, sentiment, classification_topic_id, or classification_intent_id. Only provided fields are updated. Use this to annotate or reclassify chat interactions after the fact. Inputs: chat_request_id, summary, tags, answer_type, sentiment, classification_topic_id |
update_data_source | Update a data source by its ID. Only provided fields will be updated (partial update). Returns the updated data source. |
update_node | Update a content node by its ID. Only provided fields are updated. Title and text are locale dicts (e.g. {"de": "Titel"}) — provided keys are merged, others preserved. custom_metadata keys are likewise merged into the existing metadata. Inputs: node_id, title, text, source, custom_metadata, score_boost |
update_prompt | Activate or deactivate a prompt by its ID. Use is_active=true to restore a previous prompt version — the currently active prompt of the same type and subtype is deactivated automatically. To change prompt text, use create_prompt instead. Inputs: prompt_id, is_active |
update_tool | Update an existing tool by its ID. Fetches the current tool and applies partial updates to name, description, or active status. |
Every block below points at https://api.branchly.io/mcp. Pick your client and copy.
claude mcp add --transport http branchly https://api.branchly.io/mcp
{
"mcpServers": {
"branchly": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.branchly.io/mcp"]
}
}
}{
"mcpServers": {
"branchly": {
"url": "https://api.branchly.io/mcp"
}
}
}{
"servers": {
"branchly": {
"type": "http",
"url": "https://api.branchly.io/mcp"
}
}
}{
"context_servers": {
"branchly": {
"url": "https://api.branchly.io/mcp"
}
}
}{
"mcpServers": {
"branchly": {
"serverUrl": "https://api.branchly.io/mcp"
}
}
}{
"mcpServers": {
"branchly": {
"url": "https://api.branchly.io/mcp"
}
}
}name: branchly
version: 0.0.1
schema: v1
mcpServers:
- name: branchly
type: streamable-http
url: https://api.branchly.io/mcp{
"mcpServers": {
"branchly": {
"httpUrl": "https://api.branchly.io/mcp"
}
}
}{
"mcpServers": {
"branchly": {
"type": "http",
"url": "https://api.branchly.io/mcp"
}
}
}{
"mcpServers": {
"branchly": {
"url": "https://api.branchly.io/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.branchly.io%2Fmcp&type=streamable_http&id=branchly&name=branchly
It answered our last check on 19 October 2026 in 147 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by branchly.io and served from api.branchly.io, the vendor's own domain: https://api.branchly.io/mcp.
37, as returned by the server's own tools/list on 12 September 2026: create_data_source, create_node, create_prompt, create_tool, get_active_sessions_by_embed, get_active_sessions_over_time, get_answer_type_distribution, get_application, and 29 more.
It answered our last check on 19 October 2026 in 147 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.branchly.io/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.branchly. Endpoint host: api.branchly.io. ARD identifier: urn:air:io.branchly:mcp:branchly.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.