{"service":"whether","version":"v1","generatedAt":"2026-10-25T02:31:05.064Z","baseUrl":"https://whether.work","defaultCadence":"weekly","supportedCadences":["weekly","monthly","quarterly","yearly"],"start":{"http":"GET https://whether.work/api/agent?view=state","mcp":"tools/call get_state","cli":"bun run cli:whether -- state --json","markdown":"GET https://whether.work/brief.md"},"endpoints":{"agent":"https://whether.work/api/agent","state":"https://whether.work/api/agent?view=state","mcp":"https://whether.work/api/mcp","brief":"https://whether.work/brief.md","llms":"https://whether.work/llms.txt","weekly":"https://whether.work/api/weekly","monthly":"https://whether.work/api/monthly","quarterly":"https://whether.work/api/quarterly","yearly":"https://whether.work/api/yearly","cadence":"https://whether.work/api/cadence","treasury":"https://whether.work/api/treasury","health":"https://whether.work/api/health"},"examples":{"weekly":"https://whether.work/api/agent?cadence=weekly","state":"https://whether.work/api/agent?view=state","jev":"https://whether.work/api/agent?format=jev"},"agent":{"invalidCadenceStatus":400,"views":["full","state"],"defaultView":"full","invalidViewStatus":400},"automation":{"check":"automation.ready in view=state; publishReadiness.ok in the full brief","refusesWhen":["the data is a saved copy, not a live reading","the record is more than 10 days old","report assembly failed"]},"mcp":{"endpoint":"https://whether.work/api/mcp","transport":"streamable-http","protocolVersions":["2025-11-25","2025-06-18","2025-03-26"],"server":{"name":"whether","title":"Whether — Weekly Operating Brief","version":"1.1.0"},"instructions":"Whether turns public macro data into weekly operating guidance for startup leaders. Call get_state first: one small answer with the conditions, the margin, whether the data is live and current (automation.ready; when it is false, say so and stop), where each score sits against its pause, resume and change lines, what moved each score, and the guidance. get_brief is the full weekly brief (about 22KB), for its wording, provenance and the other cadences. get_standup_line is the daily standup line with guidance movement and flip conditions. get_decision_rules gives the bounded rules behind the guidance. get_answer pulls one decision answer — hiring, raising capital, burn — with its current standing and the rules in force. get_context and get_projection place today's conditions in history and estimate how soon they change; both default to today's reading. get_recent_history gives one signal's trailing window, get_comps the SaaS valuation multiples, and stress_test_plan, lint_commitment, lint_sprint_goal and audit_sprint_retro check a plan or sprint against today's conditions. Informational only: not investment, legal, tax or employment advice.","local":"bun run mcp:whether (stdio, from a checkout of the repository: the same tools, plus pull_recent_site_info)","plainGet":"https://whether.work/api/mcp?tool=get_actions","tools":[{"name":"get_state","title":"Get the current state","description":"Start here. The current reading in one small answer of about 3KB. It holds the conditions and the margin from their change lines, the data's freshness, each score against its pause, resume and change lines, the moves behind each score since the earlier reading, the areas whose pause or resume lines those moves crossed, and the guidance. automation.ready says whether the data is live and current.","readOnly":true,"arguments":"none"},{"name":"get_brief","title":"Get the full weekly brief","description":"The full brief (about 22KB): summary prose, decision delta, flip watch, provenance and the agent handoff, for a cadence. Use get_state when you only need to decide; use week (e.g. '2026-w41') or period (e.g. '2024-q1') to retrieve frozen historical records.","aliases":["get_agent_brief"],"readOnly":true,"arguments":"cadence (optional: weekly/monthly/quarterly/yearly), week (optional), period (optional)"},{"name":"get_answer","title":"Get decision answer","description":"Get Whether's curated operating guidance, current standing, and bounded rules for one of its decision answers — hiring, roadmap expansion, raising capital, burn, sales headcount, product lines, go-to-market, briefing executives, or this week's funding climate and risk-on/risk-off posture.","readOnly":true,"arguments":"question (required)"},{"name":"get_standup_line","title":"Get the daily standup line","description":"Returns the daily standup one-liner stating guidance movement this week and the conditions that would change it.","readOnly":true,"arguments":"none"},{"name":"get_decision_rules","title":"Get the bounded decision rules","description":"The bounded rules behind the guidance: for each operating area, the action, the line that pauses it and the trigger that reverses it. Keyed by regime; one regime, or all four when none is given. The rules are the same every week; get_state says where today's scores sit against the lines.","readOnly":true,"arguments":"regime (optional: SCARCITY/DEFENSIVE/VOLATILE/EXPANSION)"},{"name":"get_context","title":"Get regime context","description":"How long a regime has lasted, how long its past runs lasted, and what most often came next, in months of month-end snapshots up to `latestSnapshot`. Defaults to today's conditions; `inputs` says which values were yours and which were today's.","readOnly":true,"arguments":"regime (optional: SCARCITY/DEFENSIVE/VOLATILE/EXPANSION)"},{"name":"get_projection","title":"Project weeks to a change in conditions","description":"Weeks until the scores cross a line where conditions change at a given pace, and the regime they would then be in. A score moving away from its line does not cross it. With no arguments it uses today's scores and their pace; give scores to ask what-if, and any pace you leave out is taken as 0. `inputs` says which values were yours, which were today's, and which were assumed.","readOnly":true,"arguments":"regime (optional: SCARCITY/DEFENSIVE/VOLATILE/EXPANSION), tightness (optional number), riskAppetite (optional number), tightnessDelta (optional number), riskAppetiteDelta (optional number)"},{"name":"get_comps","title":"Get SaaS valuation comps","description":"Median SaaS EV/Revenue multiple across 14 public companies, from SEC filings and delayed prices, or Yahoo Finance when those are down; the result names its source. Fails with each source's reason when none answers.","readOnly":true,"arguments":"none"},{"name":"get_signals","title":"Get historical data coverage","description":"Which years and months the historical record covers.","readOnly":true,"arguments":"none"},{"name":"get_recent_history","title":"Get one signal's trailing history","description":"The trailing 92-day window for one signal from the materialized model, for temporal analysis without parsing the whole brief.","readOnly":true,"arguments":"signal_key (required: TREASURY_1M/TREASURY_3M/TREASURY_2Y/TREASURY_10Y/BBB_CREDIT_SPREAD/HY_CREDIT_SPREAD/CPI_YOY/UNEMPLOYMENT_RATE/CHICAGO_FCI/VIX_INDEX)"},{"name":"stress_test_plan","title":"Stress-test a planned decision against today's conditions","description":"Audits a proposed operational decision (hiring, cloud commit, office lease, GTM pricing) against today's funding pressure and risk appetite, and returns the fragile assumptions, the pause line and the resume line.","readOnly":true,"arguments":"planText (required), lifecycle (optional: DISCOVERY/GROWTH/SCALE/MATURE)"},{"name":"lint_commitment","title":"Lint a spec or contract for fixed commitments","description":"Scans an engineering PRD, RFC or contract for fixed capital lock-in (multi-year reservations, large upfront cash commitments) and offers reversible alternatives, against today's conditions.","readOnly":true,"arguments":"specText (required)"},{"name":"lint_sprint_goal","title":"Lint a sprint goal against today's conditions","description":"Takes a sprint goal or story-level plan and says whether it holds, pauses, or needs a written way to undo it under today's conditions, with the pause line that would fire. A sprint goal is a planned decision at smaller granularity, so this reuses the stress-test engine.","readOnly":true,"arguments":"goalText (required), lifecycle (optional: DISCOVERY/GROWTH/SCALE/MATURE)"},{"name":"audit_sprint_retro","title":"Audit sprint decisions for regime pause violations","description":"Audits a sprint's recorded commitments against today's bounded pause triggers to surface retro violations (e.g. net-new hiring or platform rewrites committed while pause lines are active).","readOnly":true,"arguments":"planText (optional), lifecycle (optional: DISCOVERY/GROWTH/SCALE/MATURE)"},{"name":"get_analog_playbook","title":"Get the historical analog playbook","description":"Matches today's conditions against four hand-picked past periods (Q3 2007, Q4 2018, Q2 2021, Q2 2022) and returns, for the closest, the common mistake then, the move that held up, and the sign that marked the turn. Editorial summaries of the public record, not a measured sample of companies.","readOnly":true,"arguments":"none"},{"name":"list_agent_skills","title":"List the agent skills","description":"The skill ids and output order an agent runtime should follow when working from a Whether brief.","readOnly":true,"arguments":"none"}]},"use":{"summary":"Informational only. Not investment, legal, tax or employment advice, and not a forecast.","humanReview":"Not for use as the sole or determinative basis for decisions affecting individuals (hiring, termination, compensation, promotion). Human review is required.","policy":"https://whether.work/acceptable-use-policy"},"revisableDelegation":{"loopPosition":"act","loopRole":"turns changed conditions into weekly operating guidance; the operator acts","standard":"https://ethotechnics.org/standards/std-07-revisable-delegation-record","schema":"https://ethotechnics.org/api/schema/revisable-delegation-record.schema.json","schemaVersion":"0.1.0","conformanceLevel":2,"verifier":"https://ethotechnics.org/diagnostics/record-conformance","kinds":["belief"],"records":"https://whether.work/api/decision-memory?format=records","upstream":[],"downstream":[]}}