SYS84 Agent Decision Layer
Machine-readable wallet, payment, counterparty, and pre-trade decisions for autonomous agents. Payment is USDC on Base. No account or API key.
Connect your agent with MCP
Add https://api.sys84.org/mcp to a client that supports Streamable HTTP. No API key or wallet connection is required.
list_services()returns supported products, example inputs and purchase URLs.get_payment_quote(service)acceptsscan_tokensorwallet_risk_snapshotand fetches a current unsigned x402 quote.
These are free discovery tools. They do not return purchased data, sign payments or move funds. To buy a result, use your own x402 HTTP client at the returned URL and review its payment requirements first. An unavailable service returns an error rather than a payment quote.
This unsigned handshake checks the connection without making a purchase:
curl https://api.sys84.org/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'
A successful response contains serverInfo.name equal to SYS84 Public Discovery. MCP clients handle initialization and tool discovery automatically.
/v1/services/wallet_risk_snapshotExact request body
{
"address": "0x64e4e6c18849ba687A468dcad0A582AC6f8089E4",
"chain": "base",
"refresh": true
}
Discover payment requirements
curl -i -X POST https://api.sys84.org/v1/services/wallet_risk_snapshot \
-H "Content-Type: application/json" \
-d '{"address":"0x64e4e6c18849ba687A468dcad0A582AC6f8089E4","chain":"base","refresh":true}'
Pay with awal x402
npx awal@2.0.3 x402 details https://api.sys84.org/v1/services/wallet_risk_snapshot --json
npx awal@2.0.3 x402 pay https://api.sys84.org/v1/services/wallet_risk_snapshot \
-X POST \
-d '{"address":"0x64e4e6c18849ba687A468dcad0A582AC6f8089E4","chain":"base","refresh":true}' \
--max-amount 10000 \
--json
Pay with raw x402 headers
First call without payment to get the HTTP 402 challenge. Sign the returned EIP-3009 payment requirement, then retry with one of these headers:
PAYMENT-SIGNATURE: <base64 PaymentPayload>
X-Payment: <base64 PaymentPayload>
Official x402 Node / axios client
Use the official x402 axios wrapper when possible. It reads PAYMENT-REQUIRED, signs the EIP-3009 authorization, retries with PAYMENT-SIGNATURE, and reads PAYMENT-RESPONSE after settlement.
npm install @x402/axios @x402/evm viem axios
import axios from "axios";
import {{ wrapAxiosWithPayment, x402Client }} from "@x402/axios";
import {{ ExactEvmScheme }} from "@x402/evm/exact/client";
import {{ privateKeyToAccount }} from "viem/accounts";
const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(account));
const paid = wrapAxiosWithPayment(axios.create(), client);
const response = await paid.post("https://api.sys84.org/v1/services/wallet_risk_snapshot", {{
address: "0x64e4e6c18849ba687A468dcad0A582AC6f8089E4",
chain: "base",
refresh: true
}});
Manual axios fallback
Plain axios does not pay automatically. If your agent receives HTTP 402 without the official wrapper, it must read the returned accepts[0], sign an EIP-3009 TransferWithAuthorization, and retry the same request with X-Payment. Download the helper at /x402/client/axios.js.
npm install axios ethers
curl -o x402AxiosClient.js https://api.sys84.org/x402/client/axios.js
const { callSys84PaidService } = require("./x402AxiosClient");
const response = await callSys84PaidService("wallet_risk_snapshot", {
address: "0x64e4e6c18849ba687A468dcad0A582AC6f8089E4",
chain: "base",
refresh: true
});
asset USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
network Base mainnet, chain 8453
Paid services
Discover tokens, then check the risks
The token scanner costs 0.02 USDC on Base. It returns selected market snapshots with source, retrieval time, liquidity, price changes, and recent activity. Missing activity is null; reported zero stays zero.
curl -i 'https://api.sys84.org/scan/tokens?chain=base&limit=10&min_liquidity=10000'
This unsigned request returns a 402 quote. Use the payment client above to authorize the quoted amount. Compare 5-minute and 1-hour activity with the 24-hour total; the ranking is a heuristic, not a prediction or safety check.
For a selected token, request a separate 0.10 USDC risk check with its address and your proposed size:
POST /v1/services/pre_trade_guard
{"token_address":"ADDRESS_FROM_SCAN","chain":"base","size_usd":25,"risk_tolerance":"low"}
Replace ADDRESS_FROM_SCAN with the returned token address. Review missing evidence, warnings, and the decision. Neither request executes a trade. Inspect each quote; do not automatically repay after a timeout.
Settled checks paid delivery against the listing. Its badge is not an endorsement of token safety or financial accuracy.
| Endpoint | Price | What it does |
|---|---|---|
| GET /scan/tokens | $0.02 | Discover token market snapshots, recent activity and follow-up risk checks |
| /v1/services/wallet_risk_snapshot | $0.01 | First offer: score a wallet before allowlisting, paying, or routing |
| /v1/services/due_diligence_report | $0.25 | Generate a persistent wallet or token report with evidence and controls |
| /v1/services/agent_risk_firewall | $0.25 | Batch-check up to five payments or swaps and receive an audit receipt |
| /v1/services/x402_counterparty_reputation | $0.05 | Score an x402 endpoint and merchant before payment |
| /v1/services/agent_spend_guard | $0.10 | Allow, deny, or require review before an agent spends |
| /v1/services/pre_trade_guard | $0.10 | Execute, reduce, or deny a proposed swap |