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.

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.

$0.01
first offer: wallet risk snapshot
Base
USDC, chain 8453
POST
/v1/services/wallet_risk_snapshot

Exact 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
});
pay to 0x64e4e6c18849ba687A468dcad0A582AC6f8089E4
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.

Token scanner's current Settled delivery status

Settled checks paid delivery against the listing. Its badge is not an endorsement of token safety or financial accuracy.

EndpointPriceWhat it does
GET /scan/tokens$0.02Discover token market snapshots, recent activity and follow-up risk checks
/v1/services/wallet_risk_snapshot$0.01First offer: score a wallet before allowlisting, paying, or routing
/v1/services/due_diligence_report$0.25Generate a persistent wallet or token report with evidence and controls
/v1/services/agent_risk_firewall$0.25Batch-check up to five payments or swaps and receive an audit receipt
/v1/services/x402_counterparty_reputation$0.05Score an x402 endpoint and merchant before payment
/v1/services/agent_spend_guard$0.10Allow, deny, or require review before an agent spends
/v1/services/pre_trade_guard$0.10Execute, reduce, or deny a proposed swap

Machine-readable catalogs

JSON /v1/services
JSON /.well-known/x402.json
JSON /v1/x402.json
monitor /x402/dashboard