curl --request GET \
--url http://localhost:3101/api/signalsimport requests
url = "http://localhost:3101/api/signals"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('http://localhost:3101/api/signals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3101",
CURLOPT_URL => "http://localhost:3101/api/signals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:3101/api/signals"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3101/api/signals")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3101/api/signals")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"version": "<string>",
"data_mode": "measured",
"generated_at": "<string>",
"total": 123,
"matched": 123,
"returned": 123,
"signals": [
{
"version": "<string>",
"signal_id": "<string>",
"target": {
"chain": "<string>",
"address": "<string>"
},
"verdict": "avoid",
"confidence": 123,
"reasoning": "<string>",
"evidence_used": [
"<string>"
],
"evidence_hash": "<string>",
"prompt_version": "<string>",
"model": "<string>",
"generated_at": "2023-11-07T05:31:56Z",
"generated_at_unix": 123,
"call_hash": "<string>",
"anchor_tx": "<string>",
"anchor_status": "<string>",
"anchor_chain_id": 123,
"cost_usd": 123,
"cached": true,
"run_id": "<string>",
"evidence_source_count": 123
}
],
"calibration": {},
"served": {},
"read_this_first": {
"data_mode": "<string>",
"meaning": "<string>",
"anchoring": "<string>",
"not_advice": "<string>",
"verify": "<string>"
}
}List published signals
The public feed of agent-generated risk signals.
Read data_mode before reading anything else: empty means no agent run has happened on the host serving this response — NOT that no risks were found. The calibration block is always returned in full regardless of filters, because a hit rate computed over a caller’s chosen subset would be a different number wearing the same name.
Evidence bundles are omitted here because a list of fifty bundles is megabytes. Fetch one signal to get its bundle.
curl --request GET \
--url http://localhost:3101/api/signalsimport requests
url = "http://localhost:3101/api/signals"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('http://localhost:3101/api/signals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3101",
CURLOPT_URL => "http://localhost:3101/api/signals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:3101/api/signals"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3101/api/signals")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3101/api/signals")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"version": "<string>",
"data_mode": "measured",
"generated_at": "<string>",
"total": 123,
"matched": 123,
"returned": 123,
"signals": [
{
"version": "<string>",
"signal_id": "<string>",
"target": {
"chain": "<string>",
"address": "<string>"
},
"verdict": "avoid",
"confidence": 123,
"reasoning": "<string>",
"evidence_used": [
"<string>"
],
"evidence_hash": "<string>",
"prompt_version": "<string>",
"model": "<string>",
"generated_at": "2023-11-07T05:31:56Z",
"generated_at_unix": 123,
"call_hash": "<string>",
"anchor_tx": "<string>",
"anchor_status": "<string>",
"anchor_chain_id": 123,
"cost_usd": 123,
"cached": true,
"run_id": "<string>",
"evidence_source_count": 123
}
],
"calibration": {},
"served": {},
"read_this_first": {
"data_mode": "<string>",
"meaning": "<string>",
"anchoring": "<string>",
"not_advice": "<string>",
"verify": "<string>"
}
}Query Parameters
Filter by verdict.
avoid, trust, watch, no_opinion Filter by chain.
hl, base, solana Filter by target address (case-insensitive).
Maximum signals to return.
1 <= x <= 200Response
The signal feed.
empty means no run has happened on this host — NOT that no risks were found.
measured, empty Signals published on this deployment, before filters.
Signals matching your filters.
Signals in this response, after limit.
Show child attributes
Show child attributes
Realized calibration of the confidence scores. Always returned in full, never filtered — a hit rate computed over a caller's chosen subset would be a different number wearing the same name.
Whether the feed was read from the live engine or the committed snapshot.
Prose statement of what this payload does and does not establish. Part of the response rather than only the docs, because a payload travels where documentation does not.
Show child attributes
Show child attributes