Docs

Pressure is one number per dataset per UTC day, on a 0-5 scale with a label. Read it three ways: as MCP tools from an AI client, as REST calls with an API key, or as a public RSS feed of recent readings. Every surface serves the same data from the same pipeline.

Base and auth

Two endpoints, one account:

  • POST https://api-pressure-atlas.dev.adjames.com/mcp - MCP over streamable HTTP. Connectors in claude.ai and ChatGPT sign in with OAuth; other MCP clients pass an API key.
  • GET https://api-pressure-atlas.dev.adjames.com/v1/... - REST with an API key.

Create keys in the app (Account, then API keys). Keys start with pa_, are shown once, and can be revoked at any time. Pass one as a bearer token or an x-api-key header. Rate limits and the daily call quota are shared across MCP and REST: one budget however you call.

authentication
$ curl https://api-pressure-atlas.dev.adjames.com/v1/pressure/latest \
    -H "Authorization: Bearer pa_your_key"

GET /v1/pressure/latest

The newest closed UTC day's reading, banded to the 0-5 scale. The in-progress day is never served here; it would shift under the reader.

Query

Responses cache for five minutes; a repeated call inside that window costs nothing new upstream.

request
$ curl https://api-pressure-atlas.dev.adjames.com/v1/pressure/latest \
    -H "Authorization: Bearer pa_your_key"
response 200
{
  "date": "2026-08-19",
  "pressure": "3.2",
  "label": "high",
  "dataset": "macro",
  "dataset_name": "Macro (Global)"
}

GET /v1/pressure/recent

Daily readings for a window. The window is resolved against your plan: the free plan serves the latest closed day (a requested window is noted and ignored); Pressure Atlas Pro serves up to the most recent 30 days.

Query

  • dataset - defaults to macro.
  • date_start, date_end - YYYY-MM-DD, inclusive, UTC. Without date_start the window is the last 30 days; without date_end it ends at the latest closed day.

Out-of-plan windows are clamped with a note, never rejected.

request
$ curl "https://api-pressure-atlas.dev.adjames.com/v1/pressure/recent?date_start=2026-08-13" \
    -H "Authorization: Bearer pa_your_key"
response 200
{
  "dataset": "macro",
  "window": { "start": "2026-08-13", "end": "2026-08-19" },
  "notes": [],
  "readings": [
    { "date": "2026-08-13", "pressure": "2.6", "label": "moderate" },
    { "date": "2026-08-14", "pressure": "2.9", "label": "moderate" },
    { "date": "2026-08-15", "pressure": "3.4", "label": "high" }
  ]
}

GET /v1/pressure/export

Every daily reading your plan covers, in one call. Pressure Atlas Pro only; the free plan receives a 403 with an upgrade link.

Query

  • format - csv (default) or json.
  • dataset, date_start, date_end - as on /recent, without the 30-day cap.

The CSV shape is date,pressure,label, one row per day. The JSON shape matches /recent. Both download with a dated filename.

request
$ curl -O "https://api-pressure-atlas.dev.adjames.com/v1/pressure/export?format=csv" \
    -H "Authorization: Bearer pa_your_key"
pressure-macro-....csv
date,pressure,label
2026-07-21,2.2,moderate
2026-07-22,2.8,moderate
2026-07-23,3.6,high

GET /v1/datasets

The catalog with your plan's access per dataset. The full catalog is always visible; access depth is what the plan changes.

response 200
{
  "plan": { "name": "Free", "upgrade_url": "..." },
  "datasets": [
    {
      "slug": "macro",
      "name": "Macro (Global)",
      "description": "Pressure: a daily measurement ...",
      "history_start": "2021-04-01",
      "your_access": "the latest pressure only",
      "export": false
    }
  ]
}

GET /public/pressure/rss

The readings feed: the last five closed days as RSS, no account needed. One new item per UTC day - point a feed reader or an automation at it. (The blog feed is separate.)

request
$ curl https://api-pressure-atlas.dev.adjames.com/public/pressure/rss
feed item
<item>
  <title>2026-08-19 - tightening (3.2 / 5)</title>
  <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
  <description>Pressure 3.2 / 5 (tightening) for
  Macro (Global) on 2026-08-19 (UTC).</description>
</item>

Connect a client

  1. Open Settings, then Connectors.
  2. Choose Add custom connector and paste https://api-pressure-atlas.dev.adjames.com/mcp.
  3. A sign-in window opens; the connector is ready when it closes.

To check any connection, ask the client: "What is today's pressure?"

connector url
https://api-pressure-atlas.dev.adjames.com/mcp

The seven MCP tools

Every plan sees all seven tools; the plan decides how much history a call may return, exactly like REST.

ToolReturns
list_datasetsThe catalog and your plan's access. Call this first.
get_latest_pressureThe newest closed day's reading, 0-5 with a label.
get_recent_pressureDaily readings for a window as compact CSV.
export_pressure_csvEvery covered reading in one CSV. Pressure Atlas Pro only.
searchFree-text search over the catalog; returns ids for fetch.
fetchOne document by id, e.g. dataset:macro.
get_usageYour plan and quota position today; free to call.
tools/call
{ "name": "get_latest_pressure",
  "arguments": { "dataset": "macro" } }
result
Pressure: 3.2 / 5 (high) on 2026-08-19
(Macro (Global)).

Errors

REST errors are standard HTTP with one JSON body shape.

StatusCodeWhen
401unauthorizedMissing, invalid, or revoked key.
400invalid_request, invalid_windowBad date format, start after end, window before history.
403plan_requiredExport on the free plan; body carries an upgrade link.
404unknown_datasetSlug not in the catalog.
429rate_limitedPer-minute or daily budget spent; Retry-After is set.
503upstream_unavailable, data_pendingData service down, or the newest day still preparing.
error body
{
  "error": {
    "code": "plan_required",
    "message": "Export is part of the Pressure Atlas Pro plan ($79/mo).",
    "upgrade_url": "..."
  }
}

Limits and freshness

  • Pressure is daily: one reading per dataset per UTC day. Default windows end at the latest closed day; ask for today explicitly with date_end and it arrives marked partial.
  • Free plan: 200 calls a day, 10 a minute. Pressure Atlas Pro: 10,000 a day, 120 a minute. MCP and REST draw from the same budget.
  • Responses are cached for five minutes, so a repeated call inside that window costs nothing new.