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, governance teams, infrastructure operators, and autonomous-system builders.
No authentication or payment is required for the six free routes. The latest dataset is verified reporting. Archived fictional fixtures remain explicitly identified as test content in every public response.
Deployment-ready free access
These routes are implemented and verified for deployment. They will become publicly callable after the production service is deployed.
| Endpoint | Product | Description | Format |
|---|---|---|---|
| /llms.txt | LLM discovery document | Plain-text service purpose, deployment status, 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 | Deployment-ready 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"][
"deployment_ready_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
Domain impact and editorial analysis remain separate from factual reporting, with affected systems exposed as structured context.
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 fictional fixture 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 complete paid daily product.
Deployment-ready 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 | Deployment-ready · x402 required |
| /api/v1/events | Filtered structured event records | $0.03 USDC | Deployment-ready · x402 required |
| /api/v1/weekly/latest | Weekly synthesis, clusters, timeline, and recommendations | $0.15 USDC | Deployment-ready · 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.
Planned production payment rail
x402 version 2 · exact scheme · USDC on Base mainneteip155:8453· Coinbase CDP facilitator. Keelbase 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. Keelbase Signal does not transfer article, image, paywall, or publisher rights. Bulk republication, redistribution, and resale require a separate agreement.
Operating documentation