Proof-of-Time provenance example (PR #2597): timestamp receipts via MCP, zero adapter code #2600
axcpeter
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Opened #2597 (examples/mcp_tttps_provenance.py) a little while back and wanted to add some context here in case anyone runs into it.
The example shows a CodeAgent attaching a cryptographic timestamp receipt to its own output using ToolCollection.from_mcp() against an already-published MCP server (@helm-protocol/ttt-mcp, npm, MIT license). It doesn't add any new smolagents capability, from_mcp() already does everything needed. The example just wires it to a Proof-of-Time backend so the agent can seal a tamper-evident "this output existed at time T" receipt for its own result. Worth being precise about what that receipt claims: it attests to when a content hash was seen and that it hasn't been altered since. It says nothing about whether the output itself is correct.
Tested it locally against a real MCP server round trip and a real CodeAgent run, including a fail-open check (PoT backend unreachable, agent still completes normally, no exception surfaces). If anyone wants to see the shape of a receipt without wiring up an agent, there's a small interactive verifier here: https://huggingface.co/spaces/Pittro/tttps-proof-explorer
For anyone who'd rather skip MCP entirely, we also built a plain step_callbacks version (no MCP server, no smolagents import at the package level, just a function wired directly into step_callbacks) and verified it locally. It's not on PyPI yet though, only langchain-openttt is actually published right now (pip install langchain-openttt); the smolagents, LiteLLM and LlamaIndex equivalents are still local only while we finish packaging them.
Open to feedback on the PR itself, or on whether "attach a signed timestamp to agent output" is worth documenting more formally somewhere in the examples tree.
All reactions