protogrid

Search / io.github.artchristech/fillin

Fillin

not classified

Search for AI agents. Closes the LLM-cutoff gap: CVEs, papers, frontier AI, prediction markets.

v0.2.1 · active · website · descriptor JSON · versions

Not classified yet.The remote endpoints have not been probed successfully, or the listing has nothing to connect to.
Quality85good
Trust43of 100
Uptime, 30 days56%
Latency p50464 ms

Connect

8 clients · secrets stay placeholders
{
  "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

Quality 85 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length4 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations17 of 17 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints4 of 17 tools declare all four hints; missing: fillin_query (destructiveHint); glyph_search (destructiveHint); retrieve_auto (destructiveHint); …
  • pass
    tools.token_costabout 6,039 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

17 tools, about 6,039 tokens to load them all · tool set 6584dc442b10 · checked 2026-10-20 11:08 UTC

Tool changes

No 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.

Trust 43 / 100

no-repositoryunreachable
provenance45
liveness0
freshness65
hygiene80

+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.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://fillin.glyphapi.dev/mcp/ streamable-httpnoneno (11 failures)56%464 ms2025-11-252026-09-24

Tools (17)

encoderead-onlyBring 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-onlySynthesized 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_mintBuy 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-onlyLiveness + freshness — host, total docs, earliest, latest. No auth required.
fillin_market_searchread-onlySearch 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_mintMint 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_challengeMint 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-onlyFree 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-onlyRetrieve 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_signupMint 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-onlyGet corpus stats — total docs, date range, freshness.
glyph_searchread-onlySame 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-onlyDaily 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-onlyDaily 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-onlyActive 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-onlyDaily 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-onlyOne 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.

Similar MCP servers

Official server.json
{
  "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."
}