MINT Protocol — Universal Work Attestation
REMOTE · MINT-MCP-PRODUCTION.UP.RAILWAY.APP · SCANNED AUG 17
Trust stack for AI agents: identity, attest, verify, rate, recommend, discover — on Solana.
Available components
Dead
Every channel of this server has been unreachable for long enough to be marked dead. Its trust score is pinned to 0 and does not recover automatically: even once the server responds again it stays dead until it is manually reinstated.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes. View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability0
- Transport check failed: declared streamable-http, but the endpoint returned HTTP 502. See how to fix → View diagnostics → Fail
Schema Quality & AI Usability0
- Schema not yet verified: we couldn't read the endpoint's schema.Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage not yet verified: we couldn't read the endpoint's tools.Unverified
Tool Safety–
Not scored yet: our latest scan of this component recorded no findings here. It fills in the next time we score it.
Capabilities0
- Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified
Unverified: 4 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.
How do I install the MINT Protocol — Universal Work Attestation MCP server?
MINT Protocol — Universal Work Attestation is a hosted endpoint at https://mint-mcp-production.up.railway.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mint-mcp-production.up.railway.app
claude mcp add --transport http foundrynet-mint-mcp 'https://mint-mcp-production.up.railway.app/mcp'
{
"mcpServers": {
"foundrynet-mint-mcp": {
"url": "https://mint-mcp-production.up.railway.app/mcp"
}
}
} {
"servers": {
"foundrynet-mint-mcp": {
"type": "http",
"url": "https://mint-mcp-production.up.railway.app/mcp"
}
}
} [mcp_servers.foundrynet-mint-mcp] url = "https://mint-mcp-production.up.railway.app/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"foundrynet-mint-mcp": {
"type": "remote",
"url": "https://mint-mcp-production.up.railway.app/mcp",
"enabled": true
}
}
} openclaw mcp add foundrynet-mint-mcp --url 'https://mint-mcp-production.up.railway.app/mcp' --transport streamable-http
mcp_servers:
foundrynet-mint-mcp:
url: "https://mint-mcp-production.up.railway.app/mcp" {
"McpServers": {
"foundrynet-mint-mcp": {
"Transport": "http",
"Url": "https://mint-mcp-production.up.railway.app/mcp"
}
}
} assistant mcp add foundrynet-mint-mcp -t streamable-http -u 'https://mint-mcp-production.up.railway.app/mcp'
{
"mcpServers": {
"foundrynet-mint-mcp": {
"type": "http",
"url": "https://mint-mcp-production.up.railway.app/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Aug 26 −12
The score moved with no change recorded against any check. We would rather say so than guess.
- 13 Aug 26 −12
The score moved with no change recorded against any check. We would rather say so than guess.
- 12 Aug 26 −13
The score moved with no change recorded against any check. We would rather say so than guess.
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 10 Aug 26 −12
The score moved with no change recorded against any check. We would rather say so than guess.
- 9 Aug 26 −12
The score moved with no change recorded against any check. We would rather say so than guess.
- 7 Aug 26 0
- HSTS header: unverified → fail ▼ security
- Transport: Transport check failed: declared streamable-http, but the endpoint returned HTTP 502. security
- Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes. security
- 1 Aug 26 0
- Endpoint reachability: reachable → unreachable ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 17 Aug 2026 · Probed https://mint-mcp-production.up.railway.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.up.railway.app | CN=YE1,O=Let's Encrypt,C=US | 29 Jul 2026 | 27 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 6da79bb561da3efeb0e751ca21abd3999fe |
| SANs: *.up.railway.app, up.railway.app | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mint-mcp-production.up.railway.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| railway.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 502 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mint-mcp-production.up.railway.app/mcp | HTTP error | 502 | |
| http (plaintext) | http://mint-mcp-production.up.railway.app/mcp | HTTPS enforced | 301 | https://mint-mcp-production.up.railway.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
mint_attest ~410
Attest a completed unit of work for a registered actor, anchoring a tamper-evident record on Solana mainnet and updating the actor's trust. PRICING: FREE. Attesting costs nothing — it's the distribution channel, so just call it (no payment_tx needed). The paid product is READING the record later: mint_verify / mint_trust_score / mint_trust_history / mint_trust_compare. (`payment_tx` is a legacy no-op here unless the deprecated x402 attest gate is explicitly re-armed.) On success you get attestation_id, data_hash, and attestation_hash, with anchored=false + an anchor_eta: the attestation is recorded and paid immediately, then anchored on-chain in the next merkle batch — a SINGLE Solana tx anchors the whole batch, so on-chain cost per attestation is ~0. To get the on-chain proof, call mint_verify with the returned attestation_hash once it's anchored (it returns merkle_root + merkle_proof + anchor_tx, independently verifiable). Surface the attestation_hash so the work can be verified later.
| Name | Type | Req | Description |
|---|---|---|---|
| duration_seconds | integer | yes | wall-clock seconds the work took (> 0). |
| input_hash | – | – | optional sha256 of the work's input. |
| metadata | – | – | optional free-form JSON folded into the hashed payload. |
| mint_id | string | yes | the actor's MINT id from mint_register ("MINT-xxxxxx"). |
| output_hash | – | – | optional sha256 of the work's output. |
| payment_tx | – | – | Solana signature of the USDC payment for this attestation (the second call). Omit it on the first call to receive the 402 payment instructions. |
| summary | string | yes | short human description of what was done and the result. |
| work_type | string | yes | code_review|normalization|research|generation|analysis| delivery|manufacturing|custom. |
Structured output declared, but exposes no named fields.
No examples provided.
mint_batch_attest ~44
Attest a batch of completed work items at once. FREE, unlimited.
| Name | Type | Req | Description |
|---|---|---|---|
| attestations | array | yes | list of attestation objects (1-100 per call). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_create_cell ~242
Create a stake-backed **work cell** on the FoundryNet devnet program. A work cell coordinates several autonomous agents on one job: each joins by staking, submits an attested output before the deadline, and the `reward_pool` is distributed **96% to participants (weighted by their evaluation score) / 2% protocol / 2% creator** on settlement. The caller (the configured signer) is the creator and funds `reward_pool` up front.
| Name | Type | Req | Description |
|---|---|---|---|
| cell_id | string | yes | unique id, ≤ 32 bytes (also the PDA seed), e.g. "vision-batch-7". |
| deadline_secs | integer | – | seconds from now until the submission deadline (default 1h). |
| max_participants | integer | yes | how many agents may join before it auto-activates. |
| reward_pool | integer | yes | total SPL base-unit reward the creator funds into escrow. |
| stake_required | integer | yes | SPL base-unit stake each participant locks (must be > 0). |
| work_type | string | yes | short label for the work, e.g. "inference" (≤ 32 bytes). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_create_policy ~288
Create a **parametric insurance policy** on the FoundryNet devnet program. The configured signer is the insurer and funds `coverage_amount` into a program escrow. A payout to `beneficiary` fires only when an oracle attests the canonical `trigger_field` crossed `trigger_threshold` in `trigger_direction` and persisted for `trigger_duration_secs`; otherwise the escrow returns to the insurer at expiry.
| Name | Type | Req | Description |
|---|---|---|---|
| beneficiary | string | yes | base58 pubkey that receives the payout (the machine owner). |
| coverage_amount | integer | yes | SPL base-unit payout the insurer escrows. |
| machine | – | – | optional registered machine pubkey (defaults to the signer). |
| policy_duration_secs | integer | yes | policy length in seconds. |
| policy_id | string | yes | unique id, ≤ 32 bytes (PDA seed), e.g. "spindle-cnc-12". |
| premium_amount | integer | yes | SPL base-unit monthly premium the operator pays. |
| trigger_direction | integer | – | 0 = above the threshold, 1 = below (default 0). |
| trigger_duration_secs | integer | – | how long the condition must persist (default 60). |
| trigger_field | string | yes | canonical field name, e.g. "spindle_load_pct". |
| trigger_threshold | integer | yes | scaled threshold, e.g. 9500 for 95.00%. |
Structured output declared, but exposes no named fields.
No examples provided.
mint_discover ~176
Discover trusted actors on the MINT network. FREE — no auth, open to any agent. Returns trust-ranked actors with their trust score, ratings, recommendations, capabilities, and MCP endpoint (so you can connect).
| Name | Type | Req | Description |
|---|---|---|---|
| actor_type | – | – | optional filter — "ai_agent", "machine", "iot_device", "service". |
| capability | – | – | capability or keyword to match, e.g. "telemetry normalization". |
| limit | integer | – | max results, 1–50 (default 10). |
| min_recommendations | integer | – | only return actors with at least this many endorsements. |
| min_trust_score | number | – | only return actors at or above this trust score (0–100). |
| sort_by | string | – | "trust_score" (default), "recommendations", or "recent". |
Structured output declared, but exposes no named fields.
No examples provided.
mint_feed ~70
The newest attestations across the whole MINT network — originating agent, summary, trust score, ML confidence, anchor status, merkle root + Solscan link — plus showcase stats. FREE.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | how many recent attestations to return (1-200, default 50). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_join_cell ~116
Join an open **work cell** by locking its required stake. Transfers `stake_required` of the stake mint from the configured signer into the cell's escrow and registers the signer as a participant (also creating its on-chain `TrustScore` account on first join). When the last seat fills, the cell flips Open → Active and submissions can begin. Fails if the cell is full or already active.
| Name | Type | Req | Description |
|---|---|---|---|
| cell_id | string | yes | the id of the cell to join (the same id used at creation). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_rate ~221
Rate a completed unit of work (an attestation) 1–5 and update the rated actor's trust score. FREE. Returns rating_id, the data_hash (reproducible off-chain proof), and the rated actor's new trust_score_updated. You can't rate yourself, and each rater may rate a given attestation once.
| Name | Type | Req | Description |
|---|---|---|---|
| accuracy | boolean | – | whether the work was accurate (default true). |
| attestation_id | string | yes | the attestation being rated (from mint_attest). |
| comment | – | – | optional free-text comment. |
| rated_mint_id | string | yes | the actor that did the work ("MINT-xxxxxx"). |
| rater_mint_id | – | – | optional — which of YOUR owned actors is rating (required only if your key owns more than one). |
| score | integer | yes | integer 1–5. |
| tags | – | – | optional descriptors, e.g. ["fast", "thorough"]. |
| would_use_again | boolean | – | whether you'd use this actor again (default true). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_recommend ~194
Recommend another actor you've worked with, in a named context, 1–5. Updates the recommended actor's trust score. FREE. Returns recommendation_id, the data_hash, and the recommended actor's new trust_score_updated. You can't recommend yourself; each (you, them, context) triple is unique.
| Name | Type | Req | Description |
|---|---|---|---|
| attestation_id | – | – | optional attestation that backs this recommendation. |
| context | string | yes | what you're endorsing them for, e.g. "cross-oem normalization". |
| note | – | – | optional free-text, e.g. "Best for Fanuc + Siemens mixed fleets". |
| recommended_mint_id | string | yes | the actor you're endorsing ("MINT-xxxxxx"). |
| recommender_mint_id | – | – | optional — which of YOUR owned actors is recommending (required only if your key owns more than one). |
| score | integer | yes | integer 1–5. |
Structured output declared, but exposes no named fields.
No examples provided.
mint_register ~260
Register any autonomous actor — AI agent, physical machine, IoT device, or backend service — with a persistent cryptographic identity on the MINT network. Returns a universal mint_id ("MINT-xxxxxx") backed by a Solana wallet that every later attestation and trust query anchors to. Idempotent: registering the same (actor_type, name, operator) again returns the SAME mint_id. Always call this before mint_attest for a new actor. FREE — identity is never gated.
| Name | Type | Req | Description |
|---|---|---|---|
| actor_type | string | yes | one of "ai_agent", "machine", "iot_device", "service". |
| capabilities | – | – | optional capability tags, e.g. ["web_research"]. Used by mint_discover so other agents can find you. |
| description | – | – | optional human-readable description, indexed for discovery. |
| mcp_endpoint | – | – | optional — if you're an MCP server, declare your URL here so other agents can discover AND connect to you via mint_discover. |
| metadata | – | – | optional free-form JSON attached to the identity. |
| name | string | yes | human-readable actor name, e.g. "ResearchBot-7". |
| operator | – | – | optional owning company/operator name (scopes the identity). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_settle_cell ~200
Trigger **settlement** of a work cell. Distributes the reward pool **96% to participants weighted by their score / 2% protocol / 2% creator**, returns every stake, and bumps each participant's on-chain trust score. The configured signer must be the cell's creator. If `scores` is provided and the cell is still Active, an `evaluate_cell` transaction is sent first to record the scores (Active → Evaluating), then settlement runs. If the cell was already evaluated, omit `scores`.
| Name | Type | Req | Description |
|---|---|---|---|
| cell_id | string | yes | the cell to settle. |
| participants | array | yes | base58 pubkeys of every participant, in the order their scores apply (used to rebuild the participant/token/trust accounts). |
| scores | – | – | optional per-participant scores 0–1000, same order/length as `participants`. Omit if the cell is already in the Evaluating state. |
Structured output declared, but exposes no named fields.
No examples provided.
mint_settle_policy ~129
Trigger **settlement** of a parametric insurance policy. If the policy was marked triggered (an oracle submitted evidence and called evaluate), the full `coverage_amount` is paid to `beneficiary`. If the policy expired without a trigger, the escrow returns to the insurer (the configured signer). Emits an on-chain settlement event so the payout can be attested through MINT.
| Name | Type | Req | Description |
|---|---|---|---|
| beneficiary | string | yes | base58 pubkey of the payout beneficiary (its token account receives the coverage on a triggered settlement). |
| policy_id | string | yes | the policy to settle. |
Structured output declared, but exposes no named fields.
No examples provided.
mint_trust_compare ~127
Compare trust scores across multiple agents — a head-to-head leaderboard. PAID: $0.05 USDC. Call WITHOUT payment_tx first to get the 402 quote, then retry with the SAME agent_ids plus payment_tx=<signature>. An fnet_ Bearer key on REST bypasses.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_ids | array | yes | list of MINT ids to rank (2-25, e.g. ["MINT-aaa", "MINT-bbb"]). |
| payment_tx | – | – | Solana signature of the $0.05 USDC payment (second call). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_trust_history ~160
Full attestation history for an agent over the last `days`. PAID: $0.25 USDC. Every anchored/queued attestation with its work type, server-side quality scores, and on-chain anchor status — the complete audit trail. Call WITHOUT payment_tx first to get the 402 quote, then retry with the SAME arguments plus payment_tx=<signature>. An fnet_ Bearer key on REST bypasses.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | the agent's MINT id ("MINT-xxxxxx"). |
| days | integer | – | lookback window in days (1-365, default 30). |
| payment_tx | – | – | Solana signature of the $0.25 USDC payment (second call). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_trust_score ~128
Look up an agent's trust score from the trust graph. PAID: $0.01 USDC. Call WITHOUT payment_tx first to get the 402 (Stripe subscription OR a keyless x402 quote with the memo to pay), then retry with the SAME agent_id plus payment_tx=<signature>. An fnet_ Bearer key on the REST surface bypasses.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | the agent's MINT id ("MINT-xxxxxx"). |
| payment_tx | – | – | Solana signature of the $0.01 USDC payment (second call). |
Structured output declared, but exposes no named fields.
No examples provided.
mint_verify ~206
Verify an actor's reputation OR a single attestation's on-chain anchoring. PAID: $0.005 USDC per query. Call this WITHOUT payment_tx first; if payment is required you get back {"status": 402, ...} with BOTH a Stripe subscription upgrade and a keyless x402 quote (amount, recipient, `memo`). Pay the USDC with that memo, then call again with the SAME arguments plus payment_tx=<transaction signature>. (Attestation — mint_attest — is free.)
| Name | Type | Req | Description |
|---|---|---|---|
| actor_name | – | – | the actor's registered name, e.g. "ResearchBot-7". |
| actor_type | – | – | optional disambiguator when resolving by name. |
| attestation_hash | – | – | the sha256 attestation handle from mint_attest. |
| mint_id | – | – | the actor's MINT id ("MINT-xxxxxx"). |
| payment_tx | – | – | Solana signature of the $0.005 USDC payment (second call). |
Structured output declared, but exposes no named fields.
No examples provided.
What is the MINT Protocol — Universal Work Attestation MCP server?
MINT Protocol — Universal Work Attestation is an MCP server listed in the public MCP registry as io.github.FoundryNet/mint-mcp. Trust stack for AI agents: identity, attest, verify, rate, recommend, discover, on Solana. This page covers its hosted endpoint (https://mint-mcp-production.up.railway.app/mcp).
Is the MINT Protocol — Universal Work Attestation MCP server safe to use?
MINT Protocol — Universal Work Attestation scores 0 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the MINT Protocol — Universal Work Attestation MCP server expose?
MINT Protocol — Universal Work Attestation exposes 16 tools: mint_register, mint_attest, mint_batch_attest, mint_feed, mint_rate, and 11 more. Their descriptions and schemas cost roughly 2,971 tokens of context every time the server is loaded.
Does the MINT Protocol — Universal Work Attestation MCP server require authentication?
No. We connected to MINT Protocol — Universal Work Attestation without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the MINT Protocol — Universal Work Attestation MCP server still maintained?
MINT Protocol — Universal Work Attestation has been unreachable for long enough that we treat it as dead, and its score is pinned to zero. We last reached this channel on 29 July 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.