curl --request POST \
--url https://api.limitguard.ai/v1/agent/check \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"wallet": "0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b",
"agent_id": "1",
"domain": "example.com"
}
'import requests
url = "https://api.limitguard.ai/v1/agent/check"
payload = {
"wallet": "0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b",
"agent_id": "1",
"domain": "example.com"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
wallet: '0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b',
agent_id: '1',
domain: 'example.com'
})
};
fetch('https://api.limitguard.ai/v1/agent/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.limitguard.ai/v1/agent/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wallet' => '0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b',
'agent_id' => '1',
'domain' => 'example.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.limitguard.ai/v1/agent/check"
payload := strings.NewReader("{\n \"wallet\": \"0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b\",\n \"agent_id\": \"1\",\n \"domain\": \"example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.limitguard.ai/v1/agent/check")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"wallet\": \"0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b\",\n \"agent_id\": \"1\",\n \"domain\": \"example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/agent/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallet\": \"0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b\",\n \"agent_id\": \"1\",\n \"domain\": \"example.com\"\n}"
response = http.request(request)
puts response.read_body{
"wallet": "<string>",
"chain_id": "<string>",
"verdict": "block",
"verdict_reasons": [
"<string>"
],
"ran": [
"<string>"
],
"did_not_run": [
{
"component": "<string>",
"reason": "<string>"
}
],
"sanctions": {
"status": "ok",
"reason": "<string>",
"hit": true,
"lists": [],
"programs": [],
"list_as_of": "<string>",
"list_status": "<string>"
},
"balance": {
"status": "ok",
"chain_id": "<string>",
"reason": "<string>",
"balance_usdc": 123,
"balance_native": 123
},
"identity": {
"status": "ok",
"reason": "<string>",
"registry": "erc8004",
"wallet_agent_ids": [],
"agent_id": "<string>",
"agent_registered": true,
"agent_owner": "<string>",
"agent_wallet": "<string>",
"wallet_controls_agent": true
},
"reputation": {
"status": "ok",
"note": "<string>",
"reason": "<string>",
"agents": []
},
"wallet_risk": {
"status": "ok",
"reason": "<string>",
"risk_score": 123,
"risk_level": "<string>",
"rules_fired": []
},
"domain": {
"status": "ok",
"reason": "<string>",
"domain": "<string>",
"probes": {
"whois": "ok",
"dns": "ok",
"ssl": "ok"
},
"domain_age_days": 123,
"domain_expires_at": "<string>",
"has_mx": true,
"has_spf": true,
"has_dmarc": true,
"ssl_valid": true,
"ssl_issuer": "<string>",
"web_score": 123
},
"checked_at": "<string>",
"schema_version": "agent-check-v1"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Agent Check
Check a counterparty agent’s wallet: sanctions, balance, ERC-8004 identity, wallet risk, open feedback.
curl --request POST \
--url https://api.limitguard.ai/v1/agent/check \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"wallet": "0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b",
"agent_id": "1",
"domain": "example.com"
}
'import requests
url = "https://api.limitguard.ai/v1/agent/check"
payload = {
"wallet": "0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b",
"agent_id": "1",
"domain": "example.com"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
wallet: '0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b',
agent_id: '1',
domain: 'example.com'
})
};
fetch('https://api.limitguard.ai/v1/agent/check', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.limitguard.ai/v1/agent/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'wallet' => '0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b',
'agent_id' => '1',
'domain' => 'example.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.limitguard.ai/v1/agent/check"
payload := strings.NewReader("{\n \"wallet\": \"0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b\",\n \"agent_id\": \"1\",\n \"domain\": \"example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.limitguard.ai/v1/agent/check")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"wallet\": \"0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b\",\n \"agent_id\": \"1\",\n \"domain\": \"example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/agent/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallet\": \"0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b\",\n \"agent_id\": \"1\",\n \"domain\": \"example.com\"\n}"
response = http.request(request)
puts response.read_body{
"wallet": "<string>",
"chain_id": "<string>",
"verdict": "block",
"verdict_reasons": [
"<string>"
],
"ran": [
"<string>"
],
"did_not_run": [
{
"component": "<string>",
"reason": "<string>"
}
],
"sanctions": {
"status": "ok",
"reason": "<string>",
"hit": true,
"lists": [],
"programs": [],
"list_as_of": "<string>",
"list_status": "<string>"
},
"balance": {
"status": "ok",
"chain_id": "<string>",
"reason": "<string>",
"balance_usdc": 123,
"balance_native": 123
},
"identity": {
"status": "ok",
"reason": "<string>",
"registry": "erc8004",
"wallet_agent_ids": [],
"agent_id": "<string>",
"agent_registered": true,
"agent_owner": "<string>",
"agent_wallet": "<string>",
"wallet_controls_agent": true
},
"reputation": {
"status": "ok",
"note": "<string>",
"reason": "<string>",
"agents": []
},
"wallet_risk": {
"status": "ok",
"reason": "<string>",
"risk_score": 123,
"risk_level": "<string>",
"rules_fired": []
},
"domain": {
"status": "ok",
"reason": "<string>",
"domain": "<string>",
"probes": {
"whois": "ok",
"dns": "ok",
"ssl": "ok"
},
"domain_age_days": 123,
"domain_expires_at": "<string>",
"has_mx": true,
"has_spf": true,
"has_dmarc": true,
"ssl_valid": true,
"ssl_issuer": "<string>",
"web_score": 123
},
"checked_at": "<string>",
"schema_version": "agent-check-v1"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Body
An EVM wallet, and optionally the ERC-8004 agent id it claims.
EVM wallet address (0x + 40 hex characters). Read on Base.
"0x4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b"
Optional ERC-8004 agentId (decimal) the wallet claims. When given, the check reads that agent's owner and payment wallet and says whether this wallet is one of them.
"1"
Optional website domain the agent gives for itself (e.g. example.com). Reported with WHOIS age, mail records and TLS certificate; never read by the verdict.
253"example.com"
Response
Successful Response
The bundle: one verdict, and each component with its own status.
block, review, no_findings Show child attributes
Show child attributes
OFAC SDN digital-currency address list match for the wallet.
Show child attributes
Show child attributes
USDC and native (ETH) balance of the wallet on the deployed Base chain.
Show child attributes
Show child attributes
ERC-8004 identity registration of the wallet, and of the given agent id.
Show child attributes
Show child attributes
Open ERC-8004 feedback. Reported only; never read by the verdict.
Show child attributes
Show child attributes
The wallet screen's own risk score and the named rules that fired.
Show child attributes
Show child attributes
WHOIS (RDAP) age, DNS mail records and TLS certificate of the domain the caller gave.
Reported only; never read by the verdict. A field whose probe got no answer is None, never False.
Show child attributes
Show child attributes
"agent-check-v1"