Meta-tools
Most MCP tools call one API. Pipeworx exposes eight gateway-native meta-tools that collapse common multi-call agent patterns into a single call. Each maps to a recurring agent loop (“find the right tool”, “resolve the entity”, “compare two things”, “tell me everything about X”) and pushes that loop’s cost off the agent and into the gateway.
ask_pipeworx
Plain-English routing. Takes a question, returns the answer.
ask_pipeworx({ question: "What is the US trade deficit with China?" })
// → census_trade_balance is called automatically; returns live data
Use when you don’t know which tool to call. Does NL → tool selection → arg fill → execution → result, all in one round trip.
discover_tools
Semantic search over the 1,000-tool catalog.
discover_tools({ query: "find clinical trials for Alzheimer's" })
// → returns top 20 most relevant tools with names + descriptions
Use when ask_pipeworx isn’t enough — when you want the option set, not just one answer.
resolve_entity
Cross-pack identity resolution. One call, all the canonical IDs + ready-to-embed citation URIs.
resolve_entity({ type: "company", value: "AAPL" })
// → { ids: { cik: "0000320193", ticker: "AAPL", company_name: "Apple Inc." },
// resources: {
// edgar_filings: "pipeworx://edgar/company/0000320193/filings",
// edgar_facts: "pipeworx://edgar/company/0000320193/facts" } }
resolve_entity({ type: "drug", value: "ozempic" })
// → { ids: { rxcui: "1991311", product_name: "..." },
// resources: { rxnorm_concept: "pipeworx://rxnorm/concept/1991311", ... } }
Replaces 2–3 sequential lookups (ticker → CIK → URI construction).
compare_entities
Side-by-side for 2–5 entities, fetched in parallel.
compare_entities({ type: "company", values: ["AAPL", "MSFT"] })
// → revenue / net income / cash / long-term debt for each, with periods
compare_entities({ type: "drug", values: ["ozempic", "mounjaro"] })
// → adverse-event reports + FDA approvals + active-trial counts, side by side
Replaces ~8 sequential calls for company comparison, ~6 for drug.
entity_profile
The full picture for one entity in one call. Fans out across every relevant Pipeworx pack in parallel and returns a structured profile with pipeworx:// citation URIs.
entity_profile({ type: "company", value: "AAPL" })
// → {
// ticker: "AAPL", cik: "0000320193", company_name: "Apple Inc.",
// lei: "HWUPKR0MPOU8FGXBT394",
// recent_filings: [{ form: "10-Q", date: "2026-05-01", accession: "...",
// _pipeworx_uri: "pipeworx://edgar/company/0000320193/filings/..." }, ...],
// fundamentals: {
// Revenues: { value: 416_161_000_000, period: "2025-09-27" },
// NetIncomeLoss: { value: 112_010_000_000, period: "2025-09-27" },
// CashAndCashEquivalentsAtCarryingValue: { value: 29_943_000_000, period: "2024-09-28" }
// },
// patents: { count: 12345, recent: [...] },
// recent_news: [...],
// resources: { edgar_filings: "pipeworx://...", gleif_record: "pipeworx://..." },
// sources_used: ["edgar", "sec-xbrl", "gleif", "gdelt"],
// sources_failed: []
// }
Sources fanned out: SEC EDGAR filings, SEC XBRL fundamentals (Revenue/NetIncome/Cash), USPTO patents, GDELT news, GLEIF LEI. Each is independent — partial failures drop the section and surface in sources_failed, never breaking the whole call.
Replaces ~10–15 sequential agent calls. Use as the first call when you’re researching a company; drill down with per-pack tools only for things entity_profile doesn’t return.
recent_changes
“What’s new about this entity since N?” Time-filtered companion to entity_profile.
recent_changes({ type: "company", value: "AAPL", since: "30d" })
// → {
// ticker: "AAPL", cik: "0000320193", company_name: "Apple Inc.",
// since: "30d", since_date: "2026-04-12",
// new_filings: [{ form: "10-Q", date: "2026-05-01", ... }, ...11 items...],
// recent_news: [...],
// recent_patents: [...],
// total_changes: 11,
// sources_used: ["edgar"], sources_failed: []
// }
since accepts both forms:
- ISO date:
"2026-04-01" - Relative shorthand:
"7d","30d","3m","1y"
Returns total_changes so an agent monitoring N companies can decide which to drill into.
Use for monitoring workflows, “brief me on what happened with X” queries, or change-detection loops. Replaces ~6–8 sequential calls.
remember / recall / forget
Persistent agent memory across sessions.
remember({ key: "current_research_target", value: "AAPL Q3 2024" })
// → stores against the agent's identifier
recall({ key: "current_research_target" })
// → "AAPL Q3 2024"
Anonymous sessions: 24h retention. Authenticated: persistent.
pipeworx_feedback
Send feedback to the Pipeworx team. Reviewed daily; signal directly affects roadmap.
pipeworx_feedback({
type: "data_gap", // bug | feature | data_gap | praise | other
message: "Need NIST CVE lookup tool",
context: { tool: "search_patents", pack: "uspto" }
})
Rate-limited to 5 messages per identifier per day. Free; doesn’t count against tool-call quotas.
When error responses suggest meta-tools
Every Pipeworx error carries _meta:
_meta.examples— the same examples fromtools/list, repeated for self-correction_meta.alternatives— related tools to try_meta.retry_hint— natural-language fix suggestion_meta.feedback_hint— pre-formattedpipeworx_feedbackcall when the error looks like a Pipeworx-side bug or data gap
Agents that read _meta recover from most errors without human intervention.