BUILD WITH VERIFIED M2M INFRASTRUCTURE.
Connect Claude, Cursor, Windsurf, or custom autonomous agents directly to our Streamable HTTP MCP server, or install the official agentsla npm package to verify EIP-712 SLA proofs and settle Base Mainnet Circle USDC escrow in 3 lines of code.
NPM PACKAGE
Install agentsla from npm to query verified endpoints, request signed EIP-712 latency proofs, and interact with Base Mainnet USDC escrow.
npm install agentsla ethers
STREAMABLE MCP
Add https://agentsla.io/mcp to Claude Desktop, Cursor, or Windsurf to give your AI agents real-time access to verified APIs and uptime proofs.
{
"mcpServers": {
"agentsla": {
"url": "https://agentsla.io/mcp"
}
}
}
OPEN DISCOVERY
Query our REST API directly or point autonomous crawlers to our standardized machine-readable discovery manifests on Base Mainnet.
EVERY CHECK IS SIGNED
Each check the oracle runs (HTTP status and response time of an endpoint) is signed by the oracle key as an EIP-712 message.
GET https://agentsla.io/v1/attestations?url=<endpoint>
returns the signing domain and the oracle's address once, and for each check the signature with the exact message it covers.
If the recovered address matches, the oracle recorded exactly that result at that time. It says nothing about the endpoint beyond that one check.
import { ethers } from "ethers";
const endpoint = "https://agentsla.io/mcp";
const res = await fetch("https://agentsla.io/v1/attestations?url=" + encodeURIComponent(endpoint));
const { verification, checks } = await res.json();
for (const check of checks) {
if (!check.signedMessage) continue; // checks from before 2026-11-12 have no verifiable message
const signer = ethers.verifyTypedData(verification.domain, verification.types, check.signedMessage, check.oracleSignature);
console.log(check.checkedAt, check.passed ? "passed" : "failed", signer === verification.oracleSigner ? "signature OK" : "MISMATCH");
}
signedMessage holds jobId (0 for a plain check, the escrow job otherwise),
endpointUrl, uptimeScore (100 or 0), latencyMs,
slaMet and timestamp (unix seconds).
Checks recorded before 2026-11-12 were signed in an earlier format that cannot be verified: they are left out of
checks and summary, and
earlierChecks.count gives their number. The oracle's address is also published at
https://agentsla-oracle.agentsla-dev.workers.dev/v1/health.