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 in resources blocks or via resources/templates/list.

Footnotes

  1. pipeworx://fred/series/MORTGAGE30US (FRED, U.S. Treasury, May 8 2026)

Last reviewed May 8, 2026