Resources

The MCP spec has three nouns: Tools (do things), Resources (read citable entities), Prompts (workflow templates). Most MCP servers ship Tools and stop.

Pipeworx implements Resources as well — every meaningful entity in the catalog is addressable by a stable pipeworx:// URI. Agents can:

  • Cite entities in their output by URI (citations stay valid across sessions and tool changes)
  • Re-fetch content via resources/read when needed
  • Embed URIs in remember/recall memory or pass them to other agents
  • Hand off state to humans — a URI is shareable and auditable

How it works

A Pipeworx client calls resources/templates/list to discover available URI patterns:

// Returns 15+ templates
[
  { uriTemplate: "pipeworx://edgar/company/{cik}/filings", ... },
  { uriTemplate: "pipeworx://edgar/company/{cik}/facts",   ... },
  { uriTemplate: "pipeworx://clinicaltrials/study/{nct_id}", ... },
  { uriTemplate: "pipeworx://fred/series/{series_id}",     ... },
  { uriTemplate: "pipeworx://rxnorm/concept/{rxcui}",      ... },
  { uriTemplate: "pipeworx://uspto/patent/{number}",       ... },
  { uriTemplate: "pipeworx://semantic-scholar/paper/{paper_id}", ... },
  // ...
]

The agent then constructs a concrete URI and calls resources/read:

resources/read({ uri: "pipeworx://clinicaltrials/study/NCT04280705" })
// → { contents: [{ uri, mimeType: "application/json", text: "<full study record>" }] }

The gateway parses the URI, dispatches to the underlying tool (ct_get_study in this case), and wraps the response in resource shape.

Why URIs and not tool calls?

The same data is reachable via direct tool call (ct_get_study({nct_id: "NCT04280705"})). The URI form has three properties tools don’t:

  1. Stable across sessions. A URI in your output can be re-fetched by anyone, anytime. A tool call needs the agent’s context to make sense.
  2. Embeddable in text. Agents naturally write “per pipeworx://edgar/company/0000320193/filings — humans and other agents follow it.
  3. Portable across servers. Other MCP servers that support Resources can reference Pipeworx URIs in their own outputs. Agents bridge them automatically.

Pattern: resolve_entity + URI embedding

The resolve_entity meta-tool returns a resources block alongside IDs:

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"
//     }
//   }

The agent’s natural output then becomes:

Apple (filings, XBRL facts) reported revenue of $383.3B in FY 2023.

Stable, citable, machine-and-human-readable.

Templates currently exposed

URISourceFree?
pipeworx://fred/series/{series_id}FREDBYO key
pipeworx://fred/series/{series_id}/observationsFREDBYO key
pipeworx://clinicaltrials/study/{nct_id}ClinicalTrials.govYes
pipeworx://rxnorm/concept/{rxcui}RxNormYes
pipeworx://rxnorm/concept/{rxcui}/interactionsRxNormYes
pipeworx://uspto/patent/{number}USPTOYes
pipeworx://edgar/company/{ticker_or_cik}/filingsSEC EDGARYes
pipeworx://edgar/company/{cik}/factsSEC EDGARYes
pipeworx://federal-register/document/{number}Federal RegisterYes
pipeworx://semantic-scholar/paper/{paper_id}Semantic ScholarYes
pipeworx://crossref/work/{doi}CrossrefYes
pipeworx://openalex/work/{work_id}OpenAlexYes
pipeworx://wikipedia/article/{title}WikipediaYes
pipeworx://nasa/asteroid/{id}NASAYes
pipeworx://gutenberg/book/{book_id}Project GutenbergYes

More templates added as the catalog grows. Missing one? File via pipeworx_feedback.

Last reviewed May 8, 2026