Lumen Agent Utilities
x402 agent tools: calldata/EIP-712/x402 decoders, web→MD, ENS, DNS, PubMed, arXiv, SEC, weather
사용해야 할까요
품질 및 안전성
발견 사항 (3)
- HIGH
- MEDIUMweb_markdown에서
- LOWeip712_decode에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"lumenworks-decoder": {
"url": "https://lumenworks-x402-decoder.onrender.com/mcp"
}
}
}원격 엔드포인트
https://lumenworks-x402-decoder.onrender.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (14)
⚪x402_lint(header, json)
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).
입력 스키마
{
"type": "object",
"properties": {
"header": {
"type": "string",
"description": "base64 x402 header value"
},
"json": {
"type": "object"
}
}
}⚪eip712_decode(typedData)
Decode EIP-712 typed data: domain separator, signing digest, message, and plain-language risk notes (Permit, Permit2, EIP-3009, unlimited values).
입력 스키마
{
"type": "object",
"properties": {
"typedData": {
"type": "object"
}
},
"required": [
"typedData"
]
}🟢web_markdown(url, fullPage, maxChars)
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.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public http(s) URL"
},
"fullPage": {
"type": "boolean",
"description": "Keep the whole body instead of Readability main content"
},
"maxChars": {
"type": "number",
"description": "Max Markdown characters (default 100000)"
}
},
"required": [
"url"
]
}⚪url_unfurl(url)
Unfurl a URL: final URL after redirects, HTTP status, title, description, OpenGraph/Twitter image, site name, canonical, favicon, language, published time.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
}⚪evm_address_lookup(address)
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.
입력 스키마
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "0x address or ENS name"
}
},
"required": [
"address"
]
}⚪domain_lookup(domain)
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.
입력 스키마
{
"type": "object",
"properties": {
"domain": {
"type": "string"
}
},
"required": [
"domain"
]
}🟢explain_before_sign(transaction, calldata, typedData, chainId, expected_pay_to)
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.
입력 스키마
{
"type": "object",
"properties": {
"transaction": {
"type": "object",
"description": "Unsigned EVM transaction",
"properties": {
"to": {
"type": "string",
"description": "Target contract/address (0x…)"
},
"data": {
"type": "string",
"description": "Calldata hex (0x…)"
},
"value": {
"type": "string",
"description": "Native value in wei (decimal string)"
}
},
"required": [
"data"
]
},
"calldata": {
"type": "string",
"description": "Shortcut: calldata hex when you have no tx object"
},
"typedData": {
"type": "object",
"description": "EIP-712 typed data {domain, types, primaryType, message} (Permit, Permit2, EIP-3009, Seaport…)"
},
"chainId": {
"type": "number",
"description": "Chain the wallet is on; used for chain-mismatch checks"
},
"expected_pay_to": {
"type": "string",
"description": "For x402/EIP-3009 payments: the payTo you expect; mismatch is flagged"
}
},
"anyOf": [
{
"required": [
"transaction"
]
},
{
"required": [
"calldata"
]
},
{
"required": [
"typedData"
]
}
]
}🟢pubmed_search(query, limit, sort, abstracts)
Search PubMed (36M+ biomedical citations): PMID, title, journal, date, authors, DOI, URL and abstract. {query, limit<=50, sort:relevance|date, abstracts:true}.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"limit": {
"type": "number"
},
"sort": {
"type": "string",
"enum": [
"relevance",
"date"
]
},
"abstracts": {
"type": "boolean"
}
},
"required": [
"query"
]
}🟢arxiv_search(query, limit, sort)
Search arXiv preprints: id, title, abstract, authors, categories, dates, PDF link. Supports arXiv field prefixes (ti:, au:, cat:). {query, limit<=50, sort:relevance|date}.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"limit": {
"type": "number"
},
"sort": {
"type": "string",
"enum": [
"relevance",
"date"
]
}
},
"required": [
"query"
]
}⚪sec_filings(ticker, cik, forms, limit, facts)
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).
입력 스키마
{
"type": "object",
"properties": {
"ticker": {
"type": "string"
},
"cik": {
"type": "string"
},
"forms": {
"type": "array",
"items": {
"type": "string"
}
},
"limit": {
"type": "number"
},
"facts": {
"type": "boolean"
}
}
}⚪weather_forecast(location, latitude, longitude, days, units)
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}.
입력 스키마
{
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Place name, e.g. Berlin (geocoded)"
},
"latitude": {
"type": "number",
"description": "Latitude (use with longitude instead of location)"
},
"longitude": {
"type": "number",
"description": "Longitude"
},
"days": {
"type": "number",
"description": "Forecast days, 1-16 (default 7)"
},
"units": {
"type": "string",
"enum": [
"metric",
"imperial"
],
"description": "Default metric"
}
},
"anyOf": [
{
"required": [
"location"
]
},
{
"required": [
"latitude",
"longitude"
]
}
]
}🟢polymarket_markets(query, limit)
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.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"limit": {
"type": "number"
}
}
}⚪calldata_decode(data, signature)
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.
입력 스키마
{
"type": "object",
"properties": {
"data": {
"type": "string",
"description": "Calldata hex starting with the 4-byte selector (0x…)"
},
"signature": {
"type": "string",
"description": "Optional function signature override, e.g. transfer(address,uint256)"
}
},
"required": [
"data"
]
}🟢x402_payment_safety_check(url, method, payment_required, expected_pay_to, expected_network, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"POST",
"GET"
]
},
"payment_required": {},
"expected_pay_to": {
"type": "string"
},
"expected_network": {
"type": "string"
},
"max_price_usdc": {
"type": "number"
},
"listed_price_usdc": {
"type": "number"
},
"facilitator_url": {
"type": "string"
},
"client_config": {
"type": "object"
}
}
}커뮤니티
증거