Straelo Relay
MCP tools for agents: web research, content extraction, email, DNS, and blockchain intelligence.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"relay": {
"url": "https://relay.straelo.com/mcp/"
}
}
}Remote endpoints
https://relay.straelo.com/mcp/streamable-httpWhat it can do
Tool inventory
Tools (7)
🟢url_clean_content(url)
Extract clean readable webpage text from a public URL, removing boilerplate for LLM-ready research or RAG ingestion.
Input Schema
{
"type": "object",
"properties": {
"url": {
"description": "Public HTTP(S) page URL to fetch. Private, local, authenticated, paywalled, or blocked resources are not supported.",
"format": "uri",
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "handlerArguments"
}Output Schema
{
"type": "object",
"properties": {
"url": {
"description": "Fetched page URL.",
"type": "string"
},
"title": {
"description": "Page title when available.",
"type": [
"string",
"null"
]
},
"text": {
"description": "Clean readable page text.",
"type": "string"
},
"metadata": {
"description": "Useful non-sensitive page metadata.",
"type": "object"
}
},
"required": [
"url",
"title",
"text",
"metadata"
],
"title": "UrlCleanContentOutput"
}🟢email_validator_basic(email)
Validate email syntax, domain and MX records for basic automated checks without SMTP mailbox verification.
Input Schema
{
"type": "object",
"properties": {
"email": {
"description": "Email address for syntax, domain and MX validation.",
"format": "email",
"title": "Email",
"type": "string"
}
},
"required": [
"email"
],
"title": "handlerArguments"
}Output Schema
{
"type": "object",
"properties": {
"valid": {
"type": "boolean"
},
"domain": {
"type": [
"string",
"null"
]
},
"mx_found": {
"type": [
"boolean",
"null"
]
},
"reasons": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"valid",
"domain",
"mx_found",
"reasons"
],
"title": "EmailValidatorBasicOutput"
}🟢web_intelligence(intent, topic, objective, query, url, ...)
Search, read, extract, verify with evidence, research, compare or detect web changes in one paid machine-to-machine product without orchestrating multiple web APIs.
Input Schema
{
"type": "object",
"properties": {
"intent": {
"default": null,
"description": "Selected Web Intelligence operation.",
"enum": [
"search",
"read",
"extract",
"evidence",
"research",
"compare",
"changes"
],
"title": "Intent",
"type": "string"
},
"topic": {
"default": null,
"description": "Legacy structured-research topic, used with objective only when intent is omitted.",
"title": "Topic",
"type": "string"
},
"objective": {
"default": null,
"description": "Legacy structured-research objective, used with topic only when intent is omitted.",
"title": "Objective",
"type": "string"
},
"query": {
"default": null,
"description": "Live-web query for search, extract, evidence, or compare.",
"title": "Query",
"type": "string"
},
"url": {
"default": null,
"description": "Public HTTP(S) URL for read or changes.",
"format": "uri",
"title": "Url",
"type": "string"
},
"fields": {
"default": null,
"description": "Unique source fields for extract.",
"items": {
"enum": [
"title",
"url",
"snippet",
"text"
],
"type": "string"
},
"title": "Fields",
"type": "array"
},
"question": {
"default": null,
"description": "Natural-language question for research.",
"title": "Question",
"type": "string"
},
"targets": {
"default": null,
"description": "Two to five named targets for compare.",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 2,
"title": "Targets",
"type": "array"
},
"previous_state": {
"default": null,
"description": "Optional client-supplied prior read state for stateless changes detection.",
"title": "Previous State",
"type": "object"
}
},
"title": "handlerArguments"
}Output Schema
{
"type": "object",
"properties": {
"intent": {
"description": "Executed selected intent.",
"type": "string"
},
"result": {
"description": "Intent-specific machine-readable result.",
"type": "object"
},
"sources": {
"description": "Source provenance when the intent uses web sources.",
"type": "array"
},
"observed_at": {
"description": "UTC observation time.",
"format": "date-time",
"type": "string"
},
"freshness": {
"description": "Current-data or client-state comparison context.",
"type": "string"
},
"data_quality": {
"description": "Available source or content coverage.",
"type": "object"
},
"missing": {
"description": "Known unavailable information.",
"items": {
"type": "string"
},
"type": "array"
},
"usage": {
"description": "Measured provider usage when applicable.",
"type": [
"object",
"null"
]
},
"economics": {
"description": "Application-calculated estimated costs when applicable.",
"type": [
"object",
"null"
]
}
},
"required": [
"intent",
"result",
"observed_at",
"freshness",
"data_quality",
"missing"
],
"title": "WebIntelligenceOutput"
}🟢chain_contract_call(chain, contract_address, data)
Execute a read-only EVM smart contract call on Ethereum or Base and return the normalized result without managing an RPC provider.
Input Schema
{
"type": "object",
"properties": {
"chain": {
"description": "EVM network for the read-only call.",
"enum": [
"ethereum",
"base"
],
"title": "Chain",
"type": "string"
},
"contract_address": {
"description": "Target EVM contract address.",
"title": "Contract Address",
"type": "string"
},
"data": {
"description": "Read-only hexadecimal ABI calldata.",
"title": "Data",
"type": "string"
}
},
"required": [
"chain",
"contract_address",
"data"
],
"title": "handlerArguments"
}Output Schema
{
"type": "object",
"properties": {
"chain": {
"description": "Selected EVM network.",
"type": "string"
},
"contract_address": {
"description": "Called contract address.",
"type": "string"
},
"result": {
"description": "Hexadecimal eth_call result.",
"type": "string"
},
"provider": {
"description": "RPC provider identifier.",
"type": "string"
},
"latency_ms": {
"description": "Observed provider-call latency in milliseconds.",
"type": "integer"
}
},
"required": [
"chain",
"contract_address",
"result",
"provider",
"latency_ms"
],
"title": "ChainContractCallOutput"
}🟢blockchain_intelligence(chain, transaction_hash, address, contract_address, previous_state)
Inspect exactly one Base or Ethereum transaction, address, or contract with bounded read-only RPC calls and return deterministic context, observed signals, evidence, coverage, and actionable follow-up.
Input Schema
{
"type": "object",
"properties": {
"chain": {
"description": "EVM network containing the target.",
"enum": [
"ethereum",
"base"
],
"title": "Chain",
"type": "string"
},
"transaction_hash": {
"default": null,
"description": "One transaction hash to inspect.",
"pattern": "^0x[a-fA-F0-9]{64}$",
"title": "Transaction Hash",
"type": "string"
},
"address": {
"default": null,
"description": "One EVM address to inspect.",
"pattern": "^0x[a-fA-F0-9]{40}$",
"title": "Address",
"type": "string"
},
"contract_address": {
"default": null,
"description": "One EVM contract address to inspect.",
"pattern": "^0x[a-fA-F0-9]{40}$",
"title": "Contract Address",
"type": "string"
},
"previous_state": {
"default": null,
"description": "Optional prior new_state for stateless change detection.",
"title": "Previous State",
"type": "object"
}
},
"required": [
"chain"
],
"title": "handlerArguments"
}Output Schema
{
"type": "object",
"properties": {
"target": {
"description": "Selected target type and value.",
"type": "object"
},
"classification": {
"description": "Observed deterministic target classification, not a safety assessment.",
"type": "string"
},
"summary": {
"type": "string"
},
"activity": {
"type": "object"
},
"value_and_fee": {
"type": "object"
},
"contract_context": {
"type": "object"
},
"risk_signals": {
"description": "Observed signals only; no risk score is assigned.",
"items": {
"type": "string"
},
"type": "array"
},
"issues": {
"items": {
"type": "object"
},
"type": "array"
},
"evidence": {
"items": {
"type": "object"
},
"type": "array"
},
"recommended_actions": {
"items": {
"type": "object"
},
"type": "array"
},
"changes": {
"items": {
"type": "object"
},
"type": "array"
},
"material_changes": {
"items": {
"type": "string"
},
"type": "array"
},
"coverage": {
"description": "Explicitly records the observed RPC scope and unobserved categories.",
"type": "object"
},
"rpc_calls_used": {
"maximum": 5,
"type": "integer"
},
"observed_at": {
"format": "date-time",
"type": "string"
},
"current_state": {
"type": "object"
},
"new_state": {
"type": "object"
}
},
"required": [
"target",
"classification",
"summary",
"activity",
"value_and_fee",
"contract_context",
"risk_signals",
"issues",
"evidence",
"recommended_actions",
"changes",
"material_changes",
"coverage",
"rpc_calls_used",
"observed_at",
"current_state",
"new_state"
],
"title": "BlockchainIntelligenceOutput"
}🟢pay_decision_snapshot(intent, payment_required, previous_snapshot)
Compare one supplied x402 v2 exact Base USDC payment requirement against declared intent and return deterministic consistency, mismatch, change, fingerprint, and coverage evidence without executing a payment.
Input Schema
{
"type": "object",
"properties": {
"intent": {
"properties": {
"seller": {
"description": "Caller-supplied seller label included in the fingerprint; identity is not externally verified.",
"type": "string"
},
"service": {
"description": "Expected resource.serviceName.",
"type": "string"
},
"resource": {
"description": "Expected exact absolute HTTP(S) resource URL.",
"format": "uri",
"type": "string"
},
"expected_amount": {
"description": "Optional expected USDC decimal amount, not atomic units.",
"type": "string"
},
"expected_asset": {
"description": "Optional expected EVM asset address.",
"type": "string"
},
"expected_network": {
"description": "Optional expected CAIP-2 network.",
"type": "string"
},
"expected_pay_to": {
"description": "Optional expected EVM payment destination.",
"type": "string"
},
"amount_tolerance": {
"description": "Optional permitted USDC decimal increase.",
"type": "string"
}
},
"required": [
"seller",
"service",
"resource"
],
"title": "Intent",
"type": "object"
},
"payment_required": {
"description": "Observed x402 v2 PAYMENT-REQUIRED challenge decoded as JSON.",
"title": "Payment Required",
"type": "object"
},
"previous_snapshot": {
"default": null,
"description": "Optional prior snapshot for stateless material-change detection.",
"title": "Previous Snapshot",
"type": "object"
}
},
"required": [
"intent",
"payment_required"
],
"title": "handlerArguments"
}Output Schema
{
"type": "object",
"properties": {
"assessment": {
"description": "Consistency decision only; never a safety rating.",
"enum": [
"CONSISTENT",
"INCONSISTENT",
"REVIEW_REQUIRED"
],
"type": "string"
},
"reason_codes": {
"items": {
"type": "string"
},
"type": "array"
},
"matched": {
"type": "object"
},
"mismatched": {
"type": "object"
},
"changes": {
"items": {
"type": "object"
},
"type": "array"
},
"payment_fingerprint": {
"description": "SHA-256 of canonical material payment fields.",
"type": "string"
},
"checks_performed": {
"items": {
"type": "string"
},
"type": "array"
},
"checks_skipped": {
"items": {
"type": "string"
},
"type": "array"
},
"evidence": {
"type": "object"
},
"coverage": {
"type": "object"
},
"external_calls": {
"description": "Always empty in this offline MVP.",
"items": {
"type": "string"
},
"type": "array"
},
"snapshot": {
"description": "Reusable stateless comparison state.",
"type": "object"
}
},
"required": [
"assessment",
"reason_codes",
"matched",
"mismatched",
"changes",
"payment_fingerprint",
"checks_performed",
"checks_skipped",
"evidence",
"coverage",
"external_calls",
"snapshot"
],
"title": "PayDecisionSnapshotOutput"
}🟢domain_intelligence(domain, previous_state)
Inspect a domain's DNS, HTTP/HTTPS, TLS, redirects, email posture, security signals and agent readiness in one machine-to-machine call, returning structured issues, evidence and actionable findings.
Input Schema
{
"type": "object",
"properties": {
"domain": {
"description": "Public domain name; localhost and IP literals are rejected.",
"title": "Domain",
"type": "string"
},
"previous_state": {
"default": null,
"description": "Optional prior new_state for stateless change detection.",
"title": "Previous State",
"type": "object"
}
},
"required": [
"domain"
],
"title": "handlerArguments"
}Output Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string"
},
"dns": {
"type": "object"
},
"health": {
"type": "object"
},
"email_posture": {
"type": "object"
},
"security_posture": {
"type": "object"
},
"agent_readiness": {
"type": "object"
},
"issues": {
"type": "array"
},
"actions": {
"type": "array"
},
"evidence": {
"type": "array"
},
"observed_at": {
"format": "date-time",
"type": "string"
},
"data_quality": {
"type": "object"
},
"current_state": {
"type": "object"
},
"changes": {
"type": "array"
},
"new_state": {
"type": "object"
}
},
"required": [
"domain",
"dns",
"health",
"email_posture",
"security_posture",
"agent_readiness",
"issues",
"actions",
"evidence",
"observed_at",
"data_quality",
"current_state",
"changes",
"new_state"
],
"title": "DomainIntelligenceOutput"
}Community
Evidence