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 |
| Firestore (extracted facts) | Distills each save into atomic facts with a fast model — mem0-style extraction and same-entity consolidation, on this platform's own store — then ranks semantically at recall. One extra model call per save, on the order of a tenth of a cent; if extraction fails the raw note is stored unchanged, flagged, never lost. | available |
| Mem0 | Managed memory service (mem0.ai): extraction and consolidation on their side, semantic search at recall. Enabled by adding your Mem0 API key. | not configured |
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 fixed objective every experiment sweep 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 |
| Rubric judge (LLM) | Scores each declared criterion separately, 0..1, and reports the weighted sum — a grading sheet instead of one holistic verdict. | available |
Planning
How the agent is told to approach the goal. A prompt scaffold, chosen per agent — not a framework side effect.
| ReAct (reason + act) | Reason and act interleaved: the agent thinks, calls a tool, reads the result and re-plans each round. The loop's native behaviour — no extra prompting. | available · default |
| Plan then execute | The agent writes a numbered, tool-aware plan first and then works it step by step in the same run. A prompt scaffold — no extra model round. | available |
| Reflection (draft, self-check, revise once) | The agent drafts the deliverable, re-reads it against the goal and revises once before delivering. A prompt scaffold run inside the loop's existing rounds — roughly one extra model round per run, no separate reviewer call. | available |
| Decompose (sub-tasks in one run) | Splits the goal into named sub-tasks, works each to completion, then integrates the parts — all inside the same run. A prompt scaffold: no sub-agents are spawned; true delegation is deferred. | available |
Retrieval
What the agent pulls into context beyond its memories.
| No retrieval | The run sees only its goal, its tools and its memories. The default — nothing extra is pulled into context. | available · default |
| Run history | The agent's own recent runs, ranked against today's goal by word overlap — so it builds on what it already found instead of starting cold. | available |
| Documents | Reference documents added to the agent, chunked and ranked against the run's goal — by embedding similarity when embeddings are configured, by keyword overlap otherwise. The best chunks are injected with their source titles. | available |
State
What the agent carries from its previous run — a working note to its next self, not curated memory.
| Stateless | Every run starts fresh. The default — nothing is carried from the previous run. | available · default |
| Carry forward | The agent leaves itself one short memo at the end of a run and reads it at the start of the next — so a scheduled agent picks up where it left off. | available |
Guardrails
The safety posture an agent declares. Only what the runtime really enforces is listed here.
| Standard | What every agent here already runs with: metered tool calls and enforced budget caps. The default. | available · default |
| Traced | Standard, plus full trace capture: this agent's governed calls record redacted request and response payloads for later inspection. | available |
Every posture is enforced by the runtime. Per-call checking, approval and policy live in Agentic Control Plane.
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 |
Test bench
Compare compositions on one task, judged by one eval — built, with its limits stated.
| Test bench (compare mode) | Same task, N compositions, one fixed eval — the experiment runner behind each agent's Tuning page. A naive full grid under a hard budget cap, not a search service. | live |