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.
https://mcp.probitylabs.ai/mcp{
"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.
| Tool | What it does | Cost |
|---|---|---|
screen_address | Screens 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_narrativeread | Returns 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_historyread | Lists 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_historyread | Lists 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_runsread | Differences 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_eventsread | Lists 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_balanceread | Returns 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
Multi-tool workflows
Example response
What a screen returns
Reputable Address
{
"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
{
"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.