# io.github.vjshaw/nulucre-wallet-reputation

> Wallet trust scores for AI agents. Stellar, XRPL, EVM 81+ chains. OFAC sanctions. x402 payments.

- name: io.github.vjshaw/nulucre-wallet-reputation
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 85/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.vjshaw%2Fnulucre-wallet-reputation
- tools: https://api.protogrid.dev/v1/servers/io.github.vjshaw%2Fnulucre-wallet-reputation/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "nulucre-wallet-reputation": {
      "type": "http",
      "url": "https://agents.nulucre.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 85/100 (new)

### 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: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 2 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,182 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

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

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 3 of the 7 days needed

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

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

- tools: 5, about 2,182 tokens to load them all
- tool set hash: 100b76af5733cdd388a02a5d38a05106
- tools last changed: 2026-10-18T03:21:30.025Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.vjshaw/nulucre-wallet-reputation.svg)](https://protogrid.dev/servers/io.github.vjshaw/nulucre-wallet-reputation)
- 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-18 `nulucre_get_solana_wallet_score` added
  - Get a 0-100 trust score for a Solana wallet address from Nulucre. Scored using 7 native Solana RPC signals: account age, transaction volume, SOL balance, token diversity, recent activity, program account status, and failed transaction ratio. Includes real-time OFAC/UN/EU sanctions screening. Use before paying or interacting with any Solana wallet. Pay per query via x402 USDC micropayments.

Full history: https://api.protogrid.dev/v1/servers/io.github.vjshaw%2Fnulucre-wallet-reputation/changes

## Remotes

- https://agents.nulucre.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (5)

- `nulucre_check_service_status`: Check whether the live Nulucre reputation oracle service is online. This is a free endpoint that requires no payment.

Use this tool to verify Nulucre is reachable before relying on it for wallet scoring decisions, or for general uptime monitoring.

Args: none

Returns:
  Structured data with schema:
  {
    "status": string,    // "online" if the service is reachable
    "service": string    // service name
  }

Examples:
  - Use when: "Is Nulucre up?" -> no params needed
  - Use when: checking service availability before a batch of scoring calls

Error Handling:
  - Returns "Error: ..." with details if the service is unreachable
- `nulucre_get_evm_wallet_score`: Get a 0-100 trust score for an EVM wallet address (0x...) from Nulucre, a multi-chain wallet reputation oracle covering 81+ chains.

The score is computed from on-chain data including wallet age, transaction volume, DeFi activity, and multi-chain presence, pulled from Etherscan, Moralis, Alchemy, and Ankr.

Use this tool to assess counterparty risk before an agent interacts with or pays an EVM wallet on Ethereum, Base, Polygon, Arbitrum, Optimism, or any of the 81+ supported chains.

Args:
  - wallet (string): EVM wallet address starting with '0x' (42 characters)
  - signed (boolean): If true, request an ECDSA-P256 signed score for independent
    verification via Nulucre's public JWKS endpoint (default: false)
  - response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns:
  For JSON format: Structured data with schema:
  {
    "wallet": string,
    "score": number,            // 0-100
    "status": string,           // TRUSTED | VERIFIED | CAUTION | RISKY | BLACKLISTED
    "breakdown": {
      "<signalName>": { "score": number, "raw": string },
      ...
    },
    "chains"?: string[],
    "dataSource": string,
    "timestamp": string,
    "signature"?: string        // present only when signed=true
  }

Examples:
  - Use when: "Is this Ethereum wallet trustworthy?" -> wallet="0xabc...", signed=false
  - Use when: "Get a verifiable score for this 0x address" -> wallet="0xabc...", signed=true
  - Don't use when: scoring a Stellar G... address (use nulucre_get_stellar_wallet_score instead)

Error Handling:
  - Returns "Error: Invalid EVM wallet address" if the address format is invalid
  - Returns a payment-required explanation if the free evaluation quota is exhausted
- `nulucre_get_solana_wallet_score`: Get a 0-100 trust score for a Solana wallet address from Nulucre. Scored using 7 native Solana RPC signals: account age, transaction volume, SOL balance, token diversity, recent activity, program account status, and failed transaction ratio. Includes real-time OFAC/UN/EU sanctions screening. Use before paying or interacting with any Solana wallet. Pay per query via x402 USDC micropayments.
- `nulucre_get_stellar_wallet_score`: Get a 0-100 trust score for a Stellar wallet address (G...) from Nulucre, a live Stellar-native wallet reputation oracle.

The score is computed from 8 signals pulled directly from the Stellar Horizon API and Stellar Expert — account age, transaction volume, asset diversity, SDEX DEX participation, network trust, claimable balance activity, Soroban contract interactions, and liquidity pool participation, plus a spam detection penalty. No EVM data is used.

Every score includes a real-time sanctions screening result against the OFAC SDN, OFAC Non-SDN, EU Financial Sanctions, and UN Security Council Sanctions lists. A wallet matching any of these lists automatically receives a score of 0 and status BLACKLISTED.

Use this tool to assess counterparty risk before an agent interacts with or pays a Stellar wallet — for example before executing a payment, approving a swap counterparty, or evaluating a new account.

Args:
  - g_address (string): Stellar wallet address starting with 'G' (56 characters)
  - signed (boolean): If true, request an ECDSA-P256 signed score for independent
    verification via Nulucre's public JWKS endpoint (default: false)
  - response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns:
  For JSON format: Structured data with schema:
  {
    "wallet": string,
    "network": "stellar:pubnet",
    "score": number,            // 0-100
    "status": string,           // TRUSTED | VERIFIED | CAUTION | RISKY | BLACKLISTED
    "breakdown": {
      "accountAge": { "score": number, "raw": string },
      "txVolume": { "score": number, "raw": string },
      "assetDiversity": { "score": number, "raw": string },
      "dexParticipation": { "score": number, "raw": string },
      "networkTrust": { "score": number, "raw": string },
      "claimableActivity": { "score": number, "raw": string },
      "sorobanUsage": { "score": number, "raw": string },
      "liquidityPools": { "score": number, "raw": string },
      "spamPenalty": { "score": number, "raw": string },
      "sanctionsCheck": { "score": number, "raw": "CLEAR"|"SANCTIONED"|"UNCHECKED", "source": string }
    },
    "dataSource": string,
    "timestamp": string,
    "signature"?: string        // present only when signed=true
  }

Examples:
  - Use when: "Is this Stellar wallet safe to pay?" -> g_address="GABC...", signed=false
  - Use when: "Get a verifiable score I can check independently" -> g_address="GABC...", signed=true
  - Don't use when: scoring an Ethereum or other EVM address (use nulucre_get_evm_wallet_score instead)

Error Handling:
  - Returns "Error: Invalid Stellar wallet address" if the address format is invalid
  - Returns a payment-required explanation if the free evaluation quota is exhausted
- `nulucre_get_xrpl_wallet_score`: Get a 0-100 trust score for an XRPL wallet address (r...) from Nulucre. Scored using 7 XRPL Ledger signals: account age, transaction volume, trustline diversity, DEX participation, network trust, payment activity, and spam detection. Includes real-time OFAC/UN/EU sanctions screening. Use before paying or interacting with any XRPL wallet.
