SIGIL

Reference

Tool schemas, output fields, errors, degradation semantics, TTL.

sigil_screen_transaction — 0.02 USDT

Input

fieldtypedefaultnotes
chainIdint196X Layer mainnet
fromaddressrequired
toaddressrequired
valuestring (wei)"0"
datahex"0x"calldata
mode"standard" | "deep"standarddeep convenes the panel regardless of band
typedDataobjectScreen an off-chain EIP-712 signing request (eth_signTypedData) instead of calldata: EIP-2612 Permit, Permit2 PermitSingle/PermitBatch. from/to become optional. Same scorer, subject.kind: "signature".

Output — the Verdict object

fieldmeaning
receiptIdsgl_ + 22 Crockford-base32 chars, time-sortable, regex ^sgl_[0-9a-z]{22}$
schemaVersion / rubricVersion"1" / "1.0.0"
subject.digesttransaction: exact abi-encoded transaction digest; signature: canonical digest of the complete typed-data request (see Receipts)
verdict0 PASS · 1 WARN · 2 BLOCK
riskScore0–100 per the methodology
actiondecoded action; inner[] for multicalls; unlimited flag on approvals
simulationsuccess, revertReason?, balanceDiff[], approvalsGranted[], coverageGaps[], method
simulation.method"simulated" = an eth_call actually ran against live X Layer state (catches honeypot/paused/blacklist reverts); "derived" = read from calldata only. Static output is never labelled as executed.
findings[]severity-sorted; each has id, weight, hard, evidence[]
panel?present only when the panel convened: votes[], agreement, dissents[]
reasons[]human-readable one-liners
issuedAt / expiresAtunix seconds; TTL = 900s — re-screen after expiry
coverageconsulted[] and unavailable[] source names
seal?signature, signer, leaf, and once anchored batchId + anchorTx

sigil_scan_token — 0.01 USDT

Input: chainId (default 196), token (address). Output: TokenSafetyhoneypot (true|false|"unknown"), buyTaxBps?, sellTaxBps?, mintable?, ownerCanBlacklist?, ownershipRenounced?, proxyUpgradeable?, topHolderPct?, liquidityUsd?, sources[]. Optional fields are absent (never guessed) when no source answered.

sigil_screen_address — 0.005 USDT

Input: chainId, address. Output: AddressProfileisContract, labels[], ageDays?, sourceVerified?, sources[].

sigil_screen_deep — 0.10 USDT

Input: the transaction fields from sigil_screen_transaction. Output: { verdict, dossier }; the panel is forced, and the dossier includes token safety when the decoded transaction touches a token, profiles for all spender/recipient addresses in the flattened action tree, and explicit dossier coverage (available, unavailable, or not-applicable). A native-transfer destination is never misrepresented as a token contract.

sigil_verify_verdict — free

Input: receiptId. Output: { found: true, verdict } or { found: false, receiptId } with isError. Also: GET /verdicts/:id (plain HTTP, free).

Degradation semantics

  • A failing data source never aborts a verdict and never fabricates a value.
  • Port-level failure ⇒ the source name appears in coverage.unavailable.
  • Provider-level gaps inside a source ⇒ gap:* entries in that object's sources[] (e.g. gap:goplus, gap:oklink).
  • Panel timeout / quorum loss / daily cap ⇒ deterministic verdict stands, panel in coverage.unavailable.
  • Simulation upgrade unavailable ⇒ static diff with coverageGaps: ["state_fork_simulation"] or ["rpc_unavailable"].

HTTP surface

routemethodauthpurpose
/mcpPOSTx402 for paid toolsstateless MCP JSON-RPC or plain marketplace business replay
/mcpGETx402 discovery402 + PAYMENT-REQUIRED for the headline 0.02 service
/mcpDELETE405 (stateless server)
/healthGETfreeliveness
/.well-known/sigil.jsonGETfreeservice manifest: transport, prices, payment, signer, panel availability
/verdicts/:idGETfreereceipt lookup
/verdicts/recentGETfreeredacted newest-first transparency feed
/proof/:idGETfreeMerkle inclusion proof or pending state
/batches / /batches/:id/manifestGETfreeknown anchors and durable public proof manifests
/stats / /threatsGETfreelive serving-window aggregates and recent BLOCKs

Unknown tool names return JSON-RPC -32601 with HTTP 404. Unpaid calls return HTTP 402 with the x402 challenge.