Daily cost
Search and AI spend per day, from each call's measured usage and the prices on the Prices tab.
Show as a table
By provider and model
Totals for the period shown above.
Visitor access
Visitors sign in on /login with a 6-digit PIN. The admin page always uses your admin code instead.
Create a PIN
Give each person or team their own PIN, so you can see who signs in and switch one off without affecting the others.
PINs
Recent sign-ins
The last 40 attempts. After 5 wrong PINs an address is locked out for 15 minutes; after 40 wrong PINs from anywhere, all sign-ins pause for 15 minutes.
Market data · Massive
The main source for prices: indices, the rupiah, gold and (with a futures plan) oil from massive.com, read through the Massive API (with an API key) or Massive's MCP connector (sign in with your Massive account). Figures Massive doesn't cover (IHSG, LQ45, coal, CPO, nickel, bond yields) keep coming from the official feeds and web search.
Instruments
Each row feeds one dashboard figure. Symbols use Massive's format: indices I:SPX, forex C:USDIDR, crypto X:BTCUSD, stocks AAPL, futures by product code (CL, BZ, GC; the most-traded contract month is used). Stream channel is optional and overrides the default (for example A.I:SPX for per-second aggregates). Both the API and the MCP connector use this list.
Massive API
REST snapshots and the live WebSocket ticker, with your Massive API key. Switch it off to use only the MCP connector below.
Massive MCP connector
Massive's remote MCP server (https://mcp.massive.com/) signs in with your Massive account instead of an API key, and returns the data your Massive plan includes. This server uses it as the price source when the API is off, and as the fallback when the API fails.
Connect opens Massive's sign-in in a new window. This server registers itself with Massive as an app, and keeps the sign-in encrypted with your admin code; it renews itself, so you only sign in again if you disconnect, change the admin code or Massive revokes it. On claude.ai, the dashboard reads the same connector once you add it as a custom connector named Massive with the URL above (Settings → Connectors).
Live stream status
One server-side connection per asset class (Massive allows one per key), shared by every open dashboard. The Massive key never reaches viewers' browsers. The connection closes about a minute after the last dashboard does.
Plans: indices stream needs Indices Starter (15-min delayed) or Advanced (real time); forex needs Currencies Starter or higher; futures snapshots need Futures Developer or higher.
News sources
Where the headline wire, the map pins and the refresh brief get their news. Sources are tried in this order; the web search is the fallback when the sources above it deliver too little.
Webz.io · scenario news
The main source for the refresh brief: one search per scenario, newest first, from news sites worldwide. New posts are cached for 24 hours, so the brief always has the scenario coverage even between Webz.io calls. When Webz.io returns fewer than 10 recent articles, NewsAPI.ai and then web search take over.
Scenario queries
Webz.io query syntax, e.g. title:(Hormuz OR "Strait of Hormuz") language:english. Leave out site_type:news; it is added automatically.
NewsAPI.ai
The main source for the headline wire and the second source for the brief (after Webz.io): articles from 150,000+ publishers, searched by headline keywords in English and Indonesian. Each search uses 1 token of your plan.
Free feeds
No key and no cost. They run on every wire poll. General feeds keep only stories about markets, policy, conflict or the regions on the map; tick "All" for feeds that are already on topic.
Google News feeds search the last 1–2 hours and are usually the newest source. Edit a query by removing the feed and adding your own news.google.com/rss/search?q=…+when:1h URL.
GDELT
Fallback: web search
Parallel or Exa search (set on the Search API tab). For the brief it runs when Webz.io and NewsAPI.ai together bring too little; for the wire, when NewsAPI.ai fails, is off or over its cap and the free feeds bring fewer new articles than the threshold.
News filter and relevance
Stories that match are dropped everywhere: the headline wire, Today's headlines, Today's news, the AI brief and /api/news, for every viewer. Already-stored stories are hidden too, so the change shows on dashboards within a minute. Sports, celebrity and similar noise is filtered by default. Viewers can also hide a single story in their own browser with Hide.
/api/news?all=1). Copies of one story from several sources are merged. Headlines not screened yet, or with this off, are judged by fixed keyword rules.Other sources worth adding
Not connected. Each would need its own key and terms; listed for when you want deeper coverage.
Map
The background map on the Executive page. All choices use OpenStreetMap data. The first two need no key; the others need a key from the provider.
Search API
The search service the server uses for figures, hotspot news, scenario news and the headline wire.
Search API keys
Keys saved here are encrypted in the database and override Worker secrets. Remove one to fall back to the secret.
AI model
The model that reads the search results and returns today's figures, hotspot status, scenario levels and the bottom line.
Save cost
AI API keys
Encrypted in the database. A test sends a tiny prompt, which costs a fraction of a cent and shows on the Usage tab.
Schedule
The server checks every minute and runs whatever is due. Now: .
Estimated cost per weekday
At the saved settings and prices. The AI range depends on how often there is news: the low end assumes it runs only when required by the "at least every" setting.
Budget
Run now
Ignores the schedule and the budget pause.
Prices
Used to cost each call as it happens. Defaults are the published list prices (October 2026); change them if your contract differs. Past calls keep the cost they were logged with.
Updates
The last 40 refreshes and wire polls.
Recent API calls
The last 60 paid calls, with tokens, cost and errors.