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 from tools/list, repeated for self-correction
  • _meta.alternatives — related tools to try
  • _meta.retry_hint — natural-language fix suggestion
  • _meta.feedback_hint — pre-formatted pipeworx_feedback call when the error looks like a Pipeworx-side bug or data gap

Agents that read _meta recover from most errors without human intervention.

Last reviewed May 10, 2026