curl
BASE_URL=http://localhost:3000
curl --silent --show-error \
"$BASE_URL/api/v1/catalog" |
python3 -m json.toolMachine-readable product
A bounded, machine-readable intelligence service for agents, developers, labels, rights operators, and music-business software.
No authentication or payment is required for the six free routes. The current canonical publication is verified source-backed reporting. Archived fixture content remains explicitly identified in historical publication records.
Live free access
These routes are operational now and may be called directly by agents, applications, command-line clients, or browser-based tooling.
| Endpoint | Product | Description | Format |
|---|---|---|---|
| /llms.txt | LLM discovery document | Plain-text service purpose, live routes, fixture status, response semantics, attribution, correction, and privacy guidance. | text/plain |
| /agent/capabilities | Agent capabilities | Machine-readable supported capabilities, limitations, coverage, access status, and public-data boundaries. | application/json |
| /openapi.json | OpenAPI specification | OpenAPI 3.1 description of all six free and three x402-paid operations. | application/json |
| /api/v1/catalog | Product catalog | Live free and x402-paid products with implementation status, format, access requirements, and pricing. | application/json |
| /api/v1/preview/daily/latest | Latest daily preview | Bounded preview of the latest canonical publication, returning no more than two normalized Signal records. | application/json |
| /api/v1/health | Service health | Current service status, API version, request-time timestamp, safe build metadata, and discovery links. | application/json |
Local client examples
Run the development server with pnpm dev, then use these examples against localhost. Set SIGNAL_BASE_URL to use another deployment.
curl
BASE_URL=http://localhost:3000
curl --silent --show-error \
"$BASE_URL/api/v1/catalog" |
python3 -m json.toolJavaScript
const baseUrl =
process.env.SIGNAL_BASE_URL ??
"http://localhost:3000";
const response = await fetch(
`${baseUrl}/api/v1/preview/daily/latest`,
);
if (!response.ok) {
throw new Error(
`Signal request failed: ${response.status}`,
);
}
const preview = await response.json();
console.log({
status: preview.data_status,
reportDate: preview.publication.report_date,
returned: preview.preview.returned_record_count,
});Python
import json
import os
from urllib.request import urlopen
base_url = os.getenv(
"SIGNAL_BASE_URL",
"http://localhost:3000",
)
with urlopen(
f"{base_url}/agent/capabilities"
) as response:
capabilities = json.load(response)
print(capabilities["status"])
print(
capabilities["access"][
"live_free_endpoints"
]
)Response semantics
Signal responses preserve context needed by downstream agents instead of flattening facts, interpretation, uncertainty, and correction history into one field.
01
Original factual summaries grounded in linked sources are placed under factual_reporting.
02
Interpretation, music-industry impact, relevance, and affected components are kept under daorecords_analysis.
03
Confirmed facts, allegations, proposals, commentary, and unresolved claims use controlled source-status values.
04
Impact level, confidence, and explicit limitations remain visible to downstream agents.
05
Supersession and correction lineage are preserved rather than silently overwriting material factual records.
Current data warning
The latest preview currently uses a verified source-backed publication. Checkdata_statusandpublication.is_fixturebefore using any preview.
Preview boundary
The free daily preview is deterministic and bounded to at most two records. It is not a substitute for the live complete paid daily product.
Live paid access
Each protected route returns HTTP 402 until the client supplies a valid x402 v2 payment payload. Verification occurs before protected content is generated, and settlement occurs only after a successful response.
| Endpoint | Product | Price | Access |
|---|---|---|---|
| /api/v1/daily/latest | Complete latest daily Signal records and full synthesis | $0.03 USDC | Live · x402 required |
| /api/v1/events | Filtered structured event records | $0.03 USDC | Live · x402 required |
| /api/v1/weekly/latest | Weekly synthesis, clusters, timeline, and recommendations | $0.15 USDC | Live · x402 required |
01 · Request
An unpaid request returns HTTP 402 with a base64-encodedPAYMENT-REQUIREDheader describing the exact price, asset, network, and receiving address.
02 · Pay
The client retries with its x402 v2 payload inPAYMENT-SIGNATURE. Signal verifies it through the configured Coinbase CDP facilitator.
03 · Settle
Successful responses settle exact USDC on Base mainnet and includePAYMENT-RESPONSE. Handler failures are not settled.
Production payment rail
x402 version 2 · exact scheme · USDC on Base mainneteip155:8453· Coinbase CDP facilitator. DAOrecords Signal stores no server-side wallet private key. Only the public receiving address and facilitator credentials are configured at runtime.
Rights boundary
Preserve original source links. DAOrecords Signal does not transfer article, image, paywall, or publisher rights. Bulk republication, redistribution, and resale require a separate agreement.
Operating documentation