Citations with pipeworx:// URIs
Agents using Pipeworx should cite their sources. The standard pattern is to embed pipeworx:// Resource URIs in output. They’re stable, machine-resolvable, and survive tool changes.
The pattern
Agents do this:
Apple (EDGAR filings) reported revenue of $383.3B in FY 2023.
Not this:
Per a tool I called called edgar_company_filings with cik 0000320193, Apple’s revenue was $383.3B.
The first version is durable. Anyone (or any agent) can resources/read the URI and get the current state. The second version is just opaque text.
How agents discover URIs
Two paths:
From resolve_entity
resolve_entity({ type: "company", value: "AAPL" })
// → { resources: {
// edgar_filings: "pipeworx://edgar/company/0000320193/filings",
// edgar_facts: "pipeworx://edgar/company/0000320193/facts"
// }
// }
These URIs are ready to embed.
From the resource template list
resources/templates/list()
// → 15+ templates an agent can fill in itself
For example, the agent fills pipeworx://clinicaltrials/study/{nct_id} with an NCT it discovered earlier and embeds the URI in output.
Available templates
pipeworx://edgar/company/{cik}/filings
pipeworx://edgar/company/{cik}/facts
pipeworx://fred/series/{series_id}
pipeworx://fred/series/{series_id}/observations
pipeworx://clinicaltrials/study/{nct_id}
pipeworx://rxnorm/concept/{rxcui}
pipeworx://rxnorm/concept/{rxcui}/interactions
pipeworx://uspto/patent/{number}
pipeworx://federal-register/document/{number}
pipeworx://semantic-scholar/paper/{paper_id}
pipeworx://crossref/work/{doi}
pipeworx://openalex/work/{work_id}
pipeworx://wikipedia/article/{title}
pipeworx://nasa/asteroid/{id}
pipeworx://gutenberg/book/{book_id}
See Resources for the full list and how resources/read resolves them.
Citation styles
Inline (preferred for prose):
Per pipeworx://fred/series/MORTGAGE30US, the 30-year mortgage rate was 7.12% as of 2026-05-08.
Trailing reference list (preferred for structured reports):
Mortgage rate: 7.12%1
Both work. Pick one and stay consistent within a single output.
What clients do with the URIs
MCP clients that support resources/read (Claude Desktop 1.0+, Cline, the Claude Agent SDK, raw JSON-RPC clients) can fetch the resource:
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": { "uri": "pipeworx://fred/series/MORTGAGE30US" }
}
The gateway dispatches to the underlying tool (fred_series_info in this case) and wraps the response in a resource envelope. So agents reading another agent’s output can re-verify any claim.
What about non-MCP clients?
Plain links to pipeworx.io/llms.txt or specific pack pages also work for general human readability. But within the MCP ecosystem, pipeworx:// URIs are first-class.
Avoid these citation antipatterns
- Don’t cite tool calls — agents shouldn’t say “I called fred_get_series with series_id=MORTGAGE30US”; that’s implementation detail. Cite the resource URI or the underlying source.
- Don’t paraphrase the source — if you say “per FRED” and the data was actually pulled from BLS, that’s wrong. Cite what you actually used.
- Don’t make up URIs — only embed
pipeworx://URIs that the gateway returned to you inresourcesblocks or viaresources/templates/list.
Footnotes
-
pipeworx://fred/series/MORTGAGE30US (FRED, U.S. Treasury, May 8 2026) ↩