Straelo Relay

MCP tools for agents: web research, content extraction, email, DNS, and blockchain intelligence.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
98%
Naming quality
83%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,641Tokens (tool definitions)
~4.2 KBTypical response size
Significant attention impact (2.06% of 128k context)

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-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools