com.blockscout/mcp-server
com.blockscout/mcp-server
MCP server for Blockscout
Status
Healthy
Score
75.3
Transport
streamable-http
Tools
16
Production readiness
Verdict
Needs remediation
Current validation evidence shows operational or discovery gaps that should be fixed first.
Critical alerts
0
Production verdicts degrade quickly when critical alerts are active.
Evidence confidence
Confidence score
65.0
Based on 20 recent validations, 26 captured checks, and validation age of 605.5 hours.
Live checks captured
26
More direct checks increase trust in the current verdict.
Validation age
605.5h
Lower age means fresher evidence.
Recommended for
Claude Desktop
Claude Desktop is marked compatible with score 100.
Smithery
Smithery is marked compatible with score 80.
Generic Streamable HTTP
Generic Streamable HTTP is marked compatible with score 100.
Client readiness verdicts
Ready for ChatGPT custom connector
Partial
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.
Confidence: medium (65.0)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
initialize• OKtools_list• OKtransport_compliance_probe• Warningstep_up_auth_probe• Missingconnector_replay_probe• OK — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Ready for Claude remote MCP
Ready
No major blockers detected.
Confidence: medium (65.0)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
initialize• OKtools_list• OKtransport_compliance_probe• Warning
Unsafe for write actions
Yes
High-risk write, exec, or destructive tools need stronger auth and confirmation semantics.
Confidence: medium (65.0)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history
Disagreements: none
action_safety_probe• Error
Snapshot churn risk
Low
No material tool-surface churn detected in the latest comparison.
Confidence: medium (65.0)
Evidence provenance
Winner: history
Supporting sources: history, live_validation
Disagreements: none
tool_snapshot_probe• OKconnector_replay_probe• OK
Why not ready by client
ChatGPT custom connector
Partial
Remediation checklist
- No explicit blockers recorded.
Claude remote MCP
Ready
Remediation checklist
- No explicit blockers recorded.
Write-safe publishing
Blocked
Remediation checklist
- No explicit blockers recorded.
Verdict traces
Production verdict
Needs remediation
Current validation evidence shows operational or discovery gaps that should be fixed first.
Confidence: medium (65.0)
Winning source: live_validation
Triggering alerts
validation_stale• medium • Validation evidence is stale
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Partial | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Ready | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Yes | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Low | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
ChatGPT custom connector publishability
Caution
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Claude remote MCP publishability
Ready
Transport, discovery, and remote-MCP assumptions are satisfied.
- Search Fetch Only: No
- Write Actions Present: Yes
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
ChatGPT custom connector fixture
Degraded
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.
- remote_http_endpoint: Passes
- oauth_discovery: Degraded
- frozen_tool_snapshot_refresh: Passes
- request_association: Passes
Anthropic remote MCP fixture
Passes
Remote MCP transport and discovery assumptions are satisfied.
- remote_transport: Passes
- tool_discovery: Passes
- auth_connect: Passes
- safe_write_review: Degraded
Authenticated validation sessions
Latest profile
remote_mcp
Authenticated session used
Public score isolation
Preview endpoint
/v1/verifyCI preview endpoint
/v1/ci/previewPublic server reputation
Validation success 7d
n/a
Validation success 30d
1.0
Mean time to recover
n/a
Breaking diffs 30d
0
Registry drift frequency 30d
0
Snapshot changes 30d
0
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| Apr 09, 2026 12:26:01 AM UTC | Latest validation: healthy | Score 75.3 with status healthy. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://blockscout.com
- Docs: none
- Support: none
- Icon: none
- Remote endpoint: https://mcp.blockscout.com/mcp
- Server card: none
Use-case taxonomy
development database search web
Security posture
Tools analyzed
16
High-risk tools
1
Destructive tools
0
Exec tools
1
Egress tools
1
Secret tools
8
Bulk-access tools
5
Risk distribution
low:4, medium:11, critical:1
Tool capability & risk inventory
| Tool | Capabilities | Risk | Findings | Notes |
|---|---|---|---|---|
__unlock_blockchain_analysis__ |
secrets | Medium | secret material access | No explicit safeguard hints detected. |
get_block_info |
read network | Medium | none | No explicit safeguard hints detected. |
get_block_number |
read | Low | none | No explicit safeguard hints detected. |
get_address_by_ens_name |
read | Low | none | No explicit safeguard hints detected. |
get_transactions_by_address |
read write secrets export | Medium | bulk data access secret material access | Safeguards hinted in metadata. |
get_token_transfers_by_address |
read secrets export | Medium | bulk data access secret material access | Safeguards hinted in metadata. |
lookup_token_by_symbol |
read secrets | Medium | secret material access | No explicit safeguard hints detected. |
get_contract_abi |
read | Low | none | No explicit safeguard hints detected. |
inspect_contract_code |
read filesystem | Low | none | No explicit safeguard hints detected. |
read_contract |
read write | Medium | none | No explicit safeguard hints detected. |
get_address_info |
read secrets | Medium | secret material access | No explicit safeguard hints detected. |
get_tokens_by_address |
read secrets export | Medium | bulk data access secret material access | Safeguards hinted in metadata. |
nft_tokens_by_address |
read network secrets export | Medium | bulk data access secret material access | Safeguards hinted in metadata. |
get_transaction_info |
read write network secrets | Medium | secret material access | No explicit safeguard hints detected. |
get_chains_list |
read network | Medium | none | No explicit safeguard hints detected. |
direct_api_call |
read write exec network filesystem export | Critical | command execution arbitrary network egress bulk data access freeform input surface filesystem mutation | Safeguards hinted in metadata. |
Write-action governance
Governance status
Error
Safe to publish
Auth boundary
public_or_unclear
Blast radius
High
High-risk tools
1
Confirmation signals
none
Safeguard count
5
Status detail: 1 high-risk tool(s), 1 exec-capable tool(s) are exposed without a clear auth boundary; 5 safeguard(s) and 0 confirmation signal(s) detected.
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
direct_api_call |
Critical | command execution arbitrary network egress bulk data access freeform input surface filesystem mutation | yes |
Action-controls diff
Snapshot changed
no
Disabled-by-default candidates
none
Manual review candidates
none
New actions
| Action | Risk | Flags |
|---|---|---|
| No newly added actions. | ||
Changed actions
| Action | Change types | Risk |
|---|---|---|
| No materially changed actions. | ||
Why this score?
Access & Protocol
32/44
Connectivity, auth, and transport expectations for common clients.
Interface Quality
38/56
How well the tool/resource interface communicates and behaves under automation.
Security Posture
27/36
How safely the exposed tool surface handles destructive actions, egress, execution, secrets, and risky inputs.
Reliability & Trust
23/24
Operational stability, consistency, and trustworthiness over time.
Discovery & Governance
21.5/28
How well the server is documented, listed, and governed in public registries.
Adoption & Market
6/8
Adoption clues and public evidence that the server is intended for external use.
Algorithmic score breakdown
Auth Operability
2/4
Measures whether auth discovery and protected access behave predictably for clients.
Error Contract Quality
0/4
Grades machine-readable error structure, status alignment, and remediation hints.
Rate-Limit Semantics
2/4
Checks whether quota/throttle responses are deterministic and automation-friendly.
Schema Completeness
3/4
Completeness of tool descriptions, parameter docs, examples, and schema shape.
Backward Compatibility
4/4
Stability score across tool schema/name drift relative to prior validations.
SLO Health
3/4
Availability, latency, and burst-failure profile across recent validation history.
Security Hygiene
3/4
HTTPS posture, endpoint hygiene, and response-surface hardening checks.
Task Success
4/4
Can an agent reliably initialize, enumerate tools, and execute core MCP flows?
Trust Confidence
4/4
Confidence-adjusted reliability score that penalizes low evidence volume.
Abuse/Noise Resilience
4/4
How well the server preserves core behavior in the presence of noisy traffic patterns.
Prompt Contract
2/4
Quality of prompt metadata, argument shape, and prompt discoverability for clients.
Resource Contract
2/4
How completely resources and resource templates describe URIs, types, and usage shape.
Discovery Metadata
3/4
Homepage, docs, icon, repository, support, and license coverage for directory consumers.
Registry Consistency
2/4
Agreement between stored registry metadata, live server-card data, and current validation output.
Installability
4/4
How cleanly a real client can connect, initialize, enumerate tools, and proceed through auth.
Session Semantics
4/4
Determinism and state behavior across repeated MCP calls, including sticky-session surprises.
Tool Surface Design
4/4
Naming clarity, schema ergonomics, and parameter complexity across the tool surface.
Result Shape Stability
4/4
Stability of declared output schemas across validations, with penalties for drift or missing shapes.
OAuth Interop
3/4
Depth and client compatibility of OAuth/OIDC metadata beyond the minimal protected-resource check.
Recovery Semantics
0/4
Whether failures include actionable machine-readable next steps such as retry or upgrade guidance.
Maintenance Signal
4/4
Versioning, update recency, and historical validation cadence that indicate active stewardship.
Adoption Signal
3/4
Directory presence and distribution clues that suggest the server is intended for external use.
Freshness Confidence
4/4
Confidence that recent validations are current enough and dense enough to trust operationally.
Transport Fidelity
4/4
Whether declared transport metadata matches the observed endpoint behavior and response formats.
Spec Recency
2/4
How close the server’s claimed MCP protocol version is to the latest known public revision.
Session Resume
3/4
Whether Streamable HTTP session identifiers and resumed requests behave cleanly for real clients.
Step-Up Auth
3/4
Whether OAuth metadata and WWW-Authenticate challenges support granular, incremental consent instead of broad upfront scopes.
Transport Compliance
2/4
Checks session headers, protocol-version enforcement, session teardown, and expired-session behavior.
Utility Coverage
2/4
Signals support for completions, pagination, and task-oriented utility surfaces that larger clients increasingly expect.
Advanced Capability Coverage
3/4
Coverage of newer MCP surfaces like roots, sampling, elicitation, structured output, and related metadata.
Connector Publishability
3/4
How ready the server looks for client catalogs and managed connector programs.
Tool Snapshot Churn
4/4
Stability of the tool surface across recent validations, including add/remove and output-shape drift.
Connector Replay
4/4
Whether a previously published frozen connector snapshot would remain backward compatible after the latest tool refresh.
Request Association
3/4
Whether roots, sampling, and elicitation appear tied to active client requests instead of arriving unsolicited on idle sessions.
Interactive Flow Safety
3/4
Whether prompts and docs steer users toward safe auth flows instead of pasting secrets directly.
Action Safety
2/4
Risk-weighted view of destructive, exec, egress, and confirmation semantics across the tool surface.
Official Registry Presence
4/4
Whether the server appears directly or indirectly in the official MCP registry.
Provenance Divergence
4/4
How closely official registry metadata, the live server card, and public repo/package signals agree with each other.
Safety Transparency
2/4
Clarity of docs, auth disclosure, support links, and other trust signals visible to integrators.
Tool Capability Clarity
4/4
How clearly the tool surface communicates whether each action reads, writes, deletes, executes, or exports data.
Destructive Operation Safety
3/4
Penalizes delete/revoke/destroy style tools unless auth and safeguards reduce blast radius.
Egress / SSRF Resilience
3/4
Assesses arbitrary URL fetch, crawl, webhook, and remote-request exposure on the tool surface.
Execution / Sandbox Safety
2/4
Evaluates shell, code, script, and command-execution exposure and whether that surface appears contained.
Data Exfiltration Resilience
4/4
Assesses export, dump, backup, and bulk-read behavior against the surrounding auth and safeguard signals.
Least Privilege Scope
2/4
Rewards scoped auth metadata and penalizes broad or missing scopes around privileged tools.
Secret Handling Hygiene
4/4
Assesses secret-bearing tools, token leakage risk, and whether the public surface avoids obvious secret exposure.
Supply Chain Signal
2.5/4
Public metadata signal for repository, changelog, license, versioning, and recency that supports supply-chain trust.
Input Sanitization Safety
3/4
Penalizes risky freeform string inputs when schemas do not constrain URLs, code, paths, queries, or templates.
Tool Namespace Clarity
4/4
Measures naming uniqueness and ambiguity across the tool namespace to reduce collision and confusion risk.
Compatibility profiles
OpenAI Connectors
77.8
partial
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.
Connector URL: https://mcp.blockscout.com/mcp # No OAuth metadata detected. # Server: com.blockscout/mcp-server
Claude Desktop
100.0
compatible
No major blockers detected.
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.blockscout.com/mcp"]
}
}
}
Smithery
80.0
compatible
Machine-readable failure semantics should be present.
smithery mcp add "https://mcp.blockscout.com/mcp"
Generic Streamable HTTP
100.0
compatible
No major blockers detected.
curl -sS https://mcp.blockscout.com/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| High | Add confirmation and dry-run semantics for risky actions | High-risk write, delete, exec, or egress tools should communicate safeguards clearly. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Associate roots, sampling, and elicitation with active client requests | Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Expose /.well-known/oauth-protected-resource | Without a protected-resource document, OAuth clients cannot discover auth requirements reliably. | Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.Playbook
|
| High | Publish OAuth authorization-server metadata | Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. | Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.Playbook
|
| High | Publish a complete server card | Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals. | Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.Playbook
|
| High | Stop asking users to paste secrets directly | Public MCP servers should prefer OAuth or browser-based auth guidance over in-band secret collection. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Respond to validation evidence is stale | Latest validation is 605.5 hours old. | Trigger a fresh validation run or increase scheduler priority for this server.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Recovery Semantics | 0/4 | -4.0 |
| Error Contract | 0/4 | -4.0 |
| Utility Coverage | 2/4 | -2.0 |
| Transport Compliance | 2/4 | -2.0 |
| Spec Recency | 2/4 | -2.0 |
| Safety Transparency | 2/4 | -2.0 |
| Resource Contract | 2/4 | -2.0 |
| Registry Consistency | 2/4 | -2.0 |
| Rate Limit Semantics | 2/4 | -2.0 |
| Prompt Contract | 2/4 | -2.0 |
| Least Privilege Scope | 2/4 | -2.0 |
| Execution Sandbox Safety | 2/4 | -2.0 |
Validation diff
Score delta
0
Summary changed
no
Tool delta
0
Prompt delta
0
Auth mode changed
no
Write surface expanded
no
Protocol regressed
no
Registry drift changed
no
Regressed checks: none
Improved checks: none
| Component | Previous | Latest | Delta |
|---|---|---|---|
| No component deltas between the latest two runs. | |||
Tool snapshot diff & changelog
Snapshot changed
no
Added tools
none
Removed tools
none
Required-argument changes
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument changes detected. | ||
Output-schema drift
| Tool | Previous properties | Latest properties |
|---|---|---|
| No output-schema drift detected. | ||
Connector replay
Status
OK
Backward compatible
Would break after refresh
Added tools
none
Removed tools
none
Additive output changes
none
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Transport compliance drilldown
Probe status
Warning
Transport
streamable-http
Session header
no
Protocol header
no
Bad protocol response
400
DELETE teardown
n/a
Expired session retry
n/a
Last-Event-ID visible
no
Issues: missing_session_id, missing_protocol_header
Request association
Status
Missing
Advertised capabilities
none
Observed idle methods
none
Violating methods
none
Probe HTTP status
n/a
Issues
none
Utility coverage
Probe status
Missing
Completions
not detected
Completion probe target: none
Pagination
not detected
No nextCursor evidence.
Tasks
Missing
Advertised: no
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Passes |
|
| Read-only fetch flow | Degraded |
|
| OAuth-required connect | Degraded |
|
| Safe write flow with confirmation | Likely to fail |
|
Registry & provenance divergence
Probe status
OK
Direct official match
yes
Drift fields
none
| Field | Registry | Live server card |
|---|---|---|
| Title | n/a | n/a |
| Version | n/a | n/a |
| Homepage | n/a | n/a |
Active alerts
- Validation evidence is stale (medium)
Latest validation is 605.5 hours old.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
com.blockscout/mcp-server |
official_registry | yes | 75.26 |
blockscout/mcp-server |
smithery_registry | no | 45.62 |
Alias consolidation
Canonical identifier
com.blockscout/mcp-server
Duplicate aliases
1
Registry sources
official_registry smithery_registry
Remote URLs
Homepages
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| Registry source | Multiple registries or registry sync paths claim this same canonical server. | official_registry smithery_registry |
| Registry identifier | Different registry-specific identifiers resolve to the same canonical server record here. | com.blockscout/mcp-server smithery_registry:ca071d62-e937-40e0-a596-2d2d153d9399 |
Install snippets
Openai Connectors
Connector URL: https://mcp.blockscout.com/mcp # No OAuth metadata detected. # Server: com.blockscout/mcp-server
Claude Desktop
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.blockscout.com/mcp"]
}
}
}
Smithery
smithery mcp add "https://mcp.blockscout.com/mcp"
Generic Http
curl -sS https://mcp.blockscout.com/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
Live server tools
__unlock_blockchain_analysis__ get_block_info get_block_number get_address_by_ens_name get_transactions_by_address get_token_transfers_by_address lookup_token_by_symbol get_contract_abi
Observed from the latest live validation against https://mcp.blockscout.com/mcp. This is the target server surface, not Verify's own inspection tools.
Live capability counts
16 tools • 0 prompts • 0 resources
Counts come from the latest
tools/list, prompts/list, and resources/list checks.Inspect with Verify
search_servers recommend_servers get_server_report compare_servers
Use Verify itself to search, recommend, compare, and fetch the full report for
com.blockscout/mcp-server.Direct machine links
Claims & monitoring
Server ownership
No verified maintainer claim recorded.
Watch subscriptions
0
Teams: none
Alert routing
Active watches
0
Generic webhooks
0
Slack routes
0
Teams routes
0
Email routes
0
| Watch | Team | Channels | Minimum severity |
|---|---|---|---|
| No active watch destinations. | |||
Maintainer analytics
Validation Run Count
20
Average Latency Ms
2922.35
Healthy Run Ratio Recent
1.0
Registry Presence Count
2
Active Alert Count
1
Watcher Count
0
Verified Claim
False
Taxonomy Tags
development, database, search, web
Score Trend
75.26, 75.26, 75.26, 75.26, 75.26, 75.26, 75.26, 75.26, 75.26, 75.26
Remediation Count
15
High Risk Tool Count
1
Destructive Tool Count
0
Exec Tool Count
1
Maintainer response quality
Score
16.67
Verified claim
Support contact
Changelog present
Incident notes present
Tool changes documented
Annotation history
Annotation count
0
Maintainer annotations
No maintainer annotations have been recorded yet.
Maintainer rebuttals & expected behavior
No maintainer rebuttals or expected-behavior overrides are recorded yet.
Latest validation evidence
Latest summary
Healthy
Validation profile
remote_mcp
Started
Apr 09, 2026 12:25:58 AM UTC
Latency
2966.7 ms
Failures
oauth_authorization_serverno authorization serveroauth_protected_resourceClient error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404openid_configurationno authorization serverserver_cardClient error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
Error | n/a | 1 high-risk, 1 exec-capable tool(s); no clear auth boundary; safeguards=5; confirmation=none. |
advanced_capabilities_probe |
Warning | n/a | Only 3 capability signal(s): prompts, resources, structured outputs. |
connector_publishability_probe |
Warning | n/a | Publishability blockers: action safety, server card. |
connector_replay_probe |
OK | n/a | Backward compatible with no breaking tool-surface changes. |
determinism_probe |
OK | 424.5 ms | Check completed |
initialize |
OK | 289.7 ms | Protocol 2025-03-26 |
interactive_flow_probe |
Missing | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
Error | 156.0 ms | Client error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
official_registry_probe |
OK | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 181.7 ms | Fetched https://mcp.blockscout.com/robots.txt |
prompt_get |
Missing | n/a | not advertised |
prompts_list |
OK | 169.4 ms | 0 prompt(s) exposed |
protocol_version_probe |
Warning | n/a | Claims 2025-03-26; 2 release(s) behind 2025-11-25. |
provenance_divergence_probe |
OK | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
Missing | n/a | not advertised |
resources_list |
OK | 206.3 ms | 0 resource item(s) exposed |
server_card |
Error | 198.7 ms | Client error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/mcp/server-card.json' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
session_resume_probe |
Warning | n/a | no session id |
step_up_auth_probe |
Missing | n/a | No OAuth or incremental-scope signals detected. |
tool_snapshot_probe |
OK | n/a | Check completed |
tools_list |
OK | 442.8 ms | 16 tool(s) exposed |
transport_compliance_probe |
Warning | 164.8 ms | Issues: missing session id, missing protocol header (bad protocol=400). |
utility_coverage_probe |
Missing | 154.7 ms | No completions evidence; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [],
"safeguard_count": 5,
"summary": {
"bulk_access_tools": 5,
"capability_distribution": {
"exec": 1,
"export": 5,
"filesystem": 2,
"network": 5,
"read": 15,
"secrets": 8,
"write": 4
},
"destructive_tools": 0,
"egress_tools": 1,
"exec_tools": 1,
"high_risk_tools": 1,
"risk_distribution": {
"critical": 1,
"high": 0,
"low": 4,
"medium": 11
},
"secret_tools": 8,
"tool_count": 16
}
},
"latency_ms": null,
"status": "error"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": true,
"resource_links": false,
"resources": true,
"roots": false,
"sampling": false,
"structured_outputs": true
},
"enabled": [
"prompts",
"resources",
"structured_outputs"
],
"enabled_count": 3,
"initialize_capability_keys": [
"experimental",
"prompts",
"resources",
"tools"
]
},
"latency_ms": null,
"status": "warning"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"action_safety",
"server_card"
],
"criteria": {
"action_safety": false,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": true,
"tools_list": true,
"transport_compliance": true
},
"high_risk_tools": 1,
"tool_count": 16,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"connector_replay_probe": {
"details": {
"added_tools": [],
"additive_output_changes": [],
"backward_compatible": true,
"output_breaks": [],
"removed_tools": [],
"required_arg_breaks": [],
"would_break_after_refresh": false
},
"latency_ms": null,
"status": "ok"
},
"determinism_probe": {
"details": {
"attempts": 2,
"baseline_signature": "0cadb38a3479646f32194f91af371e35d7fd25c1942b5f21543f86cfe241276c",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 424.51,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"experimental": {},
"prompts": {
"listChanged": false
},
"resources": {
"listChanged": false,
"subscribe": false
},
"tools": {
"listChanged": false
}
},
"instructions": "\nBlockscout MCP server version: 0.15.0\n\n<error_handling_rules>\nIf you receive an error \"500 Internal Server Error\" for any tool, retry calling this tool up to 3 times \nuntil successful.\n</error_handling_rules>\n\n<chain_id_guidance>\n<rules>\nAll Blockscout API tools require a chain_id parameter:\n- If the chain ID to be used in the tools is not clear, use the tool `get_chains_list` to get chain IDs \nof all known chains.\n- If no chain is specified in the user's prompt, assume \"Ethereum Mainnet\" (chain_id: 1) as the default.\n</rules>\n<recommended_chains>\nHere is the list of IDs of most popular chains:\n * Ethereum: 1\n * Polygon PoS: 137\n * Base: 8453\n * Arbitrum One Nitro: 42161\n * OP Mainnet: 10\n * ZkSync Era: 324\n * Gnosis: 100\n * Celo: 42220\n * Scroll: 534352\n</recommended_chains>\n</chain_id_guidance>\n\n<pagination_rules>\nPAGINATION HANDLING: When any tool response includes a 'pagination' field, this means there are additional \npages of data available. You MUST use the exact tool call provided in 'pagination.next_call' to fetch the \nnext page. The 'pagination.next_call' contains the complete tool name and all required parameters (including \nthe cursor) for the next page request.\n\nIf the user asks for comprehensive data or 'all' results, and you receive a paginated response, continue \ncalling the pagination tool calls until you have gathered all available data or reached a reasonable limit.\n</pagination_rules>\n\n<time_based_query_rules>\nTIME-BASED QUERIES: When users ask for blockchain data with time constraints (before/after/between \nspecific dates), start with transaction-level tools that support time filtering (`get_transactions_by_address`, \n`get_token_transfers_by_address`) rather than trying to filter other data types directly. Use `age_from` and \n`age_to` parameters to filter transactions by time, then retrieve associated data (logs, token transfers, etc.) \nfrom those specific transactions.\n</time_based_query_rules>\n\n<binary_search_rules>\nBINARY SEARCH FOR HISTORICAL BLOCKCHAIN DATA: Never paginate for temporal boundaries. Use binary search \nwith `age_from`/`age_to` parameters to efficiently locate specific time periods or events in blockchain history.\n\n## Pattern:\n```\nget_transactions_by_address(age_from: START, age_to: MID)\n\u251c\u2500\u2500 Results found \u2192 search earlier half: [START, MID] \n\u2514\u2500\u2500 No results \u2192 search later half: [MID, END]\n```\n\n## Example: First transaction for vitalik.eth\n```\n1. get_transactions_by_address(age_from: \"2015-07-30\", age_to: \"2015-12-31\") \u2192 \u2713 \n2. get_transactions_by_address(age_from: \"2015-07-30\", age_to: \"2015-09-12\") \u2192 \u2717\n3. get_transactions_by_address(age_from: \"2015-09-12\", age_to: \"2015-10-03\") \u2192 \u2713\n4. get_transactions_by_address(age_from: \"2015-09-27\", age_to: \"2015-09-30\") \u2192 \u2713 \n Found: 2015-09-28T08:24:43Z\n5. get_transactions_by_address(age_from: \"2015-07-30\", age_to: \"2015-09-28T08:24:42\") \u2192 \u2717\n Confirmed: This is the first transaction.\n```\n\n**Result: 5 API calls instead of potentially hundreds of pagination calls.**\n</binary_search_rules>\n\n<portfolio_analysis_rules>\nPORTFOLIO BALANCE ANALYSIS: When asked to analyze a portfolio, net worth, or total assets for any address, you\nMUST check BOTH native-coin data AND ERC-20 token data. Call `get_address_info` (native coin) AND\n`get_tokens_by_address` (ERC-20 holdings) before answering. When ranking or selecting top tokens by USD value,\nyou MUST include the native coin balance (from `get_address_info`) as a candidate alongside ERC-20 holdings.\nChecking only one results in an incomplete and incorrect analysis.\n</portfolio_analysis_rules>\n\n<funds_movement_rules>\nFUNDS MOVEMENT ANALYSIS: When asked about funds movement, recent transfers, or transaction activity for any\naddress, you MUST check BOTH native-coin transfers AND ERC-20 token transfers. Call\n`get_transactions_by_address` (native coin transfers) AND `get_token_transfers_by_address` (ERC-20 transfers)\nbefore answering. Do not assume that \"transactions\" implies native coin only. Checking only one results in an\nincomplete and incorrect analysis.\n</funds_movement_rules>\n\n<data_ordering_and_resumption_rules>\nDATA ORDERING AND ANCHOR RESUMPTION: Time-ordered tools (transactions, token transfers, logs) return items in\nDESCENDING order (newest first). When resuming from an anchor item, use the anchor's block as the time boundary\nand client-side filter.\nNever skip the anchor's block.\n\nOrdering Keys (DESC):\n- get_transactions_by_address: (block_number, transaction_index, internal_transaction_index)\n- get_token_transfers_by_address: (block_number, transaction_index, token_transfer_batch_index, token_transfer_index)\n- direct_api_call (logs): (block_number, index) # index is global within block\n\nResume Pattern:\n\u2022 For EARLIER items: age_to=anchor_block_timestamp, keep where ordering_key < anchor_key\n\u2022 For LATER items: age_from=anchor_block_timestamp, keep where ordering_key > anchor_key\n\nExample: Found transfer at (block=1000, tx_idx=5, transfer_idx=3). To find earlier transfers:\n Query: age_to=timestamp_of_block_1000\n Filter: keep only (block<1000) OR (block=1000 AND tx_idx<5) OR (block=1000 AND tx_idx=5 AND transfer_idx<3)\n\nCritical Notes:\n- Always compare the COMPLETE ordering key, not just block_number.\n- If the anchor is in the boundary block, filter within that block to avoid duplicates or gaps.\n</data_ordering_and_resumption_rules>\n\n<direct_call_endpoint_list>\nADVANCED API USAGE: For specialized or chain-specific data not covered by other tools,\nyou can use `direct_api_call`. This tool can call a curated list of raw Blockscout API endpoints.\n\n<common>\n<group name=\"Stats\">\n\"/stats-service/api/v1/counters\" - \"Get consolidated historical and recent-window counters\u2014totals and 24h/30m rollups for blockchain activity (transactions, accounts, contracts, verified contracts, ERC-4337 user ops), plus average block time and fee aggregates\"\n\"/api/v2/stats\" - \"Get real-time network status and market context\u2014current gas price tiers with last-update and next-update timing, network utilization, today's transactions, average block time 'now', and coin price/market cap.\"\n</group>\n<group name=\"User Operations\">\n\"/api/v2/proxy/account-abstraction/operations/{user_operation_hash}\" - \"Get details for a specific User Operation by its hash.\"\n</group>\n<group name=\"Transactions\">\n\"/api/v2/transactions/{transaction_hash}/logs\" - \"Get event logs for a specific transaction by its hash.\"\n</group>\n<group name=\"Tokens & NFTs\">\n\"/api/v2/tokens/{token_contract_address}/instances\" - \"Get all NFT instances for a given token contract address.\"\n\"/api/v2/tokens/{token_contract_address}/holders\" - \"Get a list of holders for a given token.\"\n\"/api/v2/tokens/{token_contract_address}/instances/{instance_id}\" - \"Get details for a specific NFT instance.\"\n\"/api/v2/tokens/{token_contract_address}/instances/{instance_id}/transfers\" - \"Get transfer history for a specific NFT instance.\"\n</group>\n</common>\n\n<specific>\n<chain_family name=\"Ethereum Mainnet and Gnosis\">\n\"/api/v2/addresses/{account_address}/beacon/deposits\" - \"Get Beacon Chain deposits for a specific address.\"\n\"/api/v2/blocks/{block_number}/beacon/deposits\" - \"Get Beacon Chain deposits for a specific block.\"\n\"/api/v2/addresses/{account_address}/withdrawals\" - \"Get Beacon Chain withdrawals for a specific address.\"\n\"/api/v2/blocks/{block_number}/withdrawals\" - \"Get Beacon Chain withdrawals for a specific block.\"\n</chain_family>\n<chain_family name=\"Arbitrum\">\n\"/api/v2/main-page/arbitrum/batches/latest-number\" - \"Get the latest committed batch number for Arbitrum.\"\n\"/api/v2/arbitrum/batches/{batch_number}\" - \"Get information for a specific Arbitrum batch.\"\n\"/api/v2/arbitrum/messages/to-rollup\" - \"Get L1 to L2 messages for Arbitrum.\"\n\"/api/v2/arbitrum/messages/from-rollup\" - \"Get L2 to L1 messages for Arbitrum.\"\n\"/api/v2/arbitrum/messages/withdrawals/{transaction_hash}\" - \"Get L2 to L1 messages for a specific transaction hash on Arbitrum.\"\n</chain_family>\n<chain_family name=\"Optimism\">\n\"/api/v2/optimism/batches\" - \"Get the latest committed batches for Optimism.\"\n\"/api/v2/optimism/batches/{batch_number}\" - \"Get information for a specific Optimism batch.\"\n\"/api/v2/optimism/games\" - \"Get dispute games for Optimism.\"\n\"/api/v2/optimism/deposits\" - \"Get L1 to L2 messages (deposits) for Optimism.\"\n\"/api/v2/optimism/withdrawals\" - \"Get L2 to L1 messages (withdrawals) for Optimism.\"\n</chain_family>\n<chain_family name=\"Celo\">\n\"/api/v2/celo/epochs\" - \"Get the latest finalized epochs for Celo.\"\n\"/api/v2/celo/epochs/{epoch_number}\" - \"Get information for a specific Celo epoch.\"\n\"/api/v2/celo/epochs/{epoch_number}/election-rewards/group\" - \"Get validator group rewards for a specific Celo epoch.\"\n\"/api/v2/celo/epochs/{epoch_number}/election-rewards/validator\" - \"Get validator rewards for a specific Celo epoch.\"\n\"/api/v2/celo/epochs/{epoch_number}/election-rewards/voter\" - \"Get voter rewards for a specific Celo epoch.\"\n</chain_family>\n<chain_family name=\"zkSync\">\n\"/api/v2/main-page/zksync/batches/latest-number\" - \"Get the latest committed batch number for zkSync.\"\n\"/api/v2/zksync/batches/{batch_number}\" - \"Get information for a specific zkSync batch.\"\n</chain_family>\n<chain_family name=\"zkEVM\">\n\"/api/v2/zkevm/batches/confirmed\" - \"Get the latest confirmed batches for zkEVM.\"\n\"/api/v2/zkevm/batches/{batch_number}\" - \"Get information for a specific zkEVM batch.\"\n\"/api/v2/zkevm/deposits\" - \"Get deposits for zkEVM.\"\n\"/api/v2/zkevm/withdrawals\" - \"Get withdrawals for zkEVM.\"\n</chain_family>\n<chain_family name=\"Scroll\">\n\"/api/v2/scroll/batches\" - \"Get the latest committed batches for Scroll.\"\n\"/api/v2/scroll/batches/{batch_number}\" - \"Get information for a specific Scroll batch.\"\n\"/api/v2/blocks/scroll-batch/{batch_number}\" - \"Get blocks for a specific Scroll batch.\"\n\"/api/v2/scroll/deposits\" - \"Get L1 to L2 messages (deposits) for Scroll.\"\n\"/api/v2/scroll/withdrawals\" - \"Get L2 to L1 messages (withdrawals) for Scroll.\"\n</chain_family>\n<chain_family name=\"Shibarium\">\n\"/api/v2/shibarium/deposits\" - \"Get L1 to L2 messages (deposits) for Shibarium.\"\n\"/api/v2/shibarium/withdrawals\" - \"Get L2 to L1 messages (withdrawals) for Shibarium.\"\n</chain_family>\n<chain_family name=\"Stability\">\n\"/api/v2/validators/stability\" - \"Get the list of validators for Stability.\"\n</chain_family>\n<chain_family name=\"Zilliqa\">\n\"/api/v2/validators/zilliqa\" - \"Get the list of validators for Zilliqa.\"\n\"/api/v2/validators/zilliqa/{validator_public_key}\" - \"Get information for a specific Zilliqa validator.\"\n</chain_family>\n<chain_family name=\"Redstone\">\n\"/api/v2/mud/worlds\" - \"Get a list of MUD worlds for Redstone.\"\n\"/api/v2/mud/worlds/{contract_address}/tables\" - \"Get tables for a specific MUD world on Redstone.\"\n\"/api/v2/mud/worlds/{contract_address}/tables/{table_id}/records\" - \"Get records for a specific MUD world table on Redstone.\"\n\"/api/v2/mud/worlds/{contract_address}/tables/{table_id}/records/{record_id}\" - \"Get a specific record from a MUD world table on Redstone.\"\n</chain_family>\n</specific>\n</direct_call_endpoint_list>\n",
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "blockscout-mcp-server",
"version": "1.26.0"
}
}
},
"url": "https://mcp.blockscout.com/mcp"
},
"latency_ms": 289.73,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "missing"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.blockscout.com/.well-known/oauth-protected-resource"
},
"latency_ms": 155.96,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": true,
"official_peer_count": 1,
"registry_identifier": "com.blockscout/mcp-server",
"registry_source": "official_registry"
},
"latency_ms": null,
"status": "ok"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 404,
"url": "https://mcp.blockscout.com/robots.txt"
},
"latency_ms": 181.72,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 3,
"jsonrpc": "2.0",
"result": {
"prompts": []
}
},
"url": "https://mcp.blockscout.com/mcp"
},
"latency_ms": 169.38,
"status": "ok"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": true,
"drift_fields": [],
"metadata_document_count": 2,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 5,
"jsonrpc": "2.0",
"result": {
"resources": []
}
},
"url": "https://mcp.blockscout.com/mcp"
},
"latency_ms": 206.35,
"status": "ok"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.blockscout.com/.well-known/mcp/server-card.json"
},
"latency_ms": 198.72,
"status": "error"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"reason": "no_session_id",
"resume_expected": true,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "warning"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"added": [],
"changed_outputs": [],
"current_tool_count": 16,
"previous_tool_count": 16,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"_meta": {
"openai/toolInvocation/invoked": "Blockchain analysis ready",
"openai/toolInvocation/invoking": "Initializing blockchain analysis..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "Unlocks access to other MCP tools.\n\n All tools remain locked with a \"Session Not Initialized\" error until this\n function is successfully called. Skipping this explicit initialization step\n will cause all subsequent tool calls to fail.\n\n MANDATORY FOR AI AGENTS: The returned instructions contain ESSENTIAL rules\n that MUST govern ALL blockchain data interactions. Failure to integrate these\n rules will result in incorrect data retrieval, tool failures and invalid\n responses. Always apply these guidelines when planning queries, processing\n responses or recommending blockchain actions.\n\n COMPREHENSIVE DATA SOURCES: Provides an extensive catalog of specialized\n blockchain endpoints to unlock sophisticated, multi-dimensional blockchain\n investigations across all supported networks.\n ",
"inputSchema": {
"properties": {},
"title": "__unlock_blockchain_analysis__Arguments",
"type": "object"
},
"name": "__unlock_blockchain_analysis__",
"outputSchema": {
"$defs": {
"ChainIdGuidance": {
"description": "A structured representation of chain ID guidance combining rules and recommendations.",
"properties": {
"recommended_chains": {
"description": "A list of popular chains with their names and IDs, useful for quick lookups.",
"items": {
"$ref": "#/$defs/ChainInfo"
},
"title": "Recommended Chains",
"type": "array"
},
"rules": {
"description": "Rules for chain ID selection and usage.",
"title": "Rules",
"type": "string"
}
},
"required": [
"rules",
"recommended_chains"
],
"title": "ChainIdGuidance",
"type": "object"
},
"ChainInfo": {
"description": "Represents a blockchain with its essential identifiers.",
"properties": {
"chain_id": {
"description": "The unique identifier for the chain.",
"title": "Chain Id",
"type": "string"
},
"ecosystem": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "The ecosystem the chain belongs to, if applicable (e.g., 'Ethereum').",
"title": "Ecosystem"
},
"is_testnet": {
"description": "Indicates if the chain is a testnet.",
"title": "Is Testnet",
"type": "boolean"
},
"name": {
"description": "The common name of the blockchain (e.g., 'Ethereum').",
"title": "Name",
"type": "string"
},
"native_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The native currency symbol of the chain (e.g., 'ETH').",
"title": "Native Currency"
},
"settlement_layer_chain_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The L1 chain ID where this rollup settles, if applicable.",
"title": "Settlement Layer Chain Id"
}
},
"required": [
"name",
"chain_id",
"is_testnet",
"native_currency",
"ecosystem"
],
"title": "ChainInfo",
"type": "object"
},
"DirectApiCommonGroup": {
"description": "Represents a group of common endpoints available on all chains.",
"properties": {
"endpoints": {
"description": "List of endpoints in this group.",
"items": {
"$ref": "#/$defs/DirectApiEndpoint"
},
"title": "Endpoints",
"type": "array"
},
"group": {
"description": "The functional group name (e.g., 'Stats', 'Tokens & NFTs').",
"title": "Group",
"type": "string"
}
},
"required": [
"group",
"endpoints"
],
"title": "DirectApiCommonGroup",
"type": "object"
},
"DirectApiEndpoint": {
"description": "Represents a single direct API endpoint.",
"properties": {
"description": {
"description": "A description of what this endpoint returns.",
"title": "Description",
"type": "string"
},
"path": {
"description": "The API endpoint path (e.g., '/api/v2/stats').",
"title": "Path",
"type": "string"
}
},
"required": [
"path",
"description"
],
"title": "DirectApiEndpoint",
"type": "object"
},
"DirectApiEndpointList": {
"description": "Contains the complete curated list of endpoints for direct_api_call tool.",
"properties": {
"common": {
"description": "Endpoint groups available on all supported chains.",
"items": {
"$ref": "#/$defs/DirectApiCommonGroup"
},
"title": "Common",
"type": "array"
},
"specific": {
"description": "Endpoint groups specific to certain chain families.",
"items": {
"$ref": "#/$defs/DirectApiSpecificGroup"
},
"title": "Specific",
"type": "array"
}
},
"required": [
"common",
"specific"
],
"title": "DirectApiEndpointList",
"type": "object"
},
"DirectApiSpecificGroup": {
"description": "Represents a group of endpoints specific to certain chain families.",
"properties": {
"chain_family": {
"description": "The chain family this group applies to (e.g., 'Arbitrum', 'Optimism').",
"title": "Chain Family",
"type": "string"
},
"endpoints": {
"description": "List of chain-specific endpoints.",
"items": {
"$ref": "#/$defs/DirectApiEndpoint"
},
"title": "Endpoints",
"type": "array"
}
},
"required": [
"chain_family",
"endpoints"
],
"title": "DirectApiSpecificGroup",
"type": "object"
},
"InstructionsData": {
"description": "A structured representation of the server's operational instructions.",
"properties": {
"binary_search_rules": {
"description": "Rules for using binary search for historical blockchain data.",
"title": "Binary Search Rules",
"type": "string"
},
"chain_id_guidance": {
"$ref": "#/$defs/ChainIdGuidance",
"description": "Comprehensive guidance for chain ID selection and usage."
},
"data_ordering_and_resumption_rules": {
"description": "Rules for understanding data ordering and resuming searches from anchor points.",
"title": "Data Ordering And Resumption Rules",
"type": "string"
},
"direct_api_call_rules": {
"description": "Rules and guidance for using the direct_api_call tool.",
"title": "Direct Api Call Rules",
"type": "string"
},
"direct_api_endpoints": {
"$ref": "#/$defs/DirectApiEndpointList",
"description": "Curated list of endpoints available for direct API calls."
},
"error_handling_rules": {
"description": "Rules for handling network errors and retries.",
"title": "Error Handling Rules",
"type": "string"
},
"funds_movement_rules": {
"description": "Rules for analyzing funds movement and transfer activity.",
"title": "Funds Movement Rules",
"type": "string"
},
"pagination_rules": {
"description": "Rules for handling paginated responses and data retrieval.",
"title": "Pagination Rules",
"type": "string"
},
"portfolio_analysis_rules": {
"description": "Rules for conducting comprehensive portfolio analysis.",
"title": "Portfolio Analysis Rules",
"type": "string"
},
"time_based_query_rules": {
"description": "Rules for executing time-based blockchain queries efficiently.",
"title": "Time Based Query Rules",
"type": "string"
},
"version": {
"description": "The version of the Blockscout MCP server.",
"title": "Version",
"type": "string"
}
},
"required": [
"version",
"error_handling_rules",
"chain_id_guidance",
"pagination_rules",
"time_based_query_rules",
"binary_search_rules",
"portfolio_analysis_rules",
"funds_movement_rules",
"data_ordering_and_resumption_rules",
"direct_api_call_rules",
"direct_api_endpoints"
],
"title": "InstructionsData",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/InstructionsData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[InstructionsData]",
"type": "object"
},
"title": "Unlock Blockchain Analysis"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Block information ready",
"openai/toolInvocation/invoking": "Fetching block information..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Get block information like timestamp, gas used, burnt fees, transaction count etc.\n Can optionally include the list of transaction hashes contained in the block. Transaction hashes are omitted by default; request them only when you truly need them, because on high-traffic chains the list may exhaust the context.\n ",
"inputSchema": {
"properties": {
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"include_transactions": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"description": "If true, includes a list of transaction hashes from the block.",
"title": "Include Transactions"
},
"number_or_hash": {
"description": "Block number or hash",
"title": "Number Or Hash",
"type": "string"
}
},
"required": [
"chain_id",
"number_or_hash"
],
"title": "get_block_infoArguments",
"type": "object"
},
"name": "get_block_info",
"outputSchema": {
"$defs": {
"BlockInfoData": {
"additionalProperties": true,
"description": "A structured representation of a block's information.",
"properties": {
"block_details": {
"additionalProperties": true,
"description": "A dictionary containing the detailed properties of the block.",
"title": "Block Details",
"type": "object"
},
"transaction_hashes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of transaction hashes included in the block.",
"title": "Transaction Hashes"
}
},
"required": [
"block_details"
],
"title": "BlockInfoData",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/BlockInfoData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[BlockInfoData]",
"type": "object"
},
"title": "Get Block Information"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Block number ready",
"openai/toolInvocation/invoking": "Fetching latest block number..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Retrieves the block number and timestamp for a specific date/time or the latest block.\n Use when you need a block height for a specific point in time (e.g., \"block at 2024-01-01\")\n or the current chain tip. If `datetime` is provided, finds the block immediately\n preceding that time. If omitted, returns the latest indexed block.\n ",
"inputSchema": {
"properties": {
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"datetime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The date and time (ISO 8601 format, e.g. 2025-05-22T23:00:00.00Z) to find the block for. If omitted, returns the latest block.",
"title": "Datetime"
}
},
"required": [
"chain_id"
],
"title": "get_block_numberArguments",
"type": "object"
},
"name": "get_block_number",
"outputSchema": {
"$defs": {
"BlockNumberData": {
"description": "Represents the essential data for a resolved block number.",
"properties": {
"block_number": {
"description": "The block number (height) in the blockchain",
"title": "Block Number",
"type": "integer"
},
"timestamp": {
"description": "The timestamp when the block was mined (ISO format)",
"title": "Timestamp",
"type": "string"
}
},
"required": [
"block_number",
"timestamp"
],
"title": "BlockNumberData",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/BlockNumberData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[BlockNumberData]",
"type": "object"
},
"title": "Get Block Number"
},
{
"_meta": {
"openai/toolInvocation/invoked": "ENS name resolved",
"openai/toolInvocation/invoking": "Resolving ENS name..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Useful for when you need to convert an ENS domain name (e.g. \"blockscout.eth\")\n to its corresponding Ethereum address.\n ",
"inputSchema": {
"properties": {
"name": {
"description": "ENS domain name to resolve",
"title": "Name",
"type": "string"
}
},
"required": [
"name"
],
"title": "get_address_by_ens_nameArguments",
"type": "object"
},
"name": "get_address_by_ens_name",
"outputSchema": {
"$defs": {
"EnsAddressData": {
"description": "A structured representation of an ENS name resolution.",
"properties": {
"resolved_address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The resolved Ethereum address corresponding to the ENS name, or null if not found.",
"title": "Resolved Address"
}
},
"title": "EnsAddressData",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/EnsAddressData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[EnsAddressData]",
"type": "object"
},
"title": "Get Address by ENS Name"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Transactions ready",
"openai/toolInvocation/invoking": "Fetching transactions..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Retrieves native currency transfers and smart contract interactions (calls, internal txs) for an address.\n **EXCLUDES TOKEN TRANSFERS**: Filters out direct token balance changes (ERC-20, etc.). You'll see calls *to* token contracts, but not the `Transfer` events. For token history, use `get_token_transfers_by_address`.\n A single tx can have multiple records from internal calls; use `internal_transaction_index` for execution order.\n Requires an `age_from` date to scope results for performance and relevance.\n Use cases:\n - `get_transactions_by_address(address, age_from)` - get all txs to/from the address since a given date.\n - `get_transactions_by_address(address, age_from, age_to)` - get all txs to/from the address between given dates.\n - `get_transactions_by_address(address, age_from, age_to, methods)` - get all txs to/from the address between given dates, filtered by method.\n **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.\n ",
"inputSchema": {
"properties": {
"address": {
"description": "Address which either sender or receiver of the transaction",
"title": "Address",
"type": "string"
},
"age_from": {
"description": "Start date and time (e.g 2025-05-22T23:00:00.00Z).",
"title": "Age From",
"type": "string"
},
"age_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End date and time (e.g 2025-05-22T22:30:00.00Z).",
"title": "Age To"
},
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The pagination cursor from a previous response to get the next page of results.",
"title": "Cursor"
},
"methods": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A method signature to filter transactions by (e.g 0x304e6ade)",
"title": "Methods"
}
},
"required": [
"chain_id",
"address",
"age_from"
],
"title": "get_transactions_by_addressArguments",
"type": "object"
},
"name": "get_transactions_by_address",
"outputSchema": {
"$defs": {
"AdvancedFilterItem": {
"additionalProperties": true,
"description": "Represents a single item from the advanced filter API response.",
"properties": {
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The sender address.",
"title": "From"
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The recipient address.",
"title": "To"
}
},
"title": "AdvancedFilterItem",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"description": "The main data payload of the tool's response.",
"items": {
"$ref": "#/$defs/AdvancedFilterItem"
},
"title": "Data",
"type": "array"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[list[AdvancedFilterItem]]",
"type": "object"
},
"title": "Get Transactions by Address"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Token transfers ready",
"openai/toolInvocation/invoking": "Fetching token transfers..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Get ERC-20 token transfers for an address within a specific time range.\n Use cases:\n - `get_token_transfers_by_address(address, age_from)` - get all transfers of any ERC-20 token to/from the address since the given date up to the current time\n - `get_token_transfers_by_address(address, age_from, age_to)` - get all transfers of any ERC-20 token to/from the address between the given dates\n - `get_token_transfers_by_address(address, age_from, age_to, token)` - get all transfers of the given ERC-20 token to/from the address between the given dates\n **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.\n ",
"inputSchema": {
"properties": {
"address": {
"description": "Address which either transfer initiator or transfer receiver",
"title": "Address",
"type": "string"
},
"age_from": {
"description": "Start date and time (e.g 2025-05-22T23:00:00.00Z).",
"title": "Age From",
"type": "string"
},
"age_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End date and time (e.g 2025-05-22T22:30:00.00Z). Can be omitted to get all transfers up to the current time.",
"title": "Age To"
},
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The pagination cursor from a previous response to get the next page of results.",
"title": "Cursor"
},
"token": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An ERC-20 token contract address to filter transfers by a specific token. If omitted, returns transfers of all tokens.",
"title": "Token"
}
},
"required": [
"chain_id",
"address",
"age_from"
],
"title": "get_token_transfers_by_addressArguments",
"type": "object"
},
"name": "get_token_transfers_by_address",
"outputSchema": {
"$defs": {
"AdvancedFilterItem": {
"additionalProperties": true,
"description": "Represents a single item from the advanced filter API response.",
"properties": {
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The sender address.",
"title": "From"
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The recipient address.",
"title": "To"
}
},
"title": "AdvancedFilterItem",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"description": "The main data payload of the tool's response.",
"items": {
"$ref": "#/$defs/AdvancedFilterItem"
},
"title": "Data",
"type": "array"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[list[AdvancedFilterItem]]",
"type": "object"
},
"title": "Get Token Transfers by Address"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Token lookup ready",
"openai/toolInvocation/invoking": "Looking up token by symbol..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Search for token addresses by symbol or name. Returns multiple potential\n matches based on symbol or token name similarity. Only the first\n ``TOKEN_RESULTS_LIMIT`` matches from the Blockscout API are returned.\n ",
"inputSchema": {
"properties": {
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"symbol": {
"description": "Token symbol or name to search for",
"title": "Symbol",
"type": "string"
}
},
"required": [
"chain_id",
"symbol"
],
"title": "lookup_token_by_symbolArguments",
"type": "object"
},
"name": "lookup_token_by_symbol",
"outputSchema": {
"$defs": {
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
},
"TokenSearchResult": {
"description": "Represents a single token found by a search query.",
"properties": {
"address": {
"description": "The contract address of the token.",
"title": "Address",
"type": "string"
},
"circulating_market_cap": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The circulating market cap, if available.",
"title": "Circulating Market Cap"
},
"exchange_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The current exchange rate, if available.",
"title": "Exchange Rate"
},
"is_smart_contract_verified": {
"description": "Indicates if the token's contract is verified.",
"title": "Is Smart Contract Verified",
"type": "boolean"
},
"is_verified_via_admin_panel": {
"description": "Indicates if the token is verified by the Blockscout team.",
"title": "Is Verified Via Admin Panel",
"type": "boolean"
},
"name": {
"description": "The full name of the token (e.g., 'USD Coin').",
"title": "Name",
"type": "string"
},
"symbol": {
"description": "The symbol of the token (e.g., 'USDC').",
"title": "Symbol",
"type": "string"
},
"token_type": {
"description": "The token standard (e.g., 'ERC-20').",
"title": "Token Type",
"type": "string"
},
"total_supply": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The total supply of the token.",
"title": "Total Supply"
}
},
"required": [
"address",
"name",
"symbol",
"token_type",
"total_supply",
"circulating_market_cap",
"exchange_rate",
"is_smart_contract_verified",
"is_verified_via_admin_panel"
],
"title": "TokenSearchResult",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"description": "The main data payload of the tool's response.",
"items": {
"$ref": "#/$defs/TokenSearchResult"
},
"title": "Data",
"type": "array"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[list[TokenSearchResult]]",
"type": "object"
},
"title": "Lookup Token by Symbol"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Contract ABI ready",
"openai/toolInvocation/invoking": "Fetching contract ABI..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Get smart contract ABI (Application Binary Interface).\n An ABI defines all functions, events, their parameters, and return types. The ABI is required to format function calls or interpret contract data.\n ",
"inputSchema": {
"properties": {
"address": {
"description": "Smart contract address",
"title": "Address",
"type": "string"
},
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
}
},
"required": [
"chain_id",
"address"
],
"title": "get_contract_abiArguments",
"type": "object"
},
"name": "get_contract_abi",
"outputSchema": {
"$defs": {
"ContractAbiData": {
"description": "A structured representation of a smart contract's ABI.",
"properties": {
"abi": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "The Application Binary Interface (ABI) of the smart contract.",
"title": "Abi"
}
},
"required": [
"abi"
],
"title": "ContractAbiData",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/ContractAbiData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[ContractAbiData]",
"type": "object"
},
"title": "Get Contract ABI"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Contract code ready",
"openai/toolInvocation/invoking": "Inspecting contract code..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "Inspects a verified contract's source code or metadata.",
"inputSchema": {
"properties": {
"address": {
"description": "The address of the smart contract.",
"title": "Address",
"type": "string"
},
"chain_id": {
"description": "The ID of the blockchain.",
"title": "Chain Id",
"type": "string"
},
"file_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The name of the source file to inspect. If omitted, returns contract metadata and the list of source files.",
"title": "File Name"
}
},
"required": [
"chain_id",
"address"
],
"title": "inspect_contract_codeArguments",
"type": "object"
},
"name": "inspect_contract_code",
"outputSchema": {
"$defs": {
"ContractMetadata": {
"additionalProperties": true,
"description": "Detailed metadata for a verified smart contract.",
"properties": {
"compiler_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The compiler version used.",
"title": "Compiler Version"
},
"constructor_args": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The raw constructor arguments, possibly truncated.",
"title": "Constructor Args"
},
"constructor_args_truncated": {
"default": false,
"description": "Indicates if constructor_args or decoded_constructor_args was truncated.",
"title": "Constructor Args Truncated",
"type": "boolean"
},
"decoded_constructor_args": {
"anyOf": [
{
"type": "string"
},
{
"additionalProperties": true,
"type": "object"
},
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Decoded constructor arguments, if available.",
"title": "Decoded Constructor Args"
},
"evm_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The EVM version target.",
"title": "Evm Version"
},
"is_fully_verified": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Flag indicating if the contract is fully verified.",
"title": "Is Fully Verified"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The programming language of the contract (e.g., Solidity, Vyper).",
"title": "Language"
},
"license_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The license of the contract code (e.g., MIT, none).",
"title": "License Type"
},
"name": {
"description": "The name of the contract.",
"title": "Name",
"type": "string"
},
"optimization_enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Flag indicating if compiler optimization was enabled.",
"title": "Optimization Enabled"
},
"optimization_runs": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "The number of optimization runs.",
"title": "Optimization Runs"
},
"proxy_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The type of proxy if the contract is a proxy (e.g., basic_implementation).",
"title": "Proxy Type"
},
"source_code_tree_structure": {
"description": "A list of all source file paths for the contract.",
"items": {
"type": "string"
},
"title": "Source Code Tree Structure",
"type": "array"
},
"verified_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The timestamp when the contract was verified.",
"title": "Verified At"
}
},
"required": [
"name",
"language",
"compiler_version",
"verified_at",
"source_code_tree_structure",
"optimization_enabled",
"optimization_runs",
"evm_version",
"license_type",
"proxy_type",
"is_fully_verified",
"constructor_args"
],
"title": "ContractMetadata",
"type": "object"
},
"ContractSourceFile": {
"description": "Container for a single contract source file.",
"properties": {
"file_content": {
"description": "The raw source code of the file.",
"title": "File Content",
"type": "string"
}
},
"required": [
"file_content"
],
"title": "ContractSourceFile",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"anyOf": [
{
"$ref": "#/$defs/ContractMetadata"
},
{
"$ref": "#/$defs/ContractSourceFile"
}
],
"description": "The main data payload of the tool's response.",
"title": "Data"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[Union[ContractMetadata, ContractSourceFile]]",
"type": "object"
},
"title": "Inspect Contract Code"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Contract read complete",
"openai/toolInvocation/invoking": "Reading from contract..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Calls a smart contract function (view/pure, or non-view/pure simulated via eth_call) and returns the\n decoded result.\n\n This tool provides a direct way to query the state of a smart contract.\n\n Example:\n To check the USDT balance of an address on Ethereum Mainnet, you would use the following arguments:\n {\n \"tool_name\": \"read_contract\",\n \"params\": {\n \"chain_id\": \"1\",\n \"address\": \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n \"abi\": {\n \"constant\": true,\n \"inputs\": [{\"name\": \"_owner\", \"type\": \"address\"}],\n \"name\": \"balanceOf\",\n \"outputs\": [{\"name\": \"balance\", \"type\": \"uint256\"}],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n \"function_name\": \"balanceOf\",\n \"args\": \"[\"0xF977814e90dA44bFA03b6295A0616a897441aceC\"]\"\n }\n }\n ",
"inputSchema": {
"properties": {
"abi": {
"additionalProperties": true,
"description": "The JSON ABI for the specific function being called. This should be a dictionary that defines the function's name, inputs, and outputs. The function ABI can be obtained using the `get_contract_abi` tool.",
"title": "Abi",
"type": "object"
},
"address": {
"description": "Smart contract address",
"title": "Address",
"type": "string"
},
"args": {
"default": "[]",
"description": "A JSON string containing an array of arguments. Example: \"[\"0xabc...\"]\" for a single address argument, or \"[]\" for no arguments. Order and types must match ABI inputs. Addresses: use 0x-prefixed strings; Numbers: prefer integers (not quoted); numeric strings like \"1\" are also accepted and coerced to integers. Bytes: keep as 0x-hex strings.",
"title": "Args",
"type": "string"
},
"block": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"default": "latest",
"description": "The block identifier to read the contract state from. Can be a block number (e.g., 19000000) or a string tag (e.g., 'latest'). Defaults to 'latest'.",
"title": "Block"
},
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"function_name": {
"description": "The symbolic name of the function to be called. This must match the `name` field in the provided ABI.",
"title": "Function Name",
"type": "string"
}
},
"required": [
"chain_id",
"address",
"abi",
"function_name"
],
"title": "read_contractArguments",
"type": "object"
},
"name": "read_contract",
"outputSchema": {
"$defs": {
"ContractReadData": {
"description": "Result of a read-only smart contract function call.",
"properties": {
"result": {
"description": "Return value from the contract function call.",
"title": "Result"
}
},
"required": [
"result"
],
"title": "ContractReadData",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/ContractReadData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[ContractReadData]",
"type": "object"
},
"title": "Read from Contract"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Address information ready",
"openai/toolInvocation/invoking": "Fetching address information..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Get comprehensive information about an address, including:\n - Address existence check\n - Native token (ETH) balance (provided as is, without adjusting by decimals)\n - First transaction details (block number and timestamp) for age calculation\n - ENS name association (if any)\n - Contract status (whether the address is a contract, whether it is verified)\n - Proxy contract information (if applicable): determines if a smart contract is a proxy contract (which forwards calls to implementation contracts), including proxy type and implementation addresses\n - Token details (if the contract is a token): name, symbol, decimals, total supply, etc.\n Essential for address analysis, contract investigation, token research, and DeFi protocol analysis.\n ",
"inputSchema": {
"properties": {
"address": {
"description": "Address to get information about",
"title": "Address",
"type": "string"
},
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
}
},
"required": [
"chain_id",
"address"
],
"title": "get_address_infoArguments",
"type": "object"
},
"name": "get_address_info",
"outputSchema": {
"$defs": {
"AddressInfoData": {
"description": "A structured representation of the combined address information.",
"properties": {
"basic_info": {
"additionalProperties": true,
"description": "Core on-chain data for the address from the Blockscout API.",
"title": "Basic Info",
"type": "object"
},
"first_transaction_details": {
"anyOf": [
{
"$ref": "#/$defs/FirstTransactionDetails"
},
{
"type": "null"
}
],
"default": null,
"description": "Details about the first transaction made to or from this address, if any."
},
"metadata": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional metadata, such as public tags, from the Metadata service.",
"title": "Metadata"
}
},
"required": [
"basic_info"
],
"title": "AddressInfoData",
"type": "object"
},
"FirstTransactionDetails": {
"description": "Details about the earliest transaction for an address.",
"properties": {
"block_number": {
"description": "The block number of the first transaction.",
"title": "Block Number",
"type": "integer"
},
"timestamp": {
"description": "The timestamp of the first transaction (ISO format).",
"title": "Timestamp",
"type": "string"
}
},
"required": [
"block_number",
"timestamp"
],
"title": "FirstTransactionDetails",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/AddressInfoData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[AddressInfoData]",
"type": "object"
},
"title": "Get Address Information"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Tokens ready",
"openai/toolInvocation/invoking": "Fetching tokens by address..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Get comprehensive ERC20 token holdings for an address with enriched metadata and market data.\n Returns detailed token information including contract details (name, symbol, decimals), market metrics (exchange rate, market cap, volume), holders count, and actual balance (provided as is, without adjusting by decimals).\n Essential for portfolio analysis, wallet auditing, and DeFi position tracking.\n **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.\n ",
"inputSchema": {
"properties": {
"address": {
"description": "Wallet address",
"title": "Address",
"type": "string"
},
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The pagination cursor from a previous response to get the next page of results.",
"title": "Cursor"
}
},
"required": [
"chain_id",
"address"
],
"title": "get_tokens_by_addressArguments",
"type": "object"
},
"name": "get_tokens_by_address",
"outputSchema": {
"$defs": {
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
},
"TokenHoldingData": {
"description": "Represents a single token holding with its associated metadata.",
"properties": {
"address": {
"description": "The contract address of the token.",
"title": "Address",
"type": "string"
},
"balance": {
"description": "The token balance for the queried address (unadjusted for decimals).",
"title": "Balance",
"type": "string"
},
"circulating_market_cap": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The circulating market cap, if available.",
"title": "Circulating Market Cap"
},
"decimals": {
"description": "The number of decimals the token uses.",
"title": "Decimals",
"type": "string"
},
"exchange_rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The current exchange rate, if available.",
"title": "Exchange Rate"
},
"holders_count": {
"description": "The number of addresses holding this token.",
"title": "Holders Count",
"type": "string"
},
"name": {
"description": "The full name of the token (e.g., 'USD Coin').",
"title": "Name",
"type": "string"
},
"symbol": {
"description": "The symbol of the token (e.g., 'USDC').",
"title": "Symbol",
"type": "string"
},
"total_supply": {
"description": "The total supply of the token.",
"title": "Total Supply",
"type": "string"
}
},
"required": [
"address",
"name",
"symbol",
"decimals",
"total_supply",
"circulating_market_cap",
"exchange_rate",
"holders_count",
"balance"
],
"title": "TokenHoldingData",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"description": "The main data payload of the tool's response.",
"items": {
"$ref": "#/$defs/TokenHoldingData"
},
"title": "Data",
"type": "array"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[list[TokenHoldingData]]",
"type": "object"
},
"title": "Get Tokens by Address"
},
{
"_meta": {
"openai/toolInvocation/invoked": "NFT tokens ready",
"openai/toolInvocation/invoking": "Fetching NFT tokens..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Retrieve NFT tokens (ERC-721, ERC-404, ERC-1155) owned by an address, grouped by collection.\n Provides collection details (type, address, name, symbol, total supply, holder count) and individual token instance data (ID, name, description, external URL, metadata attributes).\n Essential for a detailed overview of an address's digital collectibles and their associated collection data.\n **SUPPORTS PAGINATION**: If response includes 'pagination' field, use the provided next_call to get additional pages.\n ",
"inputSchema": {
"properties": {
"address": {
"description": "NFT owner address",
"title": "Address",
"type": "string"
},
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The pagination cursor from a previous response to get the next page of results.",
"title": "Cursor"
}
},
"required": [
"chain_id",
"address"
],
"title": "nft_tokens_by_addressArguments",
"type": "object"
},
"name": "nft_tokens_by_address",
"outputSchema": {
"$defs": {
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"NftCollectionHolding": {
"description": "Represents an address's holding in a single NFT collection.",
"properties": {
"amount": {
"description": "The number of tokens from this collection owned by the address.",
"title": "Amount",
"type": "string"
},
"collection": {
"$ref": "#/$defs/NftCollectionInfo",
"description": "The details of the NFT collection."
},
"token_instances": {
"description": "A list of the specific NFT instances owned by the address.",
"items": {
"$ref": "#/$defs/NftTokenInstance"
},
"title": "Token Instances",
"type": "array"
}
},
"required": [
"collection",
"amount",
"token_instances"
],
"title": "NftCollectionHolding",
"type": "object"
},
"NftCollectionInfo": {
"description": "Represents the metadata for an NFT collection.",
"properties": {
"address": {
"description": "The smart contract address of the NFT collection.",
"title": "Address",
"type": "string"
},
"holders_count": {
"description": "The number of unique addresses that hold a token from this collection.",
"title": "Holders Count",
"type": "integer"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The name of the collection.",
"title": "Name"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The symbol of the collection.",
"title": "Symbol"
},
"total_supply": {
"description": "The total number of tokens in the collection.",
"title": "Total Supply",
"type": "integer"
},
"type": {
"description": "The token standard of the collection.",
"title": "Type",
"type": "string"
}
},
"required": [
"type",
"address",
"holders_count",
"total_supply"
],
"title": "NftCollectionInfo",
"type": "object"
},
"NftTokenInstance": {
"description": "Represents a single NFT instance with its metadata.",
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The description of the NFT, extracted from its metadata.",
"title": "Description"
},
"external_app_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A URL to an external site or application related to the NFT.",
"title": "External App Url"
},
"id": {
"description": "The unique identifier of the NFT token instance.",
"title": "Id",
"type": "string"
},
"image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A URL for the NFT's image, from its metadata.",
"title": "Image Url"
},
"metadata_attributes": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "The metadata attributes (traits) associated with the NFT.",
"title": "Metadata Attributes"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The name of the NFT, extracted from its metadata.",
"title": "Name"
}
},
"required": [
"id"
],
"title": "NftTokenInstance",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"description": "The main data payload of the tool's response.",
"items": {
"$ref": "#/$defs/NftCollectionHolding"
},
"title": "Data",
"type": "array"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[list[NftCollectionHolding]]",
"type": "object"
},
"title": "Get NFT Tokens by Address"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Transaction details ready",
"openai/toolInvocation/invoking": "Fetching transaction details..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Get comprehensive transaction information.\n Unlike standard eth_getTransactionByHash, this tool returns enriched data including decoded input parameters, detailed token transfers with token metadata, transaction fee breakdown (priority fees, burnt fees) and categorized transaction types.\n By default, the raw transaction input is omitted if a decoded version is available to save context; request it with `include_raw_input=True` only when you truly need the raw hex data.\n Essential for transaction analysis, debugging smart contract interactions, tracking DeFi operations.\n ",
"inputSchema": {
"properties": {
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"include_raw_input": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": false,
"description": "If true, includes the raw transaction input data.",
"title": "Include Raw Input"
},
"transaction_hash": {
"description": "Transaction hash",
"title": "Transaction Hash",
"type": "string"
}
},
"required": [
"chain_id",
"transaction_hash"
],
"title": "get_transaction_infoArguments",
"type": "object"
},
"name": "get_transaction_info",
"outputSchema": {
"$defs": {
"DecodedInput": {
"additionalProperties": true,
"description": "Represents the decoded input data of a transaction.",
"properties": {
"method_call": {
"description": "Name of the called method.",
"title": "Method Call",
"type": "string"
},
"method_id": {
"description": "Identifier of the called method.",
"title": "Method Id",
"type": "string"
},
"parameters": {
"description": "List of decoded input parameters for the method call.",
"items": {},
"title": "Parameters",
"type": "array"
}
},
"required": [
"method_call",
"method_id",
"parameters"
],
"title": "DecodedInput",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
},
"TokenTransfer": {
"additionalProperties": true,
"description": "Represents a single token transfer within a transaction.",
"properties": {
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Sender address of the token transfer if available.",
"title": "From"
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Recipient address of the token transfer if available.",
"title": "To"
},
"token": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Token metadata dictionary associated with the transfer.",
"title": "Token"
},
"type": {
"description": "Type of transfer (e.g., 'transfer', 'mint').",
"title": "Type",
"type": "string"
}
},
"required": [
"from",
"to",
"type"
],
"title": "TokenTransfer",
"type": "object"
},
"TransactionInfoData": {
"additionalProperties": true,
"description": "Structured representation of get_transaction_info data.",
"properties": {
"decoded_input": {
"anyOf": [
{
"$ref": "#/$defs/DecodedInput"
},
{
"type": "null"
}
],
"default": null,
"description": "Decoded method input if available."
},
"from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sender of the transaction if available.",
"title": "From"
},
"raw_input": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Raw transaction input data if returned.",
"title": "Raw Input"
},
"raw_input_truncated": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Indicates if raw_input was truncated.",
"title": "Raw Input Truncated"
},
"to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Recipient of the transaction if available.",
"title": "To"
},
"token_transfers": {
"description": "List of token transfers related to the transaction.",
"items": {
"$ref": "#/$defs/TokenTransfer"
},
"title": "Token Transfers",
"type": "array"
},
"user_operations": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/UserOpsLite"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of ERC-4337 User Operations associated with this transaction",
"title": "User Operations"
}
},
"title": "TransactionInfoData",
"type": "object"
},
"UserOpsLite": {
"description": "Represents a summary of an ERC-4337 User Operation.",
"properties": {
"operation_hash": {
"description": "The hash of the user operation",
"title": "Operation Hash",
"type": "string"
},
"sender": {
"description": "The address that sent the user operation",
"title": "Sender",
"type": "string"
}
},
"required": [
"sender",
"operation_hash"
],
"title": "UserOpsLite",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"$ref": "#/$defs/TransactionInfoData",
"description": "The main data payload of the tool's response."
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[TransactionInfoData]",
"type": "object"
},
"title": "Get Transaction Information"
},
{
"_meta": {
"openai/toolInvocation/invoked": "Chains list ready",
"openai/toolInvocation/invoking": "Fetching chains list..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "\n Get the list of known blockchain chains with their IDs.\n Useful for getting a chain ID when the chain name is known. This information can be used in other tools that require a chain ID to request information.\n ",
"inputSchema": {
"properties": {},
"title": "get_chains_listArguments",
"type": "object"
},
"name": "get_chains_list",
"outputSchema": {
"$defs": {
"ChainInfo": {
"description": "Represents a blockchain with its essential identifiers.",
"properties": {
"chain_id": {
"description": "The unique identifier for the chain.",
"title": "Chain Id",
"type": "string"
},
"ecosystem": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "The ecosystem the chain belongs to, if applicable (e.g., 'Ethereum').",
"title": "Ecosystem"
},
"is_testnet": {
"description": "Indicates if the chain is a testnet.",
"title": "Is Testnet",
"type": "boolean"
},
"name": {
"description": "The common name of the blockchain (e.g., 'Ethereum').",
"title": "Name",
"type": "string"
},
"native_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The native currency symbol of the chain (e.g., 'ETH').",
"title": "Native Currency"
},
"settlement_layer_chain_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The L1 chain ID where this rollup settles, if applicable.",
"title": "Settlement Layer Chain Id"
}
},
"required": [
"name",
"chain_id",
"is_testnet",
"native_currency",
"ecosystem"
],
"title": "ChainInfo",
"type": "object"
},
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"description": "The main data payload of the tool's response.",
"items": {
"$ref": "#/$defs/ChainInfo"
},
"title": "Data",
"type": "array"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[list[ChainInfo]]",
"type": "object"
},
"title": "Get List of Chains"
},
{
"_meta": {
"openai/toolInvocation/invoked": "API call complete",
"openai/toolInvocation/invoking": "Calling Blockscout API..."
},
"annotations": {
"destructiveHint": false,
"openWorldHint": true,
"readOnlyHint": true
},
"description": "Call a raw Blockscout API endpoint for advanced or chain-specific data.\n\n Do not include query strings in ``endpoint_path``; pass all query parameters via\n ``query_params`` to avoid double-encoding.\n\n **SUPPORTS PAGINATION**: If response includes 'pagination' field,\n use the provided next_call to get additional pages.\n\n Returns:\n ToolResponse[Any]: Must return ToolResponse[Any] (not ToolResponse[BaseModel])\n because specialized handlers can return lists or other types that don't inherit\n from BaseModel. The dispatcher system supports flexible data structures.\n ",
"inputSchema": {
"properties": {
"chain_id": {
"description": "The ID of the blockchain",
"title": "Chain Id",
"type": "string"
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The pagination cursor from a previous response to get the next page of results.",
"title": "Cursor"
},
"endpoint_path": {
"description": "The Blockscout API path to call (e.g., '/api/v2/stats'); do not include query strings.",
"title": "Endpoint Path",
"type": "string"
},
"query_params": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional query parameters forwarded to the Blockscout API.",
"title": "Query Params"
}
},
"required": [
"chain_id",
"endpoint_path"
],
"title": "direct_api_callArguments",
"type": "object"
},
"name": "direct_api_call",
"outputSchema": {
"$defs": {
"NextCallInfo": {
"description": "A structured representation of the tool call required to get the next page.",
"properties": {
"params": {
"additionalProperties": true,
"description": "A complete dictionary of parameters for the next tool call, including the new cursor.",
"title": "Params",
"type": "object"
},
"tool_name": {
"description": "The name of the tool to call for the next page.",
"title": "Tool Name",
"type": "string"
}
},
"required": [
"tool_name",
"params"
],
"title": "NextCallInfo",
"type": "object"
},
"PaginationInfo": {
"description": "Contains the structured information needed to retrieve the next page of results.",
"properties": {
"next_call": {
"$ref": "#/$defs/NextCallInfo",
"description": "The structured tool call required to fetch the subsequent page."
}
},
"required": [
"next_call"
],
"title": "PaginationInfo",
"type": "object"
}
},
"properties": {
"content_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional human-readable summary used for MCP content responses.",
"title": "Content Text"
},
"data": {
"description": "The main data payload of the tool's response.",
"title": "Data"
},
"data_description": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of notes explaining the structure, fields, or conventions of the 'data' payload.",
"title": "Data Description"
},
"instructions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of suggested follow-up actions or instructions for the LLM to plan its next steps.",
"title": "Instructions"
},
"notes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "A list of important contextual notes, such as warnings about data truncation or data quality issues.",
"title": "Notes"
},
"pagination": {
"anyOf": [
{
"$ref": "#/$defs/PaginationInfo"
},
{
"type": "null"
}
],
"default": null,
"description": "Pagination information, present only if the 'data' is a single page of a larger result set."
}
},
"required": [
"data"
],
"title": "ToolResponse[Any]",
"type": "object"
},
"title": "Direct Blockscout API Call"
}
]
}
},
"url": "https://mcp.blockscout.com/mcp"
},
"latency_ms": 442.75,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"bad_protocol_payload": {
"error": {
"code": -32600,
"message": "Bad Request: Unsupported protocol version: 1999-99-99. Supported versions: 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25"
},
"id": "server-error",
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 164.79,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"experimental",
"prompts",
"resources",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 154.7,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.blockscout.com/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://mcp.blockscout.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://mcp.blockscout.com/.well-known/mcp/server-card.json"
}
},
"remote_url": "https://mcp.blockscout.com/mcp",
"server_card_payload": null,
"server_identifier": "com.blockscout/mcp-server"
}
Known versions
0.15.0
Validation history
7 day score delta
+0.0
30 day score delta
+0.0
Recent healthy ratio
100%
Freshness
605.5h
| Timestamp | Status | Score | Latency | Tools |
|---|---|---|---|---|
| Apr 09, 2026 12:26:01 AM UTC | Healthy | 75.3 | 2966.7 ms | 16 |
| Apr 08, 2026 12:25:15 AM UTC | Healthy | 75.3 | 2938.8 ms | 16 |
| Apr 07, 2026 12:24:30 AM UTC | Healthy | 75.3 | 2596.3 ms | 16 |
| Apr 06, 2026 12:23:30 AM UTC | Healthy | 75.3 | 3394.1 ms | 16 |
| Apr 05, 2026 12:22:23 AM UTC | Healthy | 75.3 | 3428.7 ms | 16 |
| Apr 04, 2026 12:21:13 AM UTC | Healthy | 75.3 | 3275.2 ms | 16 |
| Apr 03, 2026 12:19:50 AM UTC | Healthy | 75.3 | 3362.6 ms | 16 |
| Apr 02, 2026 12:10:02 AM UTC | Healthy | 75.3 | 3083.1 ms | 16 |
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| Apr 09, 2026 12:26:01 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Apr 08, 2026 12:25:15 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Apr 07, 2026 12:24:30 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Apr 06, 2026 12:23:30 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Apr 05, 2026 12:22:23 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Apr 04, 2026 12:21:13 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Apr 03, 2026 12:19:50 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Apr 02, 2026 12:10:02 AM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Mar 31, 2026 11:32:30 PM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Mar 30, 2026 11:24:49 PM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Mar 29, 2026 11:17:04 PM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
| Mar 28, 2026 09:07:41 PM UTC | Healthy | 75.3 | 2025-03-26 | public | 16 | 1 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| Apr 09, 2026 12:25:58 AM UTC | Completed | Healthy | 2966.7 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Apr 08, 2026 12:25:12 AM UTC | Completed | Healthy | 2938.8 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Apr 07, 2026 12:24:27 AM UTC | Completed | Healthy | 2596.3 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Apr 06, 2026 12:23:27 AM UTC | Completed | Healthy | 3394.1 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Apr 05, 2026 12:22:19 AM UTC | Completed | Healthy | 3428.7 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Apr 04, 2026 12:21:10 AM UTC | Completed | Healthy | 3275.2 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Apr 03, 2026 12:19:47 AM UTC | Completed | Healthy | 3362.6 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Apr 02, 2026 12:09:59 AM UTC | Completed | Healthy | 3083.1 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Mar 31, 2026 11:32:28 PM UTC | Completed | Healthy | 2734.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |
| Mar 30, 2026 11:24:46 PM UTC | Completed | Healthy | 2928.8 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |