Probity Labs

MCP Developer Docs

Probity Wallet Reputation MCP

Probity screens any Ethereum address or .eth ENS name for on-chain reputation risk before you transact. This page documents the Probity Wallet Reputation MCP connector: how to connect it to your client, the seven tools it exposes, ready-to-use prompts, and what a screen returns.

Connect

Install & connect

Probity is a remote MCP server. Connect to the endpoint below to authenticate via OAuth 2.0 and Dynamic Client Registration. No client ID or secret required. Tool execution needs a signed-in Probity account.

MCP endpoint
https://mcp.probitylabs.ai/mcp
Claude Desktop (.mcp.json)
{
  "mcpServers": {
    "probity": {
      "url": "https://mcp.probitylabs.ai/mcp"
    }
  }
}

Tools

Seven tools, grouped by task

One credit screens one address and every read tool is free. Read-only tools never change state.

Screen & gate a transaction

Screen an address before you send funds. This is the only tool that spends a credit.

ToolWhat it doesCost
screen_addressScreens an Ethereum address or .eth ENS name for on-chain reputation risk before you transact. Params: [address] an Ethereum address or .eth ENS name. Returns: A signed reputation score (−100…+100), a risk label, confidence, a direct OFAC sanctions flag, top evidence signals, and a screening ID. An enhanced written review is generated in the background and retrievable by screening ID.1 credit

Review & investigate

Recall past screens, read the enhanced narrative, and compare two runs. All free.

get_screening_narrativereadReturns the enhanced written review for a screen. The narrative is generated in the background and retrievable by screeningId. Params: [screeningId] the ID returned by a prior screen_address run. Returns: The full written review for that run (retry once if it is briefly pending).free
get_screening_historyreadLists your recent screens across all addresses. For the history of one specific address, get_address_screening_history is the narrower view. Params: None. Returns: Recent screening runs across every address you have screened.free
get_address_screening_historyreadLists prior screens for one specific address. For screens across all addresses, get_screening_history is the broader view. Params: [address] the Ethereum address or ENS name to look up. Returns: The screening runs recorded for that single address.free
compare_screening_runsreadDifferences of the prior screening runs so you can see how an address's risk changed over time. Params: Two prior run ids (a pair). Returns: A comparison of the two runs: what changed between them (score, band, evidence).free

Monitor & account

Watch reputation changes on addresses you monitor, and check your balance.

get_monitoring_eventsreadLists material reputation changes on addresses you monitor (e.g. band downgrades, new risk floors). Monitoring is configured on the dashboard. Params: None. Returns: Recent monitoring events for your watched addresses.free
get_credit_balancereadReturns your current Probity credit balance. One credit screens one address and every read tool is free. Params: None. Returns: Your available credit balance.free

Prompts

Ready-to-use prompts

Type these to any MCP client. Only screen_address spends credits (1 each), every other tool is free. The caption shows which tools a prompt drives.

Single-tool

Screen vitalik.eth before I send funds — is it risky?
screen_address·1 credit
Is 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 sanctioned by OFAC?
screen_address·1 credit
What's my Probity credit balance?
get_credit_balance·free
Give me the full written review for screen rsr_8Qb2mF4nTypE.
get_screening_narrative·free
Show my last 10 screens.
get_screening_history·free
What have I screened for 0xd8dA…6045 before?
get_address_screening_history·free
Have any addresses I monitor been downgraded in the last week?
get_monitoring_events·free
Compare screens rsr_A… and rsr_B… — what changed?
compare_screening_runs·free

Multi-tool workflows

Before I pay this contractor at 0x…, screen them. If anything is High risk, pull the detailed narrative and explain the concerns.
screen_address → get_screening_narrative·1 credit (screen only)
Check my balance, then screen these three addresses and tell me which are safe to transact with.
get_credit_balance → screen_address ×3·3 credits (screens only)
Re-screen 0x… and compare it against my previous run to see whether its risk changed.
get_address_screening_history → screen_address → compare_screening_runs·1 credit (screen only)
Screen uniswap.eth, and if it's below Neutral, show me the evidence behind the score.
screen_address → get_screening_narrative·1 credit (screen only)

Example response

What a screen returns

Reputable Address

screen_address — illustrative
{
  "screeningId": "rsr_8Qb2mF4nTypE",
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "score": 41,
  "bandCode": "REPUTABLE",
  "band": "Reputable",
  "confidence": "High",
  "sanctioned": false,
  "transactionCount": 12874,
  "summary": "Established wallet with broad, clean counterparty history.",
  "evidence": [
    { "code": "WALLET_AGE_ESTABLISHED", "factor": "Wallet Maturity", 
      "severity": "Low", "message": "Sustained activity over multiple years." },
    { "code": "CEX_SETTLEMENT_SHARE", "factor": "Counterparty Mix", 
      "severity": "Low", "message": "Regular settlement with regulated exchanges." }
  ],
  "screenedAt": "2026-09-25T17:40:12Z",
  "reportUrl": "https://app.probitylabs.ai/screens/rsr_8Qb2mF4nTypE"
}

Critical Risk / Sanctioned Address

screen_address — illustrative
{
  "screeningId": "rsr_3Xk9pQ2rZaML",
  "address": "0x0000000000000000000000000000000000000bad",
  "score": -78,
  "bandCode": "CRITICAL_RISK",
  "band": "Critical Risk",
  "confidence": "High",
  "sanctioned": true,
  "transactionCount": 402,
  "summary": "Direct exposure to sanctioned counterparties.",
  "evidence": [
    { "code": "OFAC_DIRECT_MATCH", "factor": "Sanctions", 
      "severity": "High", "message": "Direct match against an OFAC-listed address." },
    { "code": "MIXER_INFLOW", "factor": "Obfuscation", 
      "severity": "High", "message": "Significant inflow from a known mixing service." }
  ],
  "screenedAt": "2026-09-25T17:41:03Z",
  "reportUrl": "https://app.probitylabs.ai/screens/rsr_3Xk9pQ2rZaML"
}

Security & FAQ

Security, data handling & troubleshooting

The tools receive only an address or ENS name plus your own screening parameters. No conversation data is captured. Probity Labs does not move on-chain funds, the credit meter is internal usage tracking. Tool execution requires a signed-in OAuth session, while only discovery (initialize + tools/list) is open. See our privacy policy for data handling and retention.

Read our privacy policy for full data-handling and retention detail.

It says I have no credits
screen_address needs at least 1 credit. Check your balance with get_credit_balance and buy more on the dashboard. Every read tool is free.
The narrative came back empty or pending
The enhanced review is generated in the background. Retry get_screening_narrative a few seconds later.
Connecting fails after login
Your client's redirect_uri must be registered with our OAuth provider. Most MCP clients handle this automatically via Dynamic Client Registration. If you set the client up manually, confirm the redirect URI matches.
GET /mcp returns 401 or 405
Both are expected: an unauthenticated GET /mcp returns 401 to seed OAuth discovery. An authenticated GET /mcp returns 405 because the transport is stateless (there is no server→client stream).
My session stopped working
OAuth tokens expire. Re-authorize the connector in your client to get a fresh session.