{"server":{"name":"io.github.Dansgit2b/lumenworks-decoder","title":"Lumen Agent Utilities","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://lumenworks-x402-decoder.onrender.com/mcp","type":"streamable-http"}],"version":"1.4.0","repository":{"url":"https://github.com/Dansgit2b/lumenworks-x402-api","source":"github"},"description":"x402 agent tools: calldata/EIP-712/x402 decoders, web→MD, ENS, DNS, PubMed, arXiv, SEC, weather"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-10-10T12:51:30.892902Z","publishedAt":"2026-10-10T12:51:30.892902Z","statusChangedAt":"2026-10-10T12:51:30.892902Z"},"dev.protogrid/connectability":{"class":"unknown","autonomous":false,"human_steps":["unknown"],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://lumenworks-x402-decoder.onrender.com/mcp","transport":"streamable-http","templated":false,"headers":[],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2025-11-25"],"stateless":true},"health":{"reachable":false,"uptime_30d":0.44444445,"latency_ms_p50":322,"consecutive_failures":5,"last_probe_at":"2026-10-17T18:59:44.477Z","last_ok_at":"2026-10-11T05:35:12.827Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"arxiv_search","title":null,"description":"Search arXiv preprints: id, title, abstract, authors, categories, dates, PDF link. Supports arXiv field prefixes (ti:, au:, cat:). {query, limit<=50, sort:relevance|date}.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"calldata_decode","title":null,"description":"Use when you hold raw EVM calldata and need to know what function it calls: returns selector, matching signatures (built-in + openchain/4byte) and ABI-decoded args for each candidate; unknown selectors return signaturesFound:0 instead of an error. Optional {signature} override. Example: 0xa9059cbb… -> transfer(address,uint256) with args. $0.002, no signup; not charged if the call errors.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"domain_lookup","title":null,"description":"Domain intelligence: DNS A/AAAA/CNAME/MX/NS/TXT/CAA (DNS-over-HTTPS), SPF + DMARC, RDAP registration/expiry/registrar/status, domain age in days. Useful for phishing/fraud checks and lead qualification.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"eip712_decode","title":null,"description":"Decode EIP-712 typed data: domain separator, signing digest, message, and plain-language risk notes (Permit, Permit2, EIP-3009, unlimited values).","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"evm_address_lookup","title":null,"description":"Look up an EVM address or ENS name on Ethereum + Base: ENS forward/reverse + text records, EOA vs contract (EIP-7702 delegation flag), native balance, tx count, USDC/USDT balances, and ERC-20 name/symbol/decimals/supply if it is a token.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"explain_before_sign","title":null,"description":"Lumen Pre-Sign Check. Use before signing any EVM transaction or EIP-712 message: returns {summary, flags[], verdict} with verdict looks_ok | review | do_not_sign_unless_intended. Flags unlimited approve/increaseAllowance, EIP-2612 Permit and Permit2 (typed data and on-chain), setApprovalForAll, unknown spender, admin calls (upgradeTo/transferOwnership), zero-price Seaport orders, long deadlines, chain mismatch and x402 payTo mismatch; decodes multicall/aggregate3 inner calls one level. Example: USDC approve(spender, 2^256-1) -> do_not_sign_unless_intended, UNLIMITED_APPROVAL. Agent policy: abort on do_not_sign_unless_intended, escalate review. Informational, not a security guarantee; looks_ok does not mean safe; no simulation. $0.002, no signup, free tier 20/h; not charged if the call errors.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"polymarket_markets","title":null,"description":"Read-only Polymarket prediction-market data: search by {query} or top active markets by 24h volume. Returns question, outcomes with implied probabilities, 24h/total volume, liquidity, end date, URL. Data only, no trading.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"pubmed_search","title":null,"description":"Search PubMed (36M+ biomedical citations): PMID, title, journal, date, authors, DOI, URL and abstract. {query, limit<=50, sort:relevance|date, abstracts:true}.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"sec_filings","title":null,"description":"SEC EDGAR company lookup by ticker or CIK: company profile, recent filings (filter by form e.g. 10-K, 10-Q, 8-K, 4) with document links, and latest annual XBRL facts (revenue, net income, assets, liabilities, equity, EPS, cash).","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"url_unfurl","title":null,"description":"Unfurl a URL: final URL after redirects, HTTP status, title, description, OpenGraph/Twitter image, site name, canonical, favicon, language, published time.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"weather_forecast","title":null,"description":"Weather for any place name or lat/lon (Open-Meteo): current conditions plus up to 16-day daily forecast (temp min/max, precipitation and probability, wind, UV, sunrise/sunset). {location | latitude+longitude, days, units:metric|imperial}.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"web_markdown","title":null,"description":"Use when you need to read a public web page as clean LLM-ready Markdown: Readability main-content extraction (nav/scripts stripped) plus title, byline, excerpt, OpenGraph metadata. {fullPage:true} keeps the whole body; {maxChars} caps output (default 100k). No JavaScript rendering, no PDFs. Example: {url:\"https://example.com\"} -> {title:\"Example Domain\", markdown:\"# Example Domain …\"}. $0.001, no signup; not charged if the fetch fails.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"x402_lint","title":null,"description":"Decode and lint an x402 PAYMENT-REQUIRED / PAYMENT-SIGNATURE / PAYMENT-RESPONSE header (base64 or JSON): kind, decoded object, errors/warnings (CAIP-2, checksum, EIP-712 domain, expiry).","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"},{"name":"x402_payment_safety_check","title":null,"description":"FREE, deterministic pre-payment check for an x402 endpoint. Give {url} (we fetch its unpaid 402) and/or {payment_required} (402 JSON or base64 header), plus optional expected_pay_to, expected_network, max_price_usdc, listed_price_usdc, facilitator_url, client_config {max_per_call_usdc, max_daily_usdc, idempotency_key, allow_any_pay_to}. Returns verdict ok/review/do_not_pay with checks: HTTPS/health, payTo validity & mismatch, unknown asset/network, price sanity vs cap/listing, timeout/replay window, multiple payTo, unknown facilitator, missing spend caps/idempotency. Nothing is stored; inputs that look like private keys are rejected.","annotations":null,"source":"probe","observed_at":"2026-10-11T05:35:12.827Z"}],"dev.protogrid/trust":{"score":64,"components":{"hygiene":100,"liveness":0,"freshness":100,"provenance":80},"drivers":["+repository","+namespace-matches-repo","-unreachable(5 failures)","+updated-10d-ago"],"flags":["unreachable"],"blocked":false,"computed_at":"2026-10-20T06:14:24.617Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":63,"label":"needs work","components":{"auth":null,"hygiene":71,"protocol":75,"stability":25,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28","status":"warn","category":"protocol"},{"id":"protocol.stateless","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones","status":"fail","category":"hygiene"},{"id":"tools.directory_hints","detail":"no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: eip712_decode (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); web_markdown (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); x402_lint (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …","status":"fail","category":"hygiene"},{"id":"tools.token_cost","detail":"about 1,970 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"8 tool changes in 30 days","status":"warn","category":"stability"},{"id":"stability.rug_pull","detail":"1 tools kept their name but changed most of their description in 30 days; review before trusting them","status":"fail","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["-tools.annotations","-tools.directory_hints","-stability.rug_pull","~protocol.modern","~stability.changes"],"flags":[],"tool_count":14,"token_estimate":1970,"tools_hash":"158b5b969276437b883bdb17422764b8","tools_changed_at":"2026-10-10T18:06:35.708Z","computed_at":"2026-10-20T06:17:32.356Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"io.github.Dansgit2b/lumenworks-decoder","aliases":["io.github.Dansgit2b/lumen-presign-check"],"alias_count":1,"repository_key":"github:dansgit2b/lumenworks-x402-api","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/io.github.Dansgit2b%2Flumenworks-decoder/tools","arguments":{"name":"io.github.Dansgit2b/lumenworks-decoder"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/io.github.Dansgit2b%2Flumenworks-decoder/connection?target=mcpServers","arguments":{"name":"io.github.Dansgit2b/lumenworks-decoder","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}