Skip to main content
Glama

Oracle

oracle

Turn your follows, bookmarks, and subscriptions into trusted sources: screen ranked candidates, confirm who to keep, and deep-ingest their posts into your knowledge base.

Instructions

Choose who to trust: turn the people you already curate (follows, Lists, bookmarks, subscriptions, likes) into your Oracles — the sources the KB deep-ingests and roots trust on. Runs entirely in chat.

NOT the setup tool. onboard readies the machine (keys, consent, the first curation pull); this decides WHO is in. Reach for this when the user asks who to trust, wants to see or change their people, or asks whether their sources are current.

FLOW: call action='screen' → read the ranked candidates to the user (the PRE-TICKED ones are people you've corroborated with ≥2 distinct signals — your default-yes set; the rest are shown unchecked; non-persons are demoted to the end, never hidden) → ask which to keep → call action='confirm' with the kept canonical_ids → then, before action='ingest', ask the user how far back to pull and pass their answer as x_lookback.

Why that question is not optional: the default is only ~6 months, so a user who wanted their Oracle's whole visible history gets a fraction of it and is never told. (It is no longer a COST question — X reads are free since the cutover — it is a completeness one, which is the same reason to ask and a different reason to give.) action='screen' returns the exact presets and defaults under lookback_options — offer those, don't invent your own. The web archive is FREE and already pulls in full, so ask about it (web_lookback) only if the user wants it NARROWED.

To add someone NOT in the list, pass their X @handle or Substack URL in add_handles — they're resolved and added on the spot.

action: • "screen" (default) — the ranked candidate payload. Each candidate carries its reflected signal ("you follow · subscribe · bookmarked 12×"), pre_ticked / shown_by_default / is_person flags, distinct_signals, and its canonical_id (pass these to confirm). classify.ran=False means the kind classifier degraded open (LLM unavailable) — everyone stays person-eligible. • "confirm" — commit Oracle picks. canonical_ids = the ones the user kept (verbatim from screen); add_handles = raw X handles / Substack URLs to add (resolved-at- confirm). Idempotent. Returns {confirmed, unresolved, unknown, total_oracles} — surface unresolved (handles a lookup couldn't find) to the user. • "ingest" — deep-ingest confirmed Oracles into the atom-KB. For each (all confirmed, or just the canonical_ids you pass) run discovery — which mines their trusted blog/Substack for their OTHER profiles — then ingest each trusted personal profile as atoms attributed to the Oracle; an org link becomes an affiliation; an ambiguous one is left for review. Returns a per-source outcome report, with the windows actually pulled under lookback — read those back. • "candidates" — the OTHER half of the promotion decision. screen ranks people by how hard the USER vouched for them (distinct curation signals); this ranks the same people by what they actually write. Pass query to ask a topic question ("who writes about agent memory"); omit it to list who is there. Evidence comes from TWO stores and every row names which, in basis: · "probed" — a light sample of their own timeline (~25 posts). UNVETTED: nobody vouched for this text, only for the person being worth a look. Never cite it as knowledge-base content or quote it as fact. · "saved" — a post the USER saved, so it IS a knowledge-base atom and is citable (open it first). Usually exactly ONE post, and it is a positive example rather than a sample of their output: it matched partly BECAUSE the user kept it. Good evidence for "worth reading more of", weak evidence for "this is what they mostly write about". Scores are comparable only WITHIN a basis; the two are interleaved by rank, never added. Read back no_local_material — a candidate absent because nothing of theirs is stored looks exactly like one whose writing did not match, and those need opposite actions.

Is my stuff still current? You do not ask — screen answers it unasked, under oracle_freshness: per-Oracle, per-source last_pulled_at / hours_overdue / never_refreshed / breaker_open, worst first. If needs_attention is true, read its note out — that flag means either nothing has ever opted in to refreshing, or the cycle has stretched past twice its target. Both are silent failures otherwise.

A model_routing key, when present, lists models that are dead (no OpenRouter provider survives the deny-list — the stage using them cannot run) or fragile (one surviving provider — one withdrawal from dead). Read it out: it is absent whenever everything is routable, so its presence IS the news.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
floorNoscreen — minimum candidates shown by default before "see all" (default 15).
forceNoingest — the "ignore what we decided last time" override, and it now means TWO things. (1) Ingest a footprint source even when the single-author gate would skip or park it (for a solo publication the classifier mislabels). (2) Re-run DISCOVERY from scratch, ignoring the trust cache — reach for this when a person's sources look wrong or incomplete and their X profile has not changed, since the cache key only invalidates on a display-name or declared-link change. A source they created after the last run, or a fix on our side, leaves that key identical.
queryNocandidates — a topic question to rank people by ("agent memory", "biotech funding"). Omit for "who has been sampled".
top_nNocandidates — how many people to return (default 30). NOT a screen knob: `screen` classifies every candidate and returns all of them.
actionNo"screen" | "candidates" | "confirm" | "ingest".screen
x_lookbackNoingest — how far back to pull each Oracle's X timeline: "6mo" (the default), "1yr", "2yr". Hard-capped at 2 years whatever you pass. Ask the user — not for cost (the pull is free), but because the default truncates. "since_last" is the cheap top-up: pull only what has appeared since this Oracle was last pulled. Use it whenever the user wants someone brought current rather than re-ingested — a 5-day gap costs one request instead of ~19. It errors rather than guessing if the Oracle has never been pulled.
add_handlesNoconfirm — raw X @handles / Substack URLs to add beyond the ranked list.
min_signalsNocandidates — only people with at least this many distinct curation signals (default 1 = everyone in the list).
web_lookbackNoingest — how far back to pull the Substack/blog archive: "1yr", "2yr", "5yr", "all" (the default). Only narrows; omit unless the user asks.
canonical_idsNoconfirm — the kept candidates' canonical_ids; ingest — which confirmed Oracles to ingest (omit = all confirmed — usually NOT what you want for a top-up, so name the person).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Install Server

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so this description carries the full burden of behavioral disclosure. It is exceptionally transparent: it reveals the default lookback truncation issue, notes that X reads are free (so cost is not the reason to ask), explains idempotency of confirm, describes per-action returns including 'unresolved' items, discusses 'model_routing' semantics, and highlights silent failure conditions like breaker_open. This goes far beyond a basic summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but it is well-structured with clear sections (FLOW, action breakdown, freshness, model_routing). Every paragraph adds necessary operational detail. The length is justified by the tool's complexity (four actions, many trap conditions). A slight deduction because the sheer length may initially overwhelm an agent, and some parenthetical asides could be tightened without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the absence of annotations, the description covers everything an agent needs to invoke it correctly: exact action semantics, expected return payloads, decision guidance for ambiguous cases (like 'no_local_material'), and how to surface critical status flags. The presence of an output schema is acknowledged, and the description complements it by explaining the meaning of key fields rather than duplicating schema output details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the input schema has 100% description coverage, the tool description adds meaningful semantic context beyond each parameter's own description. For example, it explains why 'x_lookback' must be asked (completeness, not cost), clarifies 'force' now means two things, and warns that 'canonical_ids' omission in ingest usually is not what the user wants for a top-up. These operational nuances help an agent select and use parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Choose who to trust' and clearly explains this tool converts curated sources into Oracles for deep ingestion. It explicitly distinguishes itself from the 'onboard' sibling with 'NOT the setup tool', stating what this tool is versus what it is not. The multiple action modes (screen, confirm, ingest, candidates) further clarify scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'Reach for this when the user asks who to trust, wants to see or change their people, or asks whether their sources are current.' It also names the sibling alternative ('onboard') and explains the division of responsibility. Within the tool, it spells out the required sequence of actions and when to use optional parameters like 'add_handles' and 'web_lookback'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/maimond123/Opyt'

If you have feedback or need assistance with the MCP directory API, please join our Discord server