MINT Protocol — Universal Work Attestation
REMOTE · MINT-MCP-PRODUCTION.UP.RAILWAY.APP · SCANNED AUG 3
Trust stack for AI agents: identity, attest, verify, rate, recommend, discover — on Solana.
Available components
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 →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not yet verified: we couldn't confirm whether this endpoint requires it. View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS not yet verified: we couldn't read the response headers to check for it. View diagnostics → Unverified
- 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 we couldn't connect to verify it. 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
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.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · mint-mcp-production.up.railway.app
claude mcp add --transport http foundrynet-mint-mcp 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": {
"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.
- 1 Aug 26 0
- Endpoint reachability: reachable → unreachable ▼ security
- 31 Jul 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
- 30 Jul 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
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 59
First indexed and scored.
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 3 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 |
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 Inconclusive
We could not reach the endpoint well enough to judge its authorisation posture.
| Result | Inconclusive |
|---|
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mint-mcp-production.up.railway.app/mcp | Unreachable | ||
| 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.
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.