Compound tools
Pack tools usually map 1:1 to an upstream API call. Compound tools bundle multiple underlying calls — across packs — into a single response. They’re how Pipeworx turns “I need 5 things about X” into one round trip.
By convention, compound tools live in packs ending in -intel (housing-intel, fintech-intel, pharma-intel, govcon-intel, trade-intel).
How they work
The pack receives one input, kicks off N parallel upstream calls, and merges the responses into a single structured object:
fintech_company_deep_dive({ ticker: "AAPL" })
Internally:
edgar_ticker_to_cik({ticker})→ CIK- In parallel:
edgar_company_filings({cik})— recent SEC filingsalphavantage_quote({symbol: ticker})— stock quotealphavantage_income_statement({symbol: ticker})— income datacfpb_company_complaints({company: name})— consumer complaints
- Merge results into one response
You wrote one tool call. The agent context grew by one transcript entry. The compound returns 5 sources’ worth of data.
When to use a compound vs. individual tools
Compound when the task is “tell me about this entity” with a fixed set of dimensions. The compound’s structure is opinionated; you get a curated view.
Individual tools when you need fine control — different time windows, alternative concepts, specific HS codes, etc. Compound tools take simple inputs (ticker, drug name, NCT ID); they don’t expose every knob.
Currently available
| Compound tool | Pack | Inputs | Wraps |
|---|---|---|---|
housing_market_snapshot | housing-intel | metro_name | FRED + BLS + Census |
housing_property_report | housing-intel | address | ATTOM + Altos + FEMA |
trade_bilateral_analysis | trade-intel | reporter, partner | Comtrade + Census + Treasury + FRED |
trade_country_profile | trade-intel | country | Comtrade + IMF + Census |
fintech_company_deep_dive | fintech-intel | ticker | EDGAR + AlphaVantage + CFPB |
fintech_bank_health_check | fintech-intel | rssd_id or name | FDIC + CFPB |
pharma_drug_profile | pharma-intel | drug_name | RxNorm + FDA + ClinicalTrials |
pharma_safety_report | pharma-intel | drug_name | FDA FAERS + label data |
govcon_contractor_profile | govcon-intel | contractor name/duns | SAM + USAspending + SBIR |
govcon_opportunity_scan | govcon-intel | keyword | SAM + Federal Register |
Cost model
A compound counts as 1 call against your daily quota, not N. Internally the gateway runs the underlying calls with internal: true so they don’t double-bill against your account, but each upstream API still consumes whatever it would have outside the compound — so the gateway-to-upstream traffic is ~5x a single call.
Building a custom compound
If you keep running the same 3-tool sequence:
- File via
pipeworx_feedback({type: "feature", message: "Compound tool for X"}) - Or chain manually using
Promise.allin your client and pass_meta.cache.fresh_untilthrough
The Pipeworx team adds compounds based on feedback signal — see meta-tools.