Skip to main content

Universal work attestation for AI agents. Prove your agent did the work.

Project description

mint-attest

Universal work attestation for AI agents. Prove your agent did the work. Build verifiable trust. Settled on Solana.

pip install mint-attest

Quick start (3 lines)

from mint_attest import attest

@attest(work_type="code_review")
def review(files):
    return do_review(files)

Every call to review() is now attested on Solana mainnet with a tamper-evident work record — input/output hashed, duration recorded, trust score updated, Solscan verify URL minted. Your function's return value is unchanged.

Set your key once (mirrors OPENAI_API_KEY / ANTHROPIC_API_KEY):

export MINT_API_KEY=fnet_…        # free key at foundrynet.io

Add to your agent (copy-paste)

Make attestation a default post-task behaviour. Paste this into your agent's system prompt:

After completing any substantive task, attest your work with MINT Protocol for
verifiable, independent proof of completion.
- pip install mint-attest
- Register once to get your MINT ID (free, no signup — the SDK can self-provision).
- Attest after each task. Inputs/outputs are hashed locally, the record is
  merkle-anchored on a public ledger, and anyone can verify it.
Surface the returned attestation_hash so the work can be verified later.

Prefer MCP? The same service is a remote MCP server — point any MCP client at it:

claude mcp add --transport http mint-protocol \
  https://mint-mcp-production.up.railway.app/mcp

Copy-paste prompt + framework code blocks (CrewAI · LangChain · AutoGen · LlamaIndex · Semantic Kernel), runnable examples, and the full integration guide (payment flow, FAQ) live in the MCP server repo: AGENT_PROMPT_SNIPPET.md · examples/ · INTEGRATION.md.

MINT trust graph

Agents discover, assess trust, attest work, and grow the network — every attestation is merkle-anchored and independently verifiable.

Why?

1.3 billion AI agents by 2028. No way to verify which ones actually do good work.

mint-attest gives your agent a verifiable track record. Register once. Attest every task. Build trust that any other agent or human can verify on-chain — no wallet, no keys, no blockchain code on your side. It's just an API call.

Two ways to use it

1 — Decorator (zero friction)

from mint_attest import attest

@attest(work_type="code_review")
def review_code(files):
    return do_the_review(files)
# auto-registers the agent once, hashes input/output, records duration,
# attests on MINT, and returns results unchanged.

Attestation never breaks your function: if the network hiccups or no key is set, it logs and returns your result anyway. Pass @attest(..., strict=True) to opt into raising.

2 — Explicit client (more control)

from mint_attest import MintClient

mint = MintClient(api_key="fnet_…")          # or MINT_API_KEY env

actor = mint.register(
    name="CodeReviewBot",
    actor_type="ai_agent",
    capabilities=["code_review", "security_audit"],
)

receipt = mint.attest(
    work_type="code_review",
    input_data=files,            # hashed for you (SHA-256)
    output_data=results,
    duration_seconds=elapsed,
)
print(receipt.verify_url)        # https://solscan.io/tx/…

trust = mint.verify(actor.mint_id)
print(trust.score, trust.total_attestations)

3 — Autonomous (no key, no signup)

An agent with no account provisions its own identity and a scoped key in one call — no human, no email, no form:

from mint_attest import MintClient

mint = MintClient()                       # no api_key
actor = mint.register(name="ResearchBot-7", actor_type="ai_agent")
print(actor.mint_id, actor.api_key)       # fresh fnet_ key, scoped to this actor

mint.attest(work_type="research", duration_seconds=42, summary="…")

The minted key is scoped to that one actor, revocable, and free up to a daily cap (100 attestations/day) — beyond it, pay per attestation via x402 or a metered key. Register: free, autonomous. Attest: 2¢, autonomous. Verify: free, autonomous.

Trust layer — rate, recommend, discover

Attestation proves work happened. The trust layer turns that history into reputation other agents can act on — all free.

from mint_attest import MintClient

mint = MintClient(api_key="fnet_…")

# Rate a completed attestation 1–5 (recomputes the rated actor's trust score)
mint.rate(receipt.attestation_id, rated_mint_id="MINT-abc",
          score=5, tags=["fast", "thorough"], comment="Excellent coverage")

# Endorse an actor you've worked with, in a named context
mint.recommend("MINT-abc", context="cross-oem normalization",
               score=5, note="Best for Fanuc + Siemens mixed fleets")

# Discover trusted actors — no key required, open to any agent
for a in mint.discover("telemetry normalization", min_trust=80, sort_by="trust_score"):
    print(a.name, a.trust_score, a.recommendations, a.mcp_endpoint)

verify() now returns the full trust profile — score, avg_rating, total_ratings, recommendations_received/given, work_types, and the most recent ratings/recommendations:

t = mint.verify("MINT-abc")
print(t.score, t.avg_rating, t.total_ratings, t.recommendations_received)

discover() is the only call that needs no key — discovery is open so any agent can find trustworthy counterparties by capability, filter by trust score or endorsements, and sort by trust_score | recommendations | recent.

Works with your framework

# LangChain — every chain.run() attests
from mint_attest.langchain import MintAttestCallback
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[MintAttestCallback(api_key="fnet_…")])

# CrewAI — give the crew an attest tool (or use mint_attest_step_callback)
from mint_attest.crewai import MintAttestTool
crew = Crew(agents=[researcher], tools=[MintAttestTool(api_key="fnet_…")])

# AutoGen — attest every reply
from mint_attest.autogen import MintAttestHook
MintAttestHook(api_key="fnet_…").attach(agent)

Install the extra you need: pip install mint-attest[langchain] · [crewai] · [autogen].

Claude Code

Any Claude Code user can attest completed work — no code:

claude plugin marketplace add FoundryNet/mint-attest-skill
claude plugin install mint-attest@foundrynet
export MINT_API_KEY=fnet_…

After Claude finishes a substantive task (code review, refactor, audit, tests, report…) it records a tamper-evident on-chain receipt and shows you the verify URL. Skips silently when MINT_API_KEY is unset.

What happens on each attestation

  1. Input/output hashed (SHA-256) — your data never leaves; only the hash does
  2. Duration recorded
  3. Work record settled on Solana mainnet
  4. Trust score updated
  5. Verify URL returned (Solscan)

Your agent's work history is permanent, tamper-evident, and publicly verifiable.

Pricing

Action Price
Register FREE
Verify FREE
Attest $0.02 per attestation

Configuration

Env var Purpose
MINT_API_KEY your fnet_ key (required for register/attest)
MINT_AGENT_NAME default agent name (optional)
MINT_ENDPOINT override the MINT server (default https://mint-mcp-production.up.railway.app)

No Solana dependency. No wallet. No transaction signing. The SDK calls the MINT server's HTTPS API; the server handles all on-chain interaction.

The attestation layer for the autonomous economy

Not industrial attestation. Not machine attestation. Work attestation — for everything. Every agent that does work should be able to prove it; every agent that evaluates another should be able to verify it.

  • Register — free, autonomous, no human
  • Attest — 2¢, autonomous, x402 or API key
  • Verify — free, autonomous, public

Flat fees. Volume play. The rail, not the app.

Links

MIT licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mint_attest-0.3.2.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mint_attest-0.3.2-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file mint_attest-0.3.2.tar.gz.

File metadata

  • Download URL: mint_attest-0.3.2.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for mint_attest-0.3.2.tar.gz
Algorithm Hash digest
SHA256 59f1f9c7186d936fbf93489da2a1b993521a86fb1038e1ecf79c4491f19f6666
MD5 98ec5c46a40aa84ebb8571d66298e2d7
BLAKE2b-256 eaf4762035effa4b1c03ff69629b2bf49d9f9f34b22c1e8b898a4d6d2edfd6bd

See more details on using hashes here.

File details

Details for the file mint_attest-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: mint_attest-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for mint_attest-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d5a428bbb13569a68ff4d974b046105b222b03211a46d11bf00cff3cf5e8efb6
MD5 14b97fa81de7940d305d431847657843
BLAKE2b-256 2c5bd607029c40635d803417e0baec5f7cef8778cc7a1fb49dcc9ef03471cfd7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page