Signl for agents

Market context your agent can act on

One deterministic read on market conditions — versioned, auditable, and honest when it doesn't know. Your agent checks it before it acts, and you can show what it said on any past date. No language model anywhere in the path, so two runs on the same tape agree.

The daily market gate is free and needs no account.

Free

Free

Give your agent a risk posture it can branch on, and the broad-market rails behind it.

CoverageSample
FreshnessAfter the close
History30 days
Calls / day25
API keys1
Workflow recipesYes
Try it now, no key

Active / Builder

$99/month

Ship a product on it: intraday state, five years of history to backtest against, and volume for a real user base.

CoverageFull market
FreshnessIntraday, every 15 min
History5 years
Calls / day25,000
API keys5
Workflow recipesYes
Get Active / Builder

Team

On request

Desk-grade access, with an archive long enough to evidence what the feed said on any past date.

CoverageFull market
FreshnessIntraday, every 15 min
HistoryFull archive
Calls / day250,000
API keys15
Workflow recipesYes
Talk to us

What these rows mean

Coverage
Which instruments the reference covers. Sample is a fixed set of large sectors and benchmarks — enough to answer "is this a market to act in at all". Full market adds every sector and theme we track, so you can ask the question about the thing you actually trade.
Freshness
How current the market state is. After the close means the state reflects yesterday's finished session. Premarket and close adds a read before the open. Intraday re-computes through the day, so a decision your agent makes at 14:00 is made on 14:00's conditions.
History
How far back you can replay the state. This is evidence, not data: it is how you check whether the reference would have improved your agent's output before you wire it in — and how you show what it said on a date someone later asks about.
Calls / day
How often you may read it. Note that re-reading an unchanged state is cheap by design: state_version only changes when the market state does.
API keys
How many separate consumers you can run — one per bot, service or desk, so they can be rotated or revoked independently.
Workflow recipes
Ready-made integrations — running the gate before your agent acts, filtering a scanner by sector rotation, and using Signl from ChatGPT. Free for everyone, no account.

Why your agent should use Signl

Why your agent needs itWhat it costsWhat you get
Know whether conditions support acting at all 1 call, ~70 tokens, no inference — against 4–6 calls and ~4,000 tokens to work it out from raw data Fewer bad calls reach your users
Grade a setup the same way twice Free — the same tape returns the same answer A setup is not rated one way on Tuesday and another on Wednesday, so your users keep trusting the product
Watch for change without paying to poll state_version changes only when the state does Run as often as you like; an unchanged poll is free to re-read
Show what the market said on a past date Included from Personal Agent up Prove the filter would have helped before wiring it in — and evidence what you relied on afterwards

?format=decision returns the eight fields an agent branches on — regime, risk mode, posture, confirmation, confidence, quality, version, expiry — and nothing else. ?format=compact adds the reasoning when a human needs to read it; full adds prose and discovery material an agent reads once at integration.

Before you pay for anything

No key, no signup, 3 calls a day from your IP. If it is not obviously useful in ten seconds, do not buy it.

From a shell

curl https://signl.markets/api/v1/public/gate

From a bot

import json, urllib.request
g = json.load(urllib.request.urlopen("https://signl.markets/api/v1/public/gate"))["data"]
print(g["risk_mode"], g["new_risk_posture"], g["confirmation_requirement"])

Standard library only — nothing to install, nothing to authenticate. Those three fields are the whole decision: whether conditions support new market risk, how much size is warranted, and how much confirmation to require first. reason_codes tells you why, as bounded strings you can branch on rather than prose you have to parse.