Skip to main content
Glama
pipeshub-ai

PipesHub MCP Server

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PIPESHUB_CLIENT_IDNoOAuth app client ID (used with client secret for OAuth authentication)
PIPESHUB_BEARER_TOKENNoJWT bearer token for authentication
PIPESHUB_INSTANCE_URLNoYour PipesHub instance URL, e.g. https://app.pipeshub.com
PIPESHUB_CLIENT_SECRETNoOAuth app client secret (used with client ID for OAuth authentication)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
pipeshub_sourcesA

Discover available chat sources and AI models in one call.

Returns up to three sections:

  • sources — connectors (kind: "connector") and collections (kind: "knowledgeBase"). For pipeshub_search and pipeshub_chat, put a connector id in apps and a collection id in kb. sourcesTruncated: true means the list stopped at 1,000 sources.

  • llmModels — chat / generation models. Each item's modelKey is the value to pass on pipeshub_chat as modelKey. Pick isDefault: true unless the user asks for a specific model.

  • embeddingModels — vector embedding models (only fetched when explicitly requested via include).

Call this once at the start of a session and cache the result — sources and models change infrequently.

pipeshub_chatA

Ask a question, get an answer grounded in the org's indexed data with citations. It reads a few retrieved passages — never a whole document, never a complete list.

Three questions this tool gets WRONG. Check them first:

  • Structure — "what's under this epic?", "which pages are in this space?", "what links to this ticket?", "what's in this folder?" → pipeshub_get_record_content mode:"navigate". Ranking cannot see how records relate.

  • Exhaustive — "how many X?", "list ALL the Y", "every Z" → mode:"navigate", which reports the group's real total. This tool undercounts and will not say so.

  • One named document — summarize it, extract from it, what does it say about X → pipeshub_search for the recordId, then mode:"content".

Everything else about the org's knowledge belongs here: policies, processes, decisions, history, "what do we know about X", and any question spanning several documents.

Internal search (default, chatMode: "internal_search"): the user's documents, files, knowledge base, company policies — anything in their PipesHub-indexed sources (Drive, Box, Confluence, Slack, Gmail, Jira, the org's KB, ...).

Web search (chatMode: "web_search"): current events or public information unlikely to be in the org's knowledge base.

Both are plain-chat modes. Agent chat — pass an agentId from pipeshub_agents — runs against that agent's own prompt, tools and knowledge; quick is its only mode, requires the agentId, and is sent automatically.

  • "What's our policy on Y?" → pipeshub_chat (internal_search)

  • "What's in the news about Z?" → pipeshub_chat (web_search)

  • "Find / locate the file named X" → pipeshub_search (then pipeshub_download_record if the user wants the bytes).

Conversation lifecycle — one tool, both start and continue:

  • First turn: omit conversationId. The server creates a new conversation; capture conversationId from the response.

  • Follow-up turn: pass the conversationId from the previous response. Server-side context is preserved — do NOT replay earlier messages, and filters is ignored on follow-ups (set once at creation).

Only re-omit conversationId (start a fresh conversation) when the user explicitly asks to start over / clear context.

The response contains the AI's answer plus citations. To download a cited document, take citations[*].recordId and call pipeshub_download_record.

pipeshub_searchA

Vector / semantic search across the org's indexed documents.

Use this when the user wants to LOCATE a document — by name, topic, or a phrase to grep for — and to resolve it to a recordId. For open-ended questions across many documents, use pipeshub_chat instead, which does the retrieval internally and grounds the answer in citations.

Typical uses:

  • Resolve a doc name / topic into a recordId for pipeshub_get_record_content — step 1 of any full-document task (summarize, extract, review, "what does the doc say?").

  • Resolve a filename / phrase into a recordId for pipeshub_download_record.

  • Show the user a ranked list of matching files when they ask "find / search for X".

Not for structural questions — what is under this epic, which pages are in this space, what links to this ticket. Ranking by content cannot show how records relate; use pipeshub_get_record_content mode:"navigate".

A ranked sample, never a complete list. Hits are the top-scoring blocks from the best-matching records — not all blocks of any record, and not every record that matches. Never count them to answer "how many" / "all" / "every"; navigate the record group instead, which reports its real total.

By default it searches everything. To search only some sources, pass connector ids in apps and collection ids in kb.

Each hit is one matching passage, best match first: { recordId, recordName, score, snippet, mimeType, webUrl, ... }. One record can appear in several hits. Link a record by its webUrl.

pipeshub_download_recordA

Download the file as stored for one record — not PipesHub's parsed content, metadata header, or summary.

Use this when the user wants the file itself (download, attach, open). Get recordId from a chat citation or a pipeshub_search hit.

Do not use this to read, summarize, or answer "what does this doc say?" regardless of format. That is pipeshub_get_record_content mode:"content". Text formats come back inline; images, audio, and binary as base64.

convertTo accepts only application/pdf; anything else is ignored.

pipeshub_get_record_contentA

Three operations on the org's records. Pick by what you hold:

mode:"lookup" — a URL, issue key (PA-1787), or external ID → its recordId plus the record's metadata mode:"navigate" — a question about structure: what is under X, what links to Y → browses the hierarchy mode:"content" — a recordId, and you need the document's COMPLETE text

mode:"content" (default) — the only way to see a document's complete text. Use it whenever missing part of the document could make the answer wrong: summarize, extract or list ALL of something, check whether or where a doc mentions X, review, or compare named docs. pipeshub_chat cannot do these — it never sees a whole document.

Judge by the user's INTENT, not their keywords: "what's this doc about?", "walk me through the report", "anything in here about Y?" are all full-content tasks. Get the recordId from a pipeshub_search top hit, a chat citation, or mode:"lookup".

Returns one content string: a metadata header (title, source, key fields, pre-generated summary) then the full parsed text. A record with no extractable content returns the literal No record found. Use pipeshub_download_record only for the original file bytes.

mode:"navigate" — browse the hierarchy: RecordGroup (project / space / drive / folder) → Record (epic / story / page / file) → children, with breadcrumbs, related links and record IDs.

Use it when the question depends on structure rather than wording: what is under this epic, which pages sit in this space, what is linked to this ticket, what is in this folder — and every "how many" / "all of" / "every" question. Search ranks by content; only this shows how records relate, and only this gives a count you can trust.

Omit nodeId for a flat listing of everything reachable, most recently updated first — the usual starting point. A URL, an issue key, or a pipeshub_sources id also works and resolves automatically.

Pass depth:2 or depth:3 to see several levels in ONE call — an epic's stories AND their subtasks, a space's pages AND their children — instead of one call per level. Use it whenever the question needs an overview of a hierarchy rather than a single node.

Opening a record also prints that record's own metadata — for a ticket, status, assignee, priority and dates — so a question about one record is often answered by this call alone. It returns no document text; for that, re-call with mode:"content".

Returns Path breadcrumbs, the current node's metadata, a children listing carrying record_id= or node_id= per row plus the group's total (Children 1-50 of 61), Related cross-references, and a Next: line. One page is usually every child, so only pass page:2 when that Next: line says more exist.

mode:"lookup" — turn an external reference into a recordId, the first step whenever the question names one. Returns that record's metadata (for a ticket: status, assignee, priority, dates) plus its recordId, which mode:"navigate" takes to list what is under it and mode:"content" takes to read it.

Handles Jira keys and URLs, Confluence, Drive, Slack permalinks, Linear, Notion, ServiceNow sys_id, SharePoint, Gmail/Outlook, and any connector whose records index a web URL. Resolution searches ALL connectors you can access, regardless of any source filter you used elsewhere.

A miss is a 200 with empty matches and the input echoed in not_found_identifiers — that may mean no-access, not non-existence. Use mode:"navigate" to confirm the record exists before telling the user it does not. If ambiguous is true, pick from matches rather than taking the first.

Navigate and lookup return a rendered text view whose closing Next: line names the exact follow-up call — follow it. When presenting a record, link it using the Web URL from its metadata header (when present).

pipeshub_directoryA

Look up people, groups, and teams in PipesHub. Five actions — pick action. Not for documents or files: that is pipeshub_search.

  • whoami — the caller's id, email, full name. Use before get_user on yourself. Errors if the credential is expired or revoked.

  • list_users — page org users; search matches name or email.

  • get_user — full User for one userId.

  • list_groups — org groups with userCount; search matches name.

  • list_my_teams — teams the caller is on, with canEdit / canDelete / canManageMembers; search matches name.

Omit page/limit for the first page (page 1). No match is an empty users/groups/teams array, not an error. pagination.hasNextPage (teams: hasNext) says whether to request the next page.

pipeshub_agentsA

List the PipesHub agents configured for this org, each with its capabilities.

Agents are specialized assistants (custom system prompt, tools, knowledge scope). To converse with one, take its agentId and pass it to pipeshub_chat's agentId argument.

Each agent is returned as: { agentId, name, description, systemPrompt, startMessage, tags, webSearch, isActive, toolsets, knowledge }.

  • toolsets — what the agent can DO: each { name, tools } where name is the connector (e.g. jira, gmail) and tools are the runnable tool ids (e.g. jira.create_issue, gmail.send_email).

  • knowledge — what the agent can READ: each { name, type } (e.g. Confluence-2 / Confluence).

Route on toolsets/knowledge, not the name — names and descriptions are often generic or misleading. Match the request to the agent whose tools can actually perform it (e.g. "create a Jira ticket" → the agent whose toolset is jira and whose tools include jira.create_issue). If NO agent has a tool for the requested action, say so — don't force an unrelated agent.

The list may be empty (no agents configured). For plain Q&A when no specific agent is needed, use pipeshub_chat WITHOUT agentId and pick a chatMode: internal_search (org's indexed knowledge) or web_search (live web). Use agentId everywhere an agent is referenced.

Prompts

Interactive templates invoked by user choice

NameDescription
pipeshub-assistantLoad PipesHub tool-routing guidance so the assistant picks the correct tool (pipeshub_chat / search / agents / directory) and lists agents with pipeshub_agents when unsure which route fits the query.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct operation: search locates records, chat answers grounded questions, get_record_content reads full text/navigates/looks up, download_record fetches original bytes, and agents/directory/sources handle their own domains. The descriptions explicitly cross-reference and warn against misuse, so an agent can reliably select the right tool.

Naming Consistency3/5

All tools share the pipeshub_ prefix, but the pattern after it is inconsistent: some are verb_noun (download_record, get_record_content), some are bare verbs (search, chat), and some are bare nouns (agents, directory, sources). This makes names individually readable but not predictably derivable.

Tool Count5/5

Seven tools is a well-scoped size for a knowledge retrieval and chat server. Each tool covers a major capability without unnecessary fragmentation, and no tool feels redundant.

Completeness5/5

The surface covers the full read-side workflow: discover sources, search, chat with citations, resolve external references, read full content, navigate hierarchy, download files, and look up agents and people. There are no obvious gaps or dead ends for the server's apparent purpose.

Maintenance

ActivityActive
ResponsivenessUnresponsive