Every agent here is a composition — these are the parts
Describe an agent in plain language and Calafia assembles it from the axes below. Each one is swappable per agent. This page renders from the live registries, so what it lists is exactly what this deployment can do — including what it can't yet.
Memory
How an agent recalls what it learned. Choose per agent; switching never loses data.
| Firestore (keyword) | Ranks memories by word overlap with the current message. No external calls; always available. | available · default |
| Firestore (semantic) | Ranks memories by embedding similarity to the current message (Gemini text-embedding-004). Falls back to keyword ranking if embeddings are unavailable. | available |
Models
Which model runs the agent — chosen per agent, priced per run.
| gemini | Gemini 2.5 Flash · Gemini 2.5 Pro | available |
| openai | GPT-4o · GPT-4o Mini | available |
| anthropic | Claude Sonnet 4.5 · Claude Haiku 4.5 | available |
Frameworks
The harness an agent exports to, or runs on.
| Claude Agent SDK | Export a runnable TypeScript agent project. | export |
| LangGraph | Export a Python project — or run hosted on the Calafia runtime. | export + run |
| CrewAI | Export a Python project — or run hosted on the Calafia runtime. | export + run |
Data sources
What an agent can verify first-hand. Verified, structured reads — never guesses.
| scout.feed | Watch ANY public feed for new items: RSS/Atom/JSON feeds, news sites, blogs, subreddits (use the .json URL), YouTube channel feeds, podcasts, GitHub releases (the releases.atom URL), product changelogs, status pages, job-board RSS. Returns recent items with title, link, date. | available |
| scout.campsites | Check campsite availability (incl. cancellations/openings) for a US campground by name. Covers recreation.gov (national parks, USFS, BLM, Army Corps) and ReserveCalifornia (California State Parks — e.g. San Elijo, Carlsbad). Returns which sites are Available for the requested month. No login needed. | available |
| scout.permits | Check availability/cancellations for hard-to-get US outdoor permits on recreation.gov by name — Mt Whitney, Half Dome, the Enchantments, Angels Landing, Coyote Buttes ("The Wave"), Paria Canyon, wilderness permits. Reports which dates have remaining quota, per division (trailhead/entry point/overnight vs day). Alert-only; no login. Havasupai is NOT on recreation.gov. | available |
| scout.recalls | Check official US product recalls/safety: food & drugs (openFDA) and vehicles (NHTSA). Use for 'alert me to recalls for X'. Returns recent matching recalls with dates and reason. | available |
| scout.weatherAlerts | Active US National Weather Service alerts (warnings/watches/advisories) for a state or area code. Use for 'alert me to severe weather in X'. Official NWS data. | available |
| scout.research | New academic preprints on arXiv matching a topic/author/category. Returns recent papers with title, authors, link, and the ABSTRACT — enough to summarize without fetching each PDF. Use for 'watch arXiv for new papers on X and summarize them'. | available |
| scout.jobs | New job postings from a company's PUBLIC applicant-tracking site. Supports Greenhouse, Lever, Ashby, SmartRecruiters (give the company's board slug) and Workday (give the full careers-site URL). Covers most startup + enterprise career pages without login. Use for 'watch <company> for new <role> openings'. | available |
| scout.xPosts | Read recent posts from a specific public X/Twitter account to use as a SIGNAL inside a larger task — e.g. an agent answering 'what's happening in San Diego this week' checks a few local-events accounts to surface things generic web search misses. Call it across the handful of knowledgeable accounts relevant to the task, then synthesize with your other sources; do NOT just relay one account's posts as the answer. Single public account per call (no search/hashtags/protected). Best-effort; X may change this surface. | available |
| scout.sports | Upcoming games or latest results for a sports team. Use for 'tell me when <team> plays next' or 'did <team> win'. Public TheSportsDB data. | available |
| scout.markets | Latest stock/ETF/crypto quote(s) for one or more symbols (e.g. NVDA, SPY, BTC-USD): price, prior close, and % change. Use for price watches and market briefings. Public data (Yahoo, Stooq fallback); ~15-min delayed. | available |
| scout.airportStatus | Current FAA delay/closure status and weather for a US airport by 3-letter code (e.g. SFO, JFK). Use for 'alert me if <airport> has delays'. | available |
| scout.federalRegister | New US Federal Register documents (rules, proposed rules, notices) matching a term. Use for regulatory/policy watches. Official government data. | available |
| scout.polymarket | Prediction-market signal from Polymarket (public, read-only — never places bets). mode='trending': the markets the money is watching now (optionally filtered by a topic keyword) — an excellent selector for 'what consequential, uncertain things should I follow'. mode='topic': a specific subject's current crowd-implied probability and 24h move. Pair with web/news scouts to report what actually moved the odds. | available |
| scout.conditions | Outdoor conditions forecast for any place — temperature, rain chance, wind, UV, cloud cover, sunshine, sunrise/sunset, and (marine:true) wave height/period. The "is it a good day for X" source: beach, surf, stargazing, running, skiing, gardening, golf, sunset-watching. Returns up to 7 days of normalized daily signals; the agent judges what is "good" for its goal. | available |
| scout.iss | Upcoming VISIBLE International Space Station passes for a place — when to step outside and look up. Returns each pass: local start/peak/end time, max elevation, the path across the sky (e.g. WNW→SE), duration, and a viewability rating (prime = bright & high; faint = dark but ISS likely shadowed; daylight = not visible). Public data (g7vrd + Open-Meteo), no key. | available |
| scout.api | Fetch a PUBLIC, read-only JSON or CSV endpoint and extract items — the generic data source for anything without a dedicated scout. Use when the user names a specific public API/endpoint, or a known public API covers the data and no other scout fits. GET only, no auth/keys, SSRF-protected. Prefer over web search when a real public API exists. MARKET / COMMODITY / METALS / FX / EQUITY / INDEX / RATES / INFLATION / any economic time-series — pick by freshness: (1) a DAILY spot/close (most commodities, FX, indices, equities, ETFs) → keyless Stooq snapshot, url `https://stooq.com/q/l/?s=<sym1>+<sym2>&f=sd2t2ohlcv&h&e=csv` format `csv` (one call, today's OHLC for many symbols; copper `hg.f`, gold `gc.f`, silver `si.f`, WTI `cl.f`, natgas `ng.f`, zinc `zi.f`, nickel `ni.f`, FX as `eurusd`, index as `^spx`, US equity/ETF as `aapl.us`; `N/D` = not carried, use (2)); (2) a series Stooq lacks daily — interest rates, inflation, unemployment, macro indices, LME lead/aluminium → keyless FRED CSV, url `https://fred.stlouisfed.org/graph/fredgraph.csv?id=<SERIES_ID>` format `csv` (rows newest-first; MONTHLY, lags ~1-2mo). FRED ids: lead `PLEADUSDM`, copper `PCOPPUSDM`, aluminum `PALUMUSDM`, WTI oil `DCOILWTICO`, natural gas `DHHNGSP`, 10y treasury `DGS10`, CPI `CPIAUCSL`. Never present a monthly/proxy figure as today's — say what it is. EFFICIENCY: narrow server-side via `params`, set `fields` to only what you need, keep `maxItems` small (5–15), use `path` to the results array. Pulling the full unfiltered payload is slow and costly. TIMEZONE: when the API returns ISO 8601 timestamps (launch times, event dates, anything ending in `Z` or with a `+HH:MM` offset), ALWAYS set `timezone` to the user's local IANA timezone (e.g. `America/Los_Angeles`). Every timestamp is then replaced with an object `{raw, local, weekday, date_local, time_local, tz}` — quote the `local` and `weekday` fields verbatim. Do NOT derive weekday or local time yourself; LLMs get it wrong (off-by-one days, missed UTC offsets, stale math when other fields update). The structured fields are the source of truth. | available |
| scout.browse | Read a PUBLIC web page that loads its data via JavaScript (an availability calendar, a SPA dashboard, a JS-rendered listing) when no dedicated scout fits. Renders the page in a real browser and returns the data the page itself fetched plus its visible text. No login. Pass the page URL; optionally hint at the data API host/path to capture. | available |
| scout.tickets | Live event tickets via Ticketmaster — concerts, sports and theatre. Search by artist/team/event keyword and/or city; returns upcoming events with date, venue, price range, on-sale status and a direct Ticketmaster purchase link. Use it to find tickets or to watch for an artist/team announcing a show. No login needed. | not configured |
| scout.kalshi | Regulated prediction markets via Kalshi (CFTC-regulated, US). Search/filter markets by keyword, series or event; returns each market with title, YES/NO ask in cents, 24h volume, close date and a kalshi.com market link. Read-only, no login. Complements scout.polymarket (crypto-native) — use both to compare prices on the same event across platforms. | available |
| scout.pagewatch | Watch ANY public web page for changes — a competitor homepage, a pricing page, a careers page, docs, terms, a status page without a feed. Fetches the page (honoring robots.txt), strips scripts/navigation/chrome, and returns the readable content as numbered stable blocks, each with a content hash, plus an overall blocksHash. Pass prevBlocksHash (the block-hash list you stored last run, e.g. via log.record) to get block-level diff hints: the result then lists ONLY blocks that actually changed, so you report real changes, never guessed ones. LIMITS — state them honestly when relevant: public pages only (no logins, no paywalls); static HTML only (content rendered purely by JavaScript is invisible — scout.browse covers that); pages behind anti-bot challenges are reported as unreadable, never summarized. | available |
| scout.price | Extract the price(s) from a PUBLIC product page — the source for 'email me when the price drops' watches. Prefers schema.org JSON-LD Product/Offer structured data (most retail product pages ship it); when a page has none, falls back to scanning the visible text for currency amounts and returns LABELED CANDIDATES without guessing which one is 'the' price — disambiguate once when setting up the watch (productName narrows to a specific product) and pin the choice. LIMITS — state them honestly when relevant: public pages only (no logins); static HTML only (prices rendered purely by JavaScript are invisible — scout.browse covers that); honors robots.txt; anti-bot/challenge pages are reported as blocked, never parsed. | available |
Connectors
Your accounts, connected with your own credentials.
salesforcegithubslackjiragooglenotionlinearconfluencehubspotspotifytodoistmicrosoftdiscordstravaredditairtabletrellosmslinkedinzoomservicenowtwittershopifymetastripetelegramwhatsappdatabasetaniumcomputerbrowser
Each connects with your own account (OAuth or per-user key) — an agent only ever holds the scopes you granted.
Evaluation
How an agent is judged — declared per agent, run at build time, and the objective compare mode optimizes.
| Goal judge (LLM) | An LLM judges the deliverable against the agent's goal — strict on counts, format, verifiability and emptiness. | available · default |
| Deterministic checks | Exact assertions on the deliverable — required phrases, minimum row counts, real URLs. No LLM, fully reproducible. | available |
Delivery
How findings reach you.
| The agent's findings, only when there's something to say. | available | |
| Daily digest | One email rolling up every agent's day. | available |
| Slack | Findings into a channel via the Slack connector. | available |
Coming axes
Named honestly rather than omitted.
| Retrieval / RAG | Document ingestion and retrieval strategy as a swappable axis. | not built yet |
| Planning strategy | ReAct vs plan-and-execute as a knob, not a framework side effect. | not built yet |
| Test bench (compare mode) | Same task, N compositions, one eval — hyperparameter search for agents. | not built yet |
| Guardrails | Governance plugs in via Agentic Control Plane — every tool call checked, logged, controllable. | agenticcontrolplane.com |