{"protocolVersion":"0.3.0","name":"HALOWERK identwerk","description":"HALOWERK identwerk. Bezahlung über x402 in USDC auf Base Mainnet.","url":"https://ident.halowerk.com","version":"1.0.0","preferredTransport":"JSONRPC","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"defaultInputModes":["application/json"],"defaultOutputModes":["application/json"],"skills":[{"id":"name_resolve","name":"Resolve ENS, Basenames and Solana .sol names to addresses, or an address back to its name, with the reverse entry checked against the forward record.","description":"Forward resolution takes a name and returns the address it points to, plus the resolver and the owner. ENS names resolve on Ethereum, .base.eth on Base, .sol through the Solana name service. Reverse resolution takes an address and returns its primary name — and always verifies it by resolving that name forward again, because a reverse entry can be set by anyone and is worthless as identity until the forward record agrees; a mismatch is reported rather than hidden. Optional text records (avatar, url, com.twitter and so on) are read for EVM names. Everything runs against public nodes with no key, and several nodes per chain so one outage does not take the service down. A name that resolves is not proof of who holds it.","tags":["identwerk"],"examples":["POST /v1/name-resolve"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"multisig_inspect","name":"Inspect a Safe multisig: owners, signing threshold, enabled modules and guard, plus the queued transactions and how many signatures each still needs.","description":"Reads a Safe from the public transaction service and returns what decides whether it can act: the owner set, the threshold, the current nonce, any enabled modules and the guard contract, and the master copy version. Queued transactions are listed with the confirmations they already carry and the number still missing, so it is visible which of them are one signature away from executing. Modules and a guard are called out explicitly because either can move funds or block execution independently of the threshold — a Safe with a module is not fully described by its owner list. Supports the chains Safe operates a service for. It reads only: nothing is proposed, signed or executed, and a queued transaction is not a prediction that it will pass.","tags":["identwerk"],"examples":["POST /v1/multisig-inspect"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"aa_simulate","name":"Check an ERC-4337 UserOperation before sending it: required prefund against the deposit, paymaster coverage and stake, nonce, and the inner call revert reason in plain words.","description":"Validates a UserOperation structurally and against chain state. It computes the required prefund from the gas limits and fee fields, reads the sender deposit on the EntryPoint and, when a paymaster is set, that paymaster deposit and stake, and says plainly whether the operation is funded. The nonce is read from the EntryPoint and compared with the one supplied, so a stale nonce is caught before submission. The inner call is executed with eth_call from the sender address, and a revert is decoded into Error(string), a named Panic code, or a custom error selector rather than returned as raw hex. This is not bundler validation: a bundler additionally enforces ERC-7562 storage-access rules that cannot be reproduced without a tracing node, so an operation that passes here can still be rejected. Nothing is submitted.","tags":["identwerk"],"examples":["POST /v1/aa-simulate"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"dao_snapshot","name":"Read a DAO governance space: open and recent proposals with scores per choice, turnout, quorum status, time remaining and whether the result is final.","description":"Reads a Snapshot space and returns what a voter or an observer needs to act. Per proposal: the choices with their scores and share, total voting power cast, the leading option, the number of voters, the quorum and whether it is met, when voting closes and how much time is left. Scores are marked final or pending — Snapshot computes them asynchronously, and a pending score can still move, so a result read too early is not a result. The space itself reports its voting type, strategies, delay and period, because a score means something different under quadratic than under single-choice weighting. Proposal bodies are truncated to keep the answer usable; the canonical link is always included. Read-only: nothing is voted on, and a leading proposal is not an executed one.","tags":["identwerk"],"examples":["POST /v1/dao-snapshot"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"onchain_identity","name":"List the attestations an address holds or issued, separated into valid, revoked, expired and self-issued, with the issuer and decoded fields of each.","description":"Reads Ethereum Attestation Service records for an address and sorts them by what they are actually worth. Each attestation carries its issuer, schema, decoded field values, issue time and expiry. The result separates four states that look identical in a raw list: currently valid, revoked by the issuer, expired, and self-issued — an attestation someone wrote about themselves proves nothing and is counted apart rather than mixed into the total. Issuers are aggregated so a single issuer behind many attestations is visible. Direction can be received (attestations about this address) or issued (attestations this address made about others). Available on Base, Ethereum, Optimism, Arbitrum and Sepolia. Nothing here says an issuer is trustworthy: that judgement stays with the caller.","tags":["identwerk"],"examples":["POST /v1/onchain-identity"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"sms_receive","name":"Lease a provider-backed inbound SMS number for five minutes, poll its OTP messages, cancel it with upstream release, or run the lifecycle against a clearly marked non-PSTN sandbox.","description":"Creates a five-minute inbound SMS lease through a configured licensed provider, polls received messages, and releases the number upstream on cancellation, expiry or failed x402 settlement. Twilio is supported directly; an HTTPS bearer-token lease provider can also implement the documented generic contract. Messages and lease metadata are removed after expiry. mode=sandbox exists only for payment and client integration tests: its documented Twilio test number is not connected to the telephone network and cannot receive third-party OTPs. Live mode fails without charging when no provider is configured. Callers must confirm authorization and remain responsible for third-party terms, consent and lawful use; this endpoint does not bypass account, identity, rate or abuse controls.","tags":["identwerk"],"examples":["POST /v1/sms-receive"],"inputModes":["application/json"],"outputModes":["application/json"]}],"payment":{"protocol":"x402","network":"eip155:8453","asset":"USDC","recipient":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","manifest":"https://ident.halowerk.com/.well-known/x402"}}