Connect any MCP client to https://elsas.it/mcp.
Transport: Streamable HTTP. Spec: 2025-11-25.
{
"mcpServers": {
"elsas": {
"url": "https://elsas.it/mcp"
}
}
}
Live — no auth required. Free sample report available.
Your agent talks to elsas.it in 3 steps:
POST /mcp
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2025-11-25",
"capabilities":{},
"clientInfo":{"name":"my-agent","version":"1.0"}
}}
→ 200 OK
{
"jsonrpc":"2.0","id":1,"result":{
"protocolVersion":"2025-11-25",
"serverInfo":{"name":"elsas-security-intel","version":"1.0"},
"capabilities":{"tools":{},"resources":{},"prompts":{}}
}
}
POST /mcp
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
→ 200 OK
{
"jsonrpc":"2.0","id":2,"result":{"tools":[
{"name":"get_today", "description":"Today's report (paid)"},
{"name":"get_sample_report", "description":"Yesterday's report (free, try before you buy)"},
{"name":"list_available", "description":"All report dates (free)"}, ]}
}
POST /mcp
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_today"}}
→ 402 Payment Required
X402-Version: 2
X402-Network: eip155:8453
X402-Scheme: exact
X402-Asset: USDC
X402-Amount: 0.10
X402-PayTo: 0x3314b7f8F318987C7Af05122db895a0E41f88c09
X402-Asset-Address: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
{
"jsonrpc":"2.0","id":3,
"error":{
"code":-32000,
"message":"Payment required",
"data":{
"x402":{
"version":2,
"accepted":[{
"scheme":"exact",
"network":"eip155:8453",
"amount":"100000",
"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals":6,
"payTo":"0x3314b7f8F318987C7Af05122db895a0E41f88c09",
"extra":{"name":"USD Coin","version":"2"},
"maxTimeoutSeconds":3600
}],
"facilitatorUrl":"https://elsas.it",
"docsUrl":"https://elsas.it/docs"
}
}
}
}
One paid tool: get_today — $0.10 USDC on Base (eip155:8453).
Everything else is free. No accounts. No subscriptions. Pay per request.
To pay, your agent must send a Payment-Signature header with each
paid request. The value is a Base64-encoded JSON object.
Payment-Signature: eyJzY2hlbWUiOiAiZXhhY3QiLCAi...
Decoded structure:
{
"scheme": "exact",
"network": "eip155:8453",
"amount": "100000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6,
"payTo": "0x3314b7f8F318987C7Af05122db895a0E41f88c09",
"extra": {"name": "USD Coin", "version": "2"},
"maxTimeoutSeconds": 3600,
"signature": "0x...",
"from": "0x...",
"nonce": "...",
"timestamp": 1718000000
}
Signature: EIP-712 typed data sign over the payment payload. Your agent signs with its wallet private key — keys never leave the agent.
Verification: The facilitator (self-hosted)
verifies the signature, checks the on-chain USDC balance, and confirms the
transfer is valid. All of this is handled automatically by x402 client libraries.
Elsas uses x402 — an open payment protocol that lets agents pay with stablecoins directly in HTTP. No API keys, no signup.
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
const account = privateKeyToAccount(process.env.PRIVATE_KEY);
const wallet = createWalletClient({ account, chain: base, transport: http() });
const client = new x402Client();
registerExactEvmScheme(client, { signer: wallet });
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
// Call get_today — payment handled automatically
const res = await fetchWithPayment("https://elsas.it/mcp", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: { name: "get_today" }
})
});
const data = await res.json();
from x402 import x402Client
from web3 import Web3
client = x402Client(
private_key=os.environ["PRIVATE_KEY"],
rpc_url=os.environ["BASE_RPC_URL"]
)
# Payment header is generated automatically
headers = client.get_payment_headers(
url="https://elsas.it/mcp",
method="POST",
body='{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_today"}}'
)
import requests
res = requests.post("https://elsas.it/mcp",
headers={**headers, "Content-Type": "application/json"},
json={"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_today"}}
)
@x402/fetch + @x402/evm (npm) or x402 (pip)get_sample_report — Yesterday's full report. No params. Same JSON format, same signature verification as today's paid report.list_available — All report dates with summaries.report://latest $0.10 — Today's report as JSON resource.report://{date} — Report by date, e.g. report://2026-05-23. Free.morning_briefing — Agent workflow: fetch get_today, surface critical items, suggest integrations. Payment-aware.Three categories per daily report:
Every item includes: why_it_matters, sources, importance (1–5).
/.well-known/mcp.json — Agent discovery (public, no auth)/docs/agent/manifest.json — Full manifest (auth required)Reports generated automatically at 06:00 CET daily.