DataGrout.ai Logo
Tool Suite ยท Deliverables

Ephemeral today.
Permanent when it matters.

Deliverables are permanent records of agent work products โ€” charts, exports, reports, data, and content. Register an ephemeral cache_ref to lock it in forever. Search your entire history semantically. Retrieve any result by ref, weeks later.

3 tools

list ยท get ยท register

0 credits

all three tools are free

Semantic search

natural language over all history

Free forever ยท No credit card required

Three Tools. One Permanent Archive.

deliverables.list finds the work. deliverables.get retrieves it. deliverables.register preserves it.

deliverables.list

Search & List Work Products

The discovery surface for your entire deliverables history. When a query is provided, uses semantic search via pgvector embeddings โ€” describe what you're looking for in natural language rather than exact keywords. Falls back to standard text filtering when embeddings are unavailable. Filter by type, agent, or paginate through the full archive.

Best for: Surfacing prior work products without knowing exact titles or refs โ€” natural language queries like 'revenue analysis from last quarter' just work

Parameters & Capabilities

  • query: semantic search โ€” describe in natural language, pgvector finds the match
  • type filter: 'chart', 'export', 'data', 'content', 'report'
  • agent_id: filter by the agent that produced the deliverable
  • limit / offset: paginate up to 100 results at a time
  • search_mode in response: tells you whether semantic or text filtering was used
  • Returns ref, type, title, summary, created_at, agent_name, has_cache_ref per result
๐Ÿ’ณ 0 credits โ€” database/embedding query only
View deliverables.list docs โ†’

Ephemeral โ†’ Deliverable lifecycle

tool produces cache_refโ†’ephemerals.list / inspectโ†’deliverables.register(cache_ref)โ†’persists forever โ†’ del_*

How Teams Use Deliverables

From chart preservation to compliance records โ€” Deliverables give agent outputs a permanent address so nothing important vanishes with a cache TTL.

Preserving Chart Outputs for Reuse

prism.chart auto-captures chart deliverables when it renders. But for any data pipeline โ€” Frame transformations, Prism refract results, Math model outputs โ€” call deliverables.register with the cache_ref to lock the result in permanently. Future agents or users can retrieve the exact chart by ref without rerunning the computation.

deliverables.register(cache_ref, type='chart')deliverables.get(ref)

Semantic Audit Trails for AI Workflows

Register every significant workflow output as a deliverable with a descriptive summary and tags. Weeks later, query deliverables.list with natural language โ€” 'Q1 revenue report for EMEA region' โ€” and pgvector finds the right result even if the exact title differs. This turns your agent history into a searchable institutional record.

deliverables.register(summary, tags)deliverables.list(query='...')

Long-Running Report Generation

For multi-step agentic workflows that produce reports via prism.render or prism.export, register the final output before the cache expires. The deliverable ref becomes a stable, shareable pointer to the completed report โ€” retrievable at any time via deliverables.get, independently of whether the session or cache is still live.

prism.render โ†’ cache_refdeliverables.register(cache_ref, type='report')

Evaluation Artifacts for Agent Experiments

When running A/B experiments across agent configurations, register each run's output as a deliverable tagged with the variant name, model, and run date. Use flux.feedback with the ref field pointing to the deliverable to link qualitative evaluations directly to the preserved artifact โ€” both are then findable and comparable.

deliverables.register(tags=['variant-a', 'gpt-4o'])flux.feedback(ref=del_*)

Cross-Agent Knowledge Sharing

One agent produces a curated dataset or analysis; another agent retrieves it later without rerunning the work. Register the result with a rich summary and tags. Downstream agents call deliverables.list with a semantic query to find relevant prior work, then deliverables.get to access the full payload โ€” enabling a shared, persistent knowledge fabric across your agent fleet.

deliverables.list(query='...')deliverables.get(ref)

Compliance-Ready Output Records

For regulated workflows, every significant AI-produced output needs to be preserved with provenance. Deliverables store the producing agent, run_id, tool name, source type, and encrypted payload. Register key outputs from security assessments, risk analyses, or compliance reports โ€” the full chain of custody is built in.

deliverables.register(type='report', payload)deliverables.get โ†’ agent, run_id, metadata
Power-Up Combos

Permanent Records, Richer Context

Deliverables become more useful when they're linked to the tools that produced them, the evaluations that reviewed them, and the skills that invoked them.

Deliverables+Ephemerals

Selective Permanence

Ephemerals give you fast, cheap cached results with a TTL. Deliverables give you permanent storage. The pattern: run your workflow freely using cache_refs, inspect results with ephemerals.inspect, then selectively register only the outputs worth keeping with deliverables.register. Pay for permanence only when it matters.

ephemerals.inspect(cache_ref) โ†’ review โ†’ deliverables.register(cache_ref, title='...', type='data')

โœฆ Cheap experimentation, selective permanence โ€” no storage cost for throwaway results

Deliverables+Prism

Auto-Captured Charts + Manual Reports

prism.chart auto-captures rendered charts as deliverables. For reports and exports produced by prism.render and prism.export, register them explicitly with deliverables.register and a rich summary. The combination means your entire Prism output history โ€” charts, reports, exports โ€” is searchable and retrievable forever.

prism.render(goal='Q1 summary') โ†’ cache_ref โ†’ deliverables.register(cache_ref, type='report', summary='...')

โœฆ Full Prism output archive with semantic search over every report ever generated

Deliverables+Flux

Evaluations Anchored to Artifacts

When calling flux.feedback, pass the deliverable ref in the ref field. This links the qualitative evaluation directly to the preserved artifact โ€” the rating lives alongside the output, not in a disconnected feedback record. Both are then searchable, comparable, and traceable to the same agent run.

deliverables.register(cache_ref) โ†’ del_ref โ†’ flux.feedback(ref=del_ref, nps_score=8, trust_level=5)

โœฆ Feedback with provenance โ€” know exactly what was evaluated, not just when

Deliverables+Toolsmith

Skill Output Libraries

After invoking a Toolsmith skill that produces significant output, register the result as a deliverable tagged with the skill_id. Over time, this builds a searchable library of everything each skill has ever produced โ€” enabling cross-run comparison, regression detection, and institutional memory for agentic capabilities.

toolsmith.invoke(skill_id) โ†’ result.cache_ref โ†’ deliverables.register(tags=['skill_id:abc123', 'run:42'])

โœฆ A skill output library โ€” every result ever produced, searchable by skill and context

Conduit SDK

Integrate Deliverables in Minutes

All three Deliverables tools are standard MCP calls โ€” zero credits, available via any MCP client or the Conduit SDK.

deliverables.register ยท promote ephemeral to permanent ยท Python ยท Conduit SDK
from datagrout.conduit import Client

async with Client(
    "https://gateway.datagrout.ai/servers/{uuid}/mcp",
    auth={"bearer": "your-access-token"}
) as client:

    # Step 1: Run a workflow โ€” e.g. a prism.refract + prism.chart pipeline
    chart = await client.perform("data-grout@1/prism.chart@1", {
        "payload": revenue_data,
        "goal": "Monthly revenue trend by region, line chart",
        "title": "Q1 Revenue by Region"
    })

    # chart["_meta"]["cache_ref"] holds the ephemeral ref
    cache_ref = chart["_meta"]["cache_ref"]

    # Step 2: Register as a permanent deliverable
    result = await client.perform("data-grout@1/deliverables.register@1", {
        "title": "Q1 Revenue by Region",
        "type": "chart",
        "summary": "Line chart of monthly revenue for Q1 2026, segmented by EMEA, APAC, AMER",
        "cache_ref": cache_ref,
        "tags": ["revenue", "q1-2026", "by-region", "finance-team"]
    })

    # result["ref"] is now a stable del_* identifier โ€” permanent
    deliverable_ref = result["ref"]
    print("Deliverable registered:", deliverable_ref)

Also available in TypeScript, Rust, Elixir, and Ruby. View Conduit SDK โ†’

Frequently Asked Questions

Common questions before wiring Deliverables into agent workflows.

More questions? Read the full Deliverables documentation.

Agent outputs deserve
a permanent address.

Deliverables turn ephemeral cache_refs into permanent, searchable, encrypted records โ€” so the best work your agents produce is always findable, retrievable, and shareable.

Free forever ยท No credit card required

We use cookies to improve your experience, analyze site traffic, and serve personalized content. You can accept all, decline non-essential cookies, or manage your preferences. See our Privacy Policy for details.

Ask the Advisor