# io.github.89rat/code402

> Discover machine-payable APIs, probe x402 payment terms, and run seller operations. Non-custodial.

- name: io.github.89rat/code402
- version: 1.0.1
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 69/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.89rat%2Fcode402
- tools: https://api.protogrid.dev/v1/servers/io.github.89rat%2Fcode402/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "code402": {
      "type": "http",
      "url": "https://rail.hcrb.in/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-97% +updated-24d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 69/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 24 of 24 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: calculate_fx_savings (destructiveHint); gstin_check (destructiveHint); erc20_balance (destructiveHint); …
- pass `tools.token_cost`: about 6,354 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 98 tool changes in 30 days
- fail `stability.rug_pull`: 17 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 24, about 6,354 tokens to load them all
- tool set hash: ba8757e433184d23ab09540641a974ba
- tools last changed: 2026-10-17T10:47:12.035Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.89rat/code402.svg)](https://protogrid.dev/servers/io.github.89rat/code402)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-17 `solvency_check` removed
  - solvency_check=balance_check(wallet:str!,asset:enum[USDC|EURC|ETH]?,min_minor:str?)->XDR1SolvencyProof
- 2026-10-17 `reconcile` removed
  - reconcile=reconcile_commerce(order:obj!,payments:arr!,delivery:obj?,certify:bool?)->XDR1ExceptionReport
- 2026-10-17 `verify_id` removed
  - verify_id=verify_identifier(kind:enum[iban|lei|vat|gstin|ein|abn|duns|bic|isin|npi|uk_crn|eu_eori|other]!,id:str!,cc:str?)->XDR1Receipt
- 2026-10-17 `screen_entity` removed
  - screen_entity=screen_sanctions_exact(entity:str!,jurisdiction:str?,wallet:str?)->XDR1SanctionsVerdict
- 2026-10-17 `receipt_verify` added
  - Verifies a signed XDR-1 receipt from ANY x402 service: recomputes the canonical digest and recovers the signer, then compares it to the declared signer. Free forever — no account, no quota, no storage (stateless). A valid receipt proves the signer signed that tool call at that timestamp; it does NOT prove funds moved or any business claim.
- 2026-10-17 `check_price` added
  - Instant zero-cost pricing hook for code402 tools. Returns the live price, an opaque quote_id, TTL, and the settlement URL. Free forever — feeds the price index into an agent planner's context without creating any financial obligation. If the planner acts on the quote, it hits the settlement_url with an EIP-3009 signed voucher.
- 2026-10-17 `sanctions_address_screen` added
  - Exact EVM-address comparison against the identified address snapshot and existing operator block policy. Current legal status is unknown; is_sanctioned is null. valid=false preserves a local block; valid=null never authorizes a transaction. Names are not screened. Missing, stale or incomplete evidence is explicit; no UN/EU coverage or sanctions clearance is provided.
- 2026-10-17 `ifsc_check` added
  - Check the 11-character Indian IFSC format, including its fifth-character zero. No bank-branch registry lookup or account verification.
- 2026-10-17 `gstin_check` added
  - Validate an Indian GSTIN by structure (2-digit state code + PAN + entity code + 'Z') and its mod-36 cross-sum checksum.
- 2026-10-17 `pre_disbursement_guard` added
  - Evaluate supplied identifiers, domain-age evidence and mismatch signals. Requires a preceding receipt hash. An advisory result is not verified identity, fraud clearance or authorization to release funds.

Full history: https://api.protogrid.dev/v1/servers/io.github.89rat%2Fcode402/changes

## Remotes

- https://rail.hcrb.in/mcp (streamable-http, auth none, reachable true, uptime30d 0.96842104)

## Packages

_none_

## Tools (24)

- `balance_check`: Native ETH and one ERC-20 balance (default USDC) for an address on Base, raw and formatted. Result carries a signed receipt.
- `batch_validate`: Run up to 50 supported {tool, value} checks in one request. Each result states its scope. Compare the current batch quote with individual quotes; savings depend on batch size.
- `block_info`: Base block header: number, timestamp, transaction count and base fee for the latest or a given block. Result carries a signed receipt.
- `calculate_fx_savings`: Arithmetic comparison of a USDC settlement against comparator percentages YOU supply (bank_fee_pct, custodial_fee_pct) across 14 global fiat currencies. The comparators are assumptions, not measurements of any bank or provider; no protocol fee is deducted on this rail.
- `check_price`: Instant zero-cost pricing hook for code402 tools. Returns the live price, an opaque quote_id, TTL, and the settlement URL. Free forever — feeds the price index into an agent planner's context without creating any financial obligation. If the planner acts on the quote, it hits the settlement_url with an EIP-3009 signed voucher.
- `clean_markdown_scraper`: Fetch a public web page by URL (or take your HTML) and return Markdown plus headings. No JavaScript rendering. Result carries a signed receipt.
- `context_distill`: Deterministic text digest: word count, top-5 most frequent meaningful words (stop words excluded), first sentence, and a keccak-256 content hash. Pure function — no external calls, no ML.
- `crypto_ticker`: Spot USD price for a crypto ticker or CoinGecko id from public price feeds, cached 60 s. Result carries a signed receipt.
- `erc20_balance`: Raw and formatted ERC-20 balanceOf for an address on Base, with decimals read from the token. Result carries a signed receipt.
- `fx_spot_price_oracle`: Reference fiat and stablecoin conversion rate from a static table, not a live feed. Returns rate and inverse; result carries a signed receipt.
- `gstin_check`: Validate an Indian GSTIN by structure (2-digit state code + PAN + entity code + 'Z') and its mod-36 cross-sum checksum.
- `iban_check`: Validate IBAN structure and MOD-97 checksum. Does not establish account ownership, beneficiary identity or absence of fraud.
- `ifsc_check`: Check the 11-character Indian IFSC format, including its fifth-character zero. No bank-branch registry lookup or account verification.
- `india_supplier_check`: One call, one receipt: GSTIN + PAN + UPI VPA + IFSC for an Indian counterparty. Four deterministic structural checks, each stating its own scope. Built for cross-border procurement where the buyer is an agent that cannot open an INR account.
- `instant_json_schema_verifier`: Validate JSON data payloads against schema definitions. Preflighted for agent tool call pipelines.
- `lei_check`: Validate a 20-character LEI and MOD-97 check digits. No registry lookup, active-registration check or legal-entity identity verification.
- `pre_disbursement_guard`: Evaluate supplied identifiers, domain-age evidence and mismatch signals. Requires a preceding receipt hash. An advisory result is not verified identity, fraud clearance or authorization to release funds.
- `receipt_verify`: Verifies a signed XDR-1 receipt from ANY x402 service: recomputes the canonical digest and recovers the signer, then compares it to the declared signer. Free forever — no account, no quota, no storage (stateless). A valid receipt proves the signer signed that tool call at that timestamp; it does NOT prove funds moved or any business claim.
- `sanctions_address_screen`: Exact EVM-address comparison against the identified address snapshot and existing operator block policy. Current legal status is unknown; is_sanctioned is null. valid=false preserves a local block; valid=null never authorizes a transaction. Names are not screened. Missing, stale or incomplete evidence is explicit; no UN/EU coverage or sanctions clearance is provided.
- `swift_bic_check`: Check SWIFT/BIC structure and country code. Does not establish bank existence, active routing or beneficiary identity.
- `token_contract_risk`: Deterministic Base contract facts: ERC-20 metadata, proxy slots, owner(), privileged-function selectors and flags. Not a safety verdict. Result carries a signed receipt.
- `tx_activity`: Outbound transaction count (nonce) and contract-or-EOA check for an address on Base. Result carries a signed receipt.
- `vat_mod97_check`: Check the supported Belgian VAT format and MOD-97 checksum. BE only; not VIES, other EU VAT formats, registration status or tax compliance.
- `vendor_onboarding_pack`: Check supplied IBAN, LEI, Belgian VAT and UK company-number fields in one result. Structural checks only; no ownership, registry or fraud clearance.
