Search / io.github.artchristech/fillin
Fillin
not classifiedSearch for AI agents. Closes the LLM-cutoff gap: CVEs, papers, frontier AI, prediction markets.
v0.2.1 · active · website · descriptor JSON · versions
Search / io.github.artchristech/fillin
Search for AI agents. Closes the LLM-cutoff gap: CVEs, papers, frontier AI, prediction markets.
v0.2.1 · active · website · descriptor JSON · versions
{
"mcpServers": {
"fillin": {
"type": "http",
"url": "https://fillin.glyphapi.dev/mcp/"
}
}
}claude mcp add --transport http fillin https://fillin.glyphapi.dev/mcp/[mcp_servers.fillin]
url = "https://fillin.glyphapi.dev/mcp/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"fillin": {
"type": "remote",
"url": "https://fillin.glyphapi.dev/mcp/",
"enabled": true
}
}
}{
"mcpServers": {
"fillin": {
"type": "http",
"url": "https://fillin.glyphapi.dev/mcp/"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=fillin&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZmlsbGluLmdseXBoYXBpLmRldi9tY3AvIn0%3D"
}{
"servers": {
"fillin": {
"type": "http",
"url": "https://fillin.glyphapi.dev/mcp/"
}
}
}{
"mcpServers": {
"fillin": {
"httpUrl": "https://fillin.glyphapi.dev/mcp/"
}
}
}extensions:
"fillin":
enabled: true
name: "fillin"
type: streamable_http
uri: "https://fillin.glyphapi.dev/mcp/"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length4 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations17 of 17 tools declare readOnlyHint or destructiveHinttools.directory_hints4 of 17 tools declare all four hints; missing: fillin_query (destructiveHint); glyph_search (destructiveHint); retrieve_auto (destructiveHint); …tools.token_costabout 6,039 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changesno tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+website -unreachable(11 failures) ~updated-150d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://fillin.glyphapi.dev/mcp/ streamable-http | none | no (11 failures) | 56% | 464 ms | 2025-11-25 | 2026-09-24 |
encoderead-only | Bring your own text -> the cheapest substrate for your reader — the MCP twin of HTTP POST /v1/encode. Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. Not a search-result rendering trick: this is Glyph as a language anyone can speak. Give it a tool result, a RAG chunk, a document — it comes back as whichever form (dense photo-glyph image or plain text) is genuinely cheaper for your reader model's token billing, with the honest manifest attached. The trailing JSON block always carries a `selection` object {substrate, reader, reader_class, tier, rationale, estimates} so the choice is auditable from the token math — the same object the HTTP route returns. Billed at the flat query rate regardless of which substrate is chosen — text and glyph cost the same here, unlike retrieve_auto's answer substrate. |
fillin_answerread-only | Synthesized post-cutoff answer with inline citations. Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. Use this when your model is small / cheap / weaker at tool-result synthesis (Llama, Gemini Flash, Mistral, Nemotron, Qwen). Fillin runs a server-side LLM pass over the retrieved post-cutoff documents and returns a 150-250 word answer with [title](url) citations already embedded — you can quote it directly. Premium models (Opus, Sonnet, GPT-4o) usually get better results from `fillin_query` and synthesizing themselves, but this tool works for any caller. Costs more than fillin_query because of the synthesis pass. Returns: A dict with: - answer: the synthesized paragraph (str | None) - citations: list of {title, url} extracted from the answer - corpus_match: "strong" | "weak" | "none" — quality of retrieval - top_score: float — top reranked similarity score - model: the synthesizer model used (e.g. claude-haiku-4-5) - reason: set when answer is None (e.g. "no_relevant_docs") - results: raw post-cutoff documents (same shape as fillin_query) - cutoff, query, gap_days: echoes for context |
fillin_buy_mint | Buy a listed mint. Debits your bearer balance, credits the seller (minus Fillin's rake), records the transaction, and returns the full mint payload including the previously-paywalled reasoning_graph. Requires FILLIN_API_KEY with sufficient balance for the mint's list price. |
fillin_healthread-only | Liveness + freshness — host, total docs, earliest, latest. No auth required. |
fillin_market_searchread-only | Search the Fillin marketplace for minted (data + reasoning) assets matching your fingerprint. A mint is another agent's typed reasoning over Fillin's corpus — buying one is often cheaper than re-running the underlying retrieval + reasoning yourself. Returns {fingerprint, mints[]}. Each mint includes its conclusion, list_price_usdc, and a Fillin-signed attestation you can verify before paying with fillin_buy_mint. |
fillin_mint | Mint a (data + reasoning) asset on the Fillin marketplace. Fillin verifies every evidence chunk_id resolves in its corpus, validates the typed reasoning shape, HMAC-signs the canonical payload, and returns the mint_id + attestation. Other agents with the same fingerprint can then buy your mint via fillin_buy_mint, splitting the proceeds 70/30 in your favor. Requires FILLIN_API_KEY (a Fillin bearer token). |
fillin_payment_challenge | Mint an EIP-191 signing challenge — MCP twin of POST /v1/payment/challenge. No bearer required. Returns {nonce, message, expires_at, signing_scheme: eip-191-personal-sign}. Sign `message`, then retry fillin_query with headers X-Payer-Address, X-Payer-Nonce, X-Payer-Signature. Probe and trial signup are fillin_probe / fillin_signup (PR #12). |
fillin_proberead-only | Free taste of the Fillin corpus — MCP twin of POST /v1/probe. No bearer and no x402. k is forced to 1. Quota is 1 request per IP per UTC day (same table as HTTP /v1/probe). On success: QueryOut JSON (results, corpus_match, substrate_estimate). On exhausted quota: isError with a probe_exhausted JSON object (same fields as HTTP 429). |
fillin_queryread-only | Retrieve documents published after a training cutoff, ranked by similarity. Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. Call this whenever the user asks about events, releases, papers, issues, or news that might post-date your training data. Fillin only returns documents published AFTER `cutoff`, so nothing returned is redundant with what the model already knows. Args: query: Natural-language search query (e.g. "rust async runtimes"). Max 512 characters. cutoff: ISO-8601 date representing the agent's training cutoff (e.g. "2026-01-01"). Documents on or before this date are excluded from results. k: Number of documents to retrieve, 1-20. Defaults to 5. Returns: A dict with: - cutoff: echoed cutoff (ISO timestamp) - query: echoed query - gap_days: days between cutoff and now - results: list of {id, source, url, published_at, title, text, score} |
fillin_signup | Mint a one-time free 20-query trial bearer — MCP twin of POST /v1/signup. No bearer and no x402. One key per IP per UTC day (same `trial:` quota as HTTP /v1/signup). Success is a JSON object with `key` (shown once), `trial`, `balance_usdc`, `queries_at_base_price`. Retry paid tools with Authorization: Bearer <key> on the MCP HTTP request. On exhausted quota: isError with a trial_exhausted JSON object (same fields as HTTP 429). |
fillin_statsread-only | Get corpus stats — total docs, date range, freshness. |
glyph_searchread-only | Same as fillin_query, but returns the result pieces rendered as **photo glyph** image(s) — dense, vision-readable pages — followed by a JSON citation index ({n, source, url, title, published_at, page}). Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. Read the image(s) directly with your vision capability; use the citation index to attribute or follow up. Glyphs are for comprehension and fact-extraction, not verbatim quotes (vision models paraphrase) — open the url for exact text. Billed at the flat /query rate; rendering is free. |
query_cvesread-only | Daily snapshot of CVE / supply-chain advisories from NVD, GitHub Security Advisories, and OSV. Use before merging dependency updates, when triaging an alert, or when a user asks "is package X compromised". Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. Each result row carries a structured `affected` list (one entry per affected package: ecosystem, name, vulnerable_range, patched_range) and a numeric `severity_score` (CVSS baseScore, nullable on OSV-only rows). A buyer can act on the returned row — pin to `patched_range` — without a second hop to NVD or GHSA. |
query_frontierread-only | Daily snapshot of frontier AI lab announcements + HuggingFace trending model releases. Sources: OpenAI / DeepMind / Meta / Mistral blog RSS, Anthropic + HF blogs (via shared rss corpus), and the HF trending models API. Use when a user asks "what model dropped" or "did <lab> announce X". Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. |
query_marketsread-only | Active prediction markets across Polymarket, Kalshi, Manifold, and Metaculus. Use when a user asks "is there a market on X", "what odds is the market giving Y", or before any agent action that should be informed by a market price. Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. Each result row carries the question, venue, close date, volume, and a first-sight price snapshot embedded in `text`. Prices in the corpus are point-in-time at first ingestion — for live pre-trade pricing, follow the `url` to the venue and read the current quote there. |
query_papersread-only | Daily snapshot of new research relevant to AI/ML/agents. Union of arXiv (cs.AI/cs.LG/cs.CL/cs.CR/cs.DC), HuggingFace daily papers (with upvote signal in title), and bioRxiv. Use when a user asks about a new technique, paper, or benchmark. Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. |
retrieve_autoread-only | One retrieval, auto-picked substrate — the MCP twin of HTTP POST /v1/retrieve with substrate="auto". Requires $0.01–$0.05 USDC (x402) or an Authorization Bearer trial/paid key. On payment_required, call fillin_probe then fillin_signup (POST /v1/signup) for a free 20-query trial, or fillin_payment_challenge then retry with X-Payer-Address, X-Payer-Nonce, X-Payer-Signature (or Bearer). POST /v1/probe for 1 free taste/IP/day. Runs a single post-cutoff retrieval, then returns whichever delivery substrate is cheapest AND legible for your `reader` model's token billing: - text — raw result pieces (Claude/GPT pixel billing, or any unknown reader). - glyph — a dense photo-glyph image (Gemini/Qwen flat-tile billing) you read with vision; the raw pieces ride along as a citation index. - answer — a pre-cited synthesized paragraph (weak tool-callers; needs a server LLM key). The trailing JSON block always carries a `selection` object {substrate, reader, reader_class, tier, rationale, estimates} so the choice is auditable from the honest token math — the same object the HTTP route returns. When the pick is glyph, the page image(s) precede that JSON block. Pricing matches /v1/retrieve: text/glyph bill the flat /query rate, answer bills the answer rate. The answer rate is charged up front and the delta is refunded when the pick resolves to text/glyph, so you always pay exactly the right rate. |
Schemas: list_tools.
{
"name": "io.github.artchristech/fillin",
"title": "Fillin",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://fillin.glyphapi.dev/mcp/",
"type": "streamable-http"
}
],
"version": "0.2.1",
"websiteUrl": "https://fillin.glyphapi.dev",
"description": "Search for AI agents. Closes the LLM-cutoff gap: CVEs, papers, frontier AI, prediction markets."
}