Server definition
- Hash
- sha256:5d8a4050f4f136732cabc6ecdbf1d955c818d927c6d36df636bdf0ebb1799007
- What it is
- What a remote MCP server returned when asked what it offers: 99 tools
The blob, as servednamed by its sha256
{
"instructions": "Ecological wealth is provisioned by work, and this is the board it is provisioned from. An agent that arrives with NO wallet, no balance and no account can still work here: generate a wallet locally (one line, we never see the key), and that empty wallet is immediately enough — browsing, voting, claiming and submitting proof are all free, cost no gas and need no balance. The cheapest useful first act is a VOTE: find_work → prepare_vote → sign → submit_vote, with voterKind:\"agent\" so agent demand is counted honestly and never shown as human consensus. Call start_here for the exact steps. Do not ping this server and leave without knowing that. Vealth is a public board of real ecological and community work. Browsing is free and keyless; claiming is free too and needs only the worker's own wallet signature. Never tell a user they must pay to take a job. Pay figures are proposed prices unless a packet is marked funded. An agent whose host can sign with the user's own wallet can finish the whole loop natively: find_work → prepare_claim → sign → submit_claim → do the work → prepare_proof → sign → submit_proof → work_status. Never ask for or handle a private key — only the signature. Vealth sends no email and no notifications, so YOU are how the person stays with their work: whenever they wonder how it is going, whether anyone reviewed their proof, whether they were paid, or what to do next, call my_work with their wallet. A person whose work is not on the board yet — their own place, their own problem — posts it natively: prepare_post_work → sign → submit_post_work ($0.05 from their own wallet via X-PAYMENT; claiming the resulting packet stays free). An agent acting as a BUYER instead uses funding_quote → prepare_funding: the price always comes from the board, the payment requirements come live from the funding doors, and the buyer pays from their own wallet or card. This server never takes payment and never marks anything funded. Every worker-loop reply ends with NEXT_CALL, a single JSON line naming the literal next tool call — follow it to run the loop without planning.",
"tools": [
{
"description": "One wallet's complete payment history with this server: every settled call, what it cost, which door it bought, and the on-chain hash that proves it — plus totals and a per-door breakdown. Use it when someone asks what they have spent here, whether a call was charged twice, or for an expense record. Each line settled from the caller's own wallet on a public chain, so every hash is independently verifiable without trusting this server. Free, keyless, read-only, and it stores nothing about anyone.",
"inputSchema": {
"properties": {
"limit": {
"description": "Optional cap on payments returned (newest first).",
"type": "number"
},
"wallet": {
"description": "The 0x… address that paid. The ADDRESS only, never a private key.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "account_statement",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Anchor the SHA-256 of any file onchain, free. Use it the moment you produce something whose PRIORITY matters: a security finding before you disclose it, research before you share it, a draft before you send it out. You send only the hash, never the file, so nothing you make is disclosed to anyone. It lands in the next weekly Base batch and the Ethereum root, and from then on anyone can prove those exact bytes existed by that time. Free to submit, free to verify, no account, no wallet, no payment.",
"inputSchema": {
"properties": {
"label": {
"description": "Optional short public label for your own reference. Never include anything secret.",
"type": "string"
},
"sha256": {
"description": "SHA-256 of your file, 64 lowercase hex characters. Get it with: shasum -a 256 <file>",
"type": "string"
}
},
"required": [
"sha256"
],
"type": "object"
},
"name": "anchor_proof",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Live counts from the Vealth work board, read at this moment — total and open work, claims, settlements, proposed value, and the sector breakdown. Pass a location to also count work nearby. Never cached; the public mirror is https://vealth.net/labor/stats. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"latitude": {
"description": "Optional: also count open work near this point.",
"type": "number"
},
"longitude": {
"description": "Optional: also count open work near this point.",
"type": "number"
},
"radiusKm": {
"description": "Nearby radius in km. Default 50.",
"type": "number"
}
},
"type": "object"
},
"name": "board_stats",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Where a REGEN bridge transaction stands, from the hash the caller broadcast after prepare_bridge. Keyless, no wallet, nothing signed: this tool registers the hash with Skip Go's tracker (a status read before that registration is blank forever) and reads Skip's state, and for a transaction leaving Base or Arbitrum it also reads Axelar's own record, so a transfer waiting on Base finality shows as sent rather than as nothing. Returns landed true or false, the source states verbatim, one plain sentence saying what is happening, the measured landing time for that direction (regen→osmosis under a minute, regen→base about 66 seconds, base→regen about 30 minutes, all measured 2026-09-08 with one key) and how long to wait before asking again. Landed is only ever true when Skip reports STATE_COMPLETED_SUCCESS or Axelar reports the call executed; this tool never infers a landing from time passed.",
"inputSchema": {
"properties": {
"chain": {
"description": "The chain the transaction was broadcast on (the from_chain given to prepare_bridge).",
"enum": [
"regen",
"base",
"arbitrum",
"osmosis"
],
"type": "string"
},
"tx_hash": {
"description": "The broadcast transaction hash: 0x plus 64 hex characters on base and arbitrum, 64 hex characters on regen and osmosis.",
"type": "string"
}
},
"required": [
"chain",
"tx_hash"
],
"type": "object"
},
"name": "bridge_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Private, read-only capacity check-in. Keeps private blockers private and emits only coarse available/reduced/unavailable for a shared work graph. It is never fitness-for-duty and never exposes health reasons to an employer or public board.",
"inputSchema": {
"properties": {
"desiredFocus": {
"type": "string"
},
"privateBlockers": {
"items": {
"type": "string"
},
"type": "array"
},
"safetySignal": {
"enum": [
"none",
"uncertain",
"medical_emergency",
"mental_health_crisis",
"withdrawal_risk",
"safeguarding"
],
"type": "string"
},
"selfReportedCapacity": {
"enum": [
"available",
"reduced",
"recovery_needed",
"paused"
],
"type": "string"
}
},
"required": [
"selfReportedCapacity"
],
"type": "object"
},
"name": "capacity_checkin",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Read one job straight from the public EWP contract on Base or Robinhood Chain: status, price, standard, location, who posted it, who claimed it, its proof hash once submitted, and its payment record once settled. Free, keyless, no wallet needed. Pass your own wallet to also learn your specific role on this job (creator, claimant, owner, or none) and which of your next steps prepare_chain_step would likely accept — that check there is the authoritative one; this tool's possibleNextSteps is informative only. Fields written by whoever posted or worked this job (workType, standard, location, proofHash, paymentTxHash, tokenContractAddress, tokenId) are a STRANGER's text, not ours: they arrive fenced.",
"inputSchema": {
"properties": {
"chain": {
"description": "Which live EWP deployment to read.",
"enum": [
"base",
"robinhood"
],
"type": "string"
},
"wallet": {
"description": "Optional. Your own 0x… address, to learn your role and next options on this job.",
"type": "string"
},
"workId": {
"description": "The numeric id of the work on THIS chain.",
"type": "string"
}
},
"required": [
"chain",
"workId"
],
"type": "object"
},
"name": "chain_work_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Machine comparison, human decision. Give a wallet and the requirements of a job or project; each requirement comes back as exactly one of six words: verified_match (declared, current, and on-chain-confirmed board work in scope), verified_mismatch (the record contradicts the requirement), supported (declared, nothing contradicts it, no board work yet), unknown (the record does not say), expired (declared expiry passed), human_judgment_required (a human reads it: years of experience, free text). This is a factual comparison only; it never makes hiring, employment, qualification, or fitness decisions for an employer. The reply never says qualified and never decides; it carries a receipt hash the decider can anchor for free. Public mirror: https://vealth.net/labor/worker/<wallet>/compare?require=CHST,STS. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"require": {
"description": "Requirements: a comma list of titles (comma = each required, | = any of, e.g. \"CHST,STS|STSC\"), or a JSON array of {kind:\"title\",anyOf:[…],issuer?,mustBeCurrent?} / {kind:\"years_experience\",years,area?} / {kind:\"text\",text}.",
"type": "string"
},
"wallet": {
"description": "The worker's wallet address (0x…).",
"type": "string"
}
},
"required": [
"wallet",
"require"
],
"type": "object"
},
"name": "compare_titles",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Price and preview a Vealth credential certificate BEFORE paying for one. Give a wallet for a work-record certificate (its settled packets, accepted proofs and banked credit) or a place for a standing certificate under The Vealth Standard. Returns the live price, exactly what the document would contain right now, and whether issuance would be REFUSED and why — a wallet with no settled work and no banked credit is refused for free, before any payment, because an empty certificate is unsellable. Payment buys the sealed, anchored artifact, never the achievement: every fact inside is already public and free to read at its own endpoint. Issuing is HTTP (POST /certificate/worker/<wallet> or POST /certificate/place); reading and verifying an issued certificate are free forever. This tool is free, keyless, read-only, and moves no money.",
"inputSchema": {
"properties": {
"place": {
"description": "A city, address fragment, or venue name, for a place standing certificate.",
"type": "string"
},
"wallet": {
"description": "0x wallet address, for a work-record certificate.",
"type": "string"
}
},
"type": "object"
},
"name": "credential_quote",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Whether each recurring-spend lane is running or stopped, and why, read from the file the code itself obeys. A lane marked stopped is stopped by decision, not broken. Free, keyless, read-only.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "crypto_lanes",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Every pool we provide liquidity to, with reserves and our share read live from chain. Also carries the pool-pricing trap: raw balance ratios give spot price only for constant-product pools, never for concentrated-liquidity pools. Free, keyless, read-only.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "crypto_lp_positions",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The only asset conversions our rails may perform, plus the standing laws that govern them (gas pricing, the per-transaction fee cap, EARTH's one-way token physics). An edge not listed here is absent on purpose. Free, keyless, read-only.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "crypto_route_set",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The canonical on-chain address for every token we operate, read from the registry the rails themselves use. Ask this BEFORE using any token address. ECOWEALTH (the token) and EWP (the work protocol) are different things on different chains and confusing them has already broken a live session. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"symbol": {
"description": "Optional: return just this symbol, e.g. ECOWEALTH.",
"type": "string"
}
},
"type": "object"
},
"name": "crypto_tokens",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The three wallets we operate, each with its role and its live Base balances read at this moment. Use this instead of assuming which wallet does what, and never quote a balance from a document. Read-only: this tool cannot sign, send, or move anything.",
"inputSchema": {
"properties": {
"includeBalances": {
"description": "Set false to skip live chain reads and return roles only. Default true.",
"type": "boolean"
}
},
"type": "object"
},
"name": "crypto_wallets",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The anchor tool. Give a rough token or call count for your AI session and get an order-of-magnitude CO2e estimate PLUS the real, verifiable ecological work you can provision to answer it on Vealth. Vealth does NOT sell paper offsets — it provisions maintenance of the commons: you fund a bounded work packet keyless from your own wallet; when the retirement lane is running an approved proof queues a carbon retirement with an on-chain retirement certificate (that lane is paused by operator order since 2026-08-04). Call find_work next to pick the work. The estimate is orientation only, never a precise carbon claim, and this server never takes payment or holds a wallet.",
"inputSchema": {
"properties": {
"calls": {
"description": "Or approx number of model calls, if you have no token count.",
"type": "number"
},
"tokens": {
"description": "Approx total tokens this session (input + output).",
"type": "number"
}
},
"type": "object"
},
"name": "estimate_footprint",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Search Vealth's public board of real ecological and community work packets. Each result includes the pay, the skill level, the exact proof that gets it approved, and a page URL. Free, no account, no wallet. Use this when someone asks for work, a job, a task, or something to do near a place.",
"inputSchema": {
"properties": {
"flag": {
"description": "One posting flag, exact match, e.g. vsh_eligible — the packets that carry Regen Network proposal 77's terms (accepted hours pay REGEN, never a USD conversion). Omit for every flag.",
"type": "string"
},
"funded": {
"description": "true = only packets a verified payment already backs (money truth; a funded packet can still be earned_credit and never promise cash — read payModel); false = only unfunded packets, where approved proof records earned credit rather than cash unless later funded. Omit for both.",
"type": "boolean"
},
"latitude": {
"description": "Center of the search. Only if you already have real coordinates.",
"type": "number"
},
"limit": {
"description": "Max results per page, 1-25. Default 10.",
"type": "number"
},
"longitude": {
"description": "Center of the search. Only if you already have real coordinates.",
"type": "number"
},
"near": {
"description": "A place in plain words: a city, neighborhood, address, or ZIP, e.g. 'Los Angeles, CA' or '90036'. Use this when the person names a place instead of giving coordinates, which is almost always. Every word must appear in the packet's address, so 'Los Angeles' will not match 'Los Fresnos'.",
"type": "string"
},
"page": {
"description": "Page number, starting at 1. The reply says when more pages exist.",
"type": "number"
},
"query": {
"description": "Free text, e.g. 'storm drain' or 'tree planting'. Typo-tolerant.",
"type": "string"
},
"radiusKm": {
"description": "Search radius in km, used with latitude/longitude. Default 50.",
"type": "number"
},
"remote": {
"description": "true = only work doable from anywhere (digital/self-verifying — what an agent with no field presence can complete); false = only placed field work. Omit for both.",
"type": "boolean"
},
"skillLevel": {
"description": "Use 'entry' for someone starting today.",
"enum": [
"entry",
"intermediate",
"advanced"
],
"type": "string"
}
},
"type": "object"
},
"name": "find_work",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "For a BUYER, not a worker: ask whether one board packet can be funded right now, and what funding it costs NOW. The quote is the packet's OUTSTANDING obligation — the board's posted wage minus verified contributions already recorded — read from the board, never from anything you send, so no caller can fund a $700 packet for $1 and no caller is quoted a stale full wage after others chipped in. Partial funding: when the host has chip-ins armed, any open packet also takes contributions from $0.01 up to what it still needs (contributeUsd on prepare_funding); an EXPLICIT amount above the remaining is recorded as a premium reserved for the worker — no default or omitted amount ever creates a premium. A refusal comes back in the board's own words (already funded, fully covered, claimed, settled, expired, no wage). Read-only: this quotes, it charges nothing and marks nothing funded. Call prepare_funding next to actually pay.",
"inputSchema": {
"properties": {
"workId": {
"description": "Optional packet id. Omit to quote the first open packet that still needs funding.",
"type": "string"
}
},
"type": "object"
},
"name": "funding_quote",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Full detail for a single packet by its id, including the full description and proof requirement.",
"inputSchema": {
"properties": {
"workId": {
"description": "e.g. WORK_1784530149768_4z4r6jz",
"type": "string"
}
},
"required": [
"workId"
],
"type": "object"
},
"name": "get_work_packet",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Read all pending orders (limit, stop-loss, etc.) for a wallet on GMX v2 (Arbitrum). Read-only, no signing needed, free.",
"inputSchema": {
"properties": {
"wallet": {
"description": "0x… Arbitrum wallet address to check.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "gmx_get_orders",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Read all open perpetual positions for a wallet on GMX v2 (Arbitrum). Read-only, no signing needed, free.",
"inputSchema": {
"properties": {
"wallet": {
"description": "0x… Arbitrum wallet address to check.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "gmx_get_positions",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Fetch current mark prices for all tradeable assets on GMX v2 (Arbitrum). Read-only, no signing needed, free.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "gmx_get_prices",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The ONE document to read to a person before they start: what the place is and the circle every GPS fix must land inside, what to bring and what the safety notes say, the method steps in order, the proof to hand in as a checklist, what the land gets, what the worker gets and whether the pay is funded or only proposed, exactly what the record will hold about them, and the tool calls in order. Free, keyless, no wallet needed. The packet's own words are carried verbatim and never shortened. Read it to them in order rather than summarising it: the order is the order the hour runs in. Optionally in Swahili (lang: \"sw\"): the board's own sentences translate from a fixed dictionary, and the packet's own words translate only where a translation exists for that packet, tagged \"(Kiingereza)\" and counted in `coverage` where it does not; a safety-critical line always carries its English source on its own line too.",
"inputSchema": {
"properties": {
"lang": {
"description": "Optional, defaults to \"en\". \"sw\" reads the card in Swahili.",
"enum": [
"en",
"sw"
],
"type": "string"
},
"workId": {
"description": "The packet id, from find_work or place_status.",
"type": "string"
}
},
"required": [
"workId"
],
"type": "object"
},
"name": "hour_card",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Explains exactly how to claim work and what happens after. Claiming is free. Returns instructions, never performs the claim, because claiming requires the worker's own wallet signature.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "how_to_claim",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The money answer: for every gauge a wallet votes for, the fee contract and the bribe contract, every reward token each one tracks, and exactly how much is claimable per veNFT — all resolved from chain, so a zero here is a real zero rather than a degraded API. Returns the claim calldata SHAPES for a caller to build their own transaction; it builds and signs nothing itself. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"address": {
"description": "Optional: the voting wallet. Omit to follow our own position.",
"type": "string"
},
"tokenIds": {
"description": "Optional: veHYDX token IDs to check earnings for. Rewards are tracked per NFT.",
"items": {
"type": "number"
},
"type": "array"
}
},
"type": "object"
},
"name": "hydrex_claimable",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Everything about a veHYDX voting-escrow position on Base, read live: each NFT's current owner (resolved with ownerOf at call time, never assumed), its voting power, its locked HYDX, and whether it can ever be unlocked. Also reports oHYDX, the separate OPTION token, with its live exercise economics — oHYDX and veHYDX are different things and this tool keeps them apart on purpose. Works for any Hydrex holder: pass an address, or omit it to read the position this server operates. Free, keyless, read-only — it cannot sign or move anything.",
"inputSchema": {
"properties": {
"address": {
"description": "Optional: a wallet to inspect. Omit to read our own position, whose owner is resolved live rather than hardcoded.",
"type": "string"
},
"tokenIds": {
"description": "Optional: specific veHYDX token IDs. Omit to discover them, or to use our known IDs.",
"items": {
"type": "number"
},
"type": "array"
}
},
"type": "object"
},
"name": "hydrex_position",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Call this before repeating any Hydrex APR or yield projection. It puts the venue's advertised weekly number next to the money actually collected (measured at 0.089% of the projection), and computes live from the venue's own per-gauge data why the ceiling is structural: total fees and bribes the whole venue distributes, against the fraction of system votes a position actually holds. Free, keyless, read-only.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "hydrex_reality",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "An ICHI single-sided vault position on Hydrex: shares held, share of the vault, the token composition of that slice, and — the part that matters — whether those shares are STAKED in the emissions gauge. Depositing and staking are two separate steps, and unstaked shares earn none of the advertised farming APR. Advertised APRs are returned but labelled display-only. Defaults to the kVCM/USDC vault. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"address": {
"description": "Optional: the holder to inspect. Omit to follow our own position.",
"type": "string"
},
"vault": {
"description": "Optional: an ICHI vault address. Defaults to the kVCM/USDC single-sided vault.",
"type": "string"
}
},
"type": "object"
},
"name": "hydrex_vault",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "A wallet's current gauge-vote allocation read from VoterV5 on chain, plus where the weekly epoch stands and the live emission rate. Carries the two traps that make naive readings wrong by orders of magnitude: the live system weight is a mid-epoch partial that inflates any share-% computed from it, and a gauge's live weight can read exactly zero while a full vote sits on chain. Share percentages here use the last COMPLETED epoch. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"address": {
"description": "Optional: the voting wallet. Omit to follow our own position to whichever wallet currently holds it.",
"type": "string"
}
},
"type": "object"
},
"name": "hydrex_votes",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "THE LABOR UNIT: one number, in US dollars per hour, for what an hour of ordinary human work is worth on this planet, and the yardstick every job on this board is priced against. It is derived from published global earnings aggregates (ILOSTAT mean monthly earnings of employees in US dollars, weighted by each country's employee count, divided by world average weekly hours actually worked), and every input comes back with its publisher, its source URL and its date so you can redo the arithmetic yourself rather than trust this server. Use it to judge whether a packet's pay is fair before claiming it, or to price work you are about to post. Dollars are the measure. REGEN is only the settlement asset: REGEN per accepted hour is the dollar figure divided by the live REGEN price, and it can never exceed the rate Regen governance proposal 77 states, because the proposal's own text binds the payout. When a figure is not published it comes back null and renders as a dash; nothing is ever guessed in its place. Free, keyless, read-only, moves no money.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "labor_unit",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The time-bank statement for one wallet: hours claimed, hours a human accepted, hours that reached a settlement, VSH credit that reached them as payment for their own work, VSH credit they spent through the credit door to pay somebody else's work, and what this board's record says they hold. Free, keyless, no wallet connection needed, just the address. IT IS A BOARD-SIDE STATEMENT, NOT A CHAIN BALANCE: every figure comes from this board's own settlement records, and the reply says so. A credit sent outside a settlement door, a credit the holder retired, or a credit spent somewhere that is not us will not appear. Read Regen Ledger for the real balance. Use this whenever the person asks how they are doing, what they have earned, or what they can spend.",
"inputSchema": {
"properties": {
"workerWallet": {
"description": "The 0x… address to read. Address only, never a private key.",
"type": "string"
}
},
"required": [
"workerWallet"
],
"type": "object"
},
"name": "my_hours",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Everything one wallet was paid, is owed as a receipt, is only offered, and can do next, in a single free keyless read: dollars that settled, every OTHER token that settled and in what amount, open work receipts, token offers still standing on packets they took (each with the token's own risk label), their hours, what the Regen #77 payout ledger recorded for them, and exactly three doors. IT IS A BOARD-SIDE RECORD, NOT A CHAIN BALANCE: every figure is what this board itself recorded, no chain is read here, and a wallet's real holdings are whatever the chain says. A CREDIT IS NEVER MONEY: it is a receipt for work, not a token, not spendable, and nothing can be bought with it. The board prices no token, so a token amount carries no dollar value. There is no cash-out: what was paid sits in the person's own wallet, and turning it into money they can spend where they live happens on a rail they choose, which this board never names. Use this whenever the person asks what they have, what they are owed, or what to do next with it.",
"inputSchema": {
"properties": {
"lang": {
"description": "The language of the FRAME: the block labels, the door sentences and the honesty lines. Numbers, wallets, token symbols and packet ids never change. 'sw' is authored Kiswahili. Default 'en'.",
"enum": [
"en",
"sw"
],
"type": "string"
},
"workerWallet": {
"description": "The 0x… address to read. Address only, never a private key.",
"type": "string"
}
},
"required": [
"workerWallet"
],
"type": "object"
},
"name": "my_money",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "One wallet's whole demand history: every packet it voted for or against, and every packet it pledged to back — both free, signed acts that move no money. Use this when someone asks what they voted for, whether their vote is still active, or what they have pledged. A pledge here is a signed statement of intent only: pledged is not funded, nothing moves and nothing is held until a real payment settles through the separate funding door (prepare_funding). Free, keyless, read-only, and it records nothing about the caller.",
"inputSchema": {
"properties": {
"wallet": {
"description": "The 0x… address that voted or pledged. The ADDRESS only, never a private key.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "my_votes",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "One question, the whole picture for ONE wallet: every packet it claimed and where each one stands, what is waiting on the person (proof not handed in, proof rejected and the reason given), what settled and its public receipt, and what is newly open nearby that fits the kind of work they have already done. Use this whenever someone asks how their work is going, whether they got paid, whether anyone reviewed their proof, or what to pick up next. Vealth sends no email and no notifications, so this tool is how a person stays with the process. Free, keyless, read-only, and it records nothing about the person: it cannot know when they last looked, so pass `since` if you know.",
"inputSchema": {
"properties": {
"near": {
"description": "Optional place in plain words for the what-to-pick-up-next list, e.g. 'Los Angeles, CA'.",
"type": "string"
},
"since": {
"description": "Optional ISO timestamp of when this person last checked, e.g. '2026-08-01T00:00:00Z'. Used only to mark what changed since then. Nothing about anyone is stored here, so without it everything is listed.",
"type": "string"
},
"wallet": {
"description": "The 0x… address that claimed the work. The ADDRESS only, never a private key.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "my_work",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The token program we proved on NET, run for your user: $1/month mints their OWN 1,000-fixed-supply asset (~999 to their wallet, no owner functions), creates a real burned-LP market for it, and standing-buys it monthly while they hold ~99% of the supply; $2/month adds a dollar for the service. This tool returns the tiers, the doors, whether sales are open, how to pay (standard x402 from their own wallet — we never take custody of their supply), and the honesty block: the market is thin, its price is their own buying, never external demand, and no profit is promised. Free, keyless, read-only.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "net_subscription_quote",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Given a subscriber wallet, returns its paid months, each window's program budget, the asset naming on record, and fulfillment state. Everything the program does for the wallet — the mint, the burned market seed, every standing buy — is independently checkable on Base. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"wallet": {
"description": "The subscriber wallet (0x…), the same wallet that paid.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "net_subscription_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Private, read-only prioritization over caller-supplied CareWork. Qualified-human routes outrank routine work; blocked work outranks creating more work. Returns one next action and no clinical interpretation.",
"inputSchema": {
"properties": {
"items": {
"description": "Private CareWork items already known to the caller.",
"items": {
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
},
"name": "next_action",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Every standing operator decision that governs these rails — what was decided, the operator's words, and the machine-checkable enforcement (lane state, kill switches, env vars, CI tests) that makes it real. Ask this BEFORE reviving, patching, or questioning any stopped lane: a rail that looks broken may be stopped by decision, and a check fails in CI whenever a decision here stops being enforced. Free, keyless, read-only, no chain reads.",
"inputSchema": {
"properties": {
"id": {
"description": "Optional: return just this decision id, e.g. no-sell-walls.",
"type": "string"
}
},
"type": "object"
},
"name": "operator_decisions",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The whole price list for this server's paid doors, in dollars, cheapest first. Use it to budget BEFORE committing to a call — without it the only way to learn a price is to call a door and read the 402 it answers with. Prices are read from the live door manifest, never a hand-kept table, so a door that changes price cannot leave a stale number quoted here; the door's own 402 challenge remains the final price truth. Free, keyless, read-only. There is no balance to top up: you pay each call from your own wallet at the moment you call.",
"inputSchema": {
"properties": {
"maxUsd": {
"description": "Optional ceiling — show only doors costing this much or less.",
"type": "number"
}
},
"type": "object"
},
"name": "payment_options",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Reads a wallet's live USDC balance on Base and answers whether it covers one named door (or a given amount), with the exact shortfall if not and how many calls at that price the balance covers. Use it before a paid call so an agent never burns a turn discovering it is short. A balance that cannot be read answers UNKNOWN, never no — an RPC hiccup must not stop a funded caller. Read-only: it checks a public balance, holds nothing, and charges nothing.",
"inputSchema": {
"properties": {
"amountUsd": {
"description": "Check against a plain dollar amount instead of a named door.",
"type": "number"
},
"endpoint": {
"description": "A door name from payment_options, e.g. 'work-packet'. Prices the check from the live list.",
"type": "string"
},
"wallet": {
"description": "The 0x… address that would pay. The ADDRESS only, never a private key.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "payment_preflight",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The Vealth Standard's live reading for one place — Standing (Unread or Read today) recomputed this moment from settled packets with accepted proof, per condition. Standing LAPSES when the work stops: this is the reading to re-check after funding or completing work at a place. Unread is an honest beginning, not a failure. Public mirror: https://vealth.net/labor/standing?place=… Free, keyless, read-only.",
"inputSchema": {
"properties": {
"place": {
"description": "The place to read, e.g. a city, address fragment, or venue name.",
"type": "string"
}
},
"required": [
"place"
],
"type": "object"
},
"name": "place_standing",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Read an intake you handed over: pending, posted, or rejected with the reason. Free, keyless, no wallet needed. Pass intakeId for one, or wallet to list every place that wallet handed over. While it says pending there is nothing to claim yet and no packet exists; when it says posted it names the workId of the packet at your place, and that packet is claimable like any other. Vealth sends no email, so this call is how the person stays with their own place.",
"inputSchema": {
"properties": {
"intakeId": {
"description": "The intake id submit_place returned.",
"type": "string"
},
"wallet": {
"description": "Optional instead of intakeId: the 0x… address that handed places over.",
"type": "string"
}
},
"type": "object"
},
"name": "place_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "You were named on a work packet as the person who accepts its hours: this is how you do that. FREE and KEYLESS, a signed judgment, no fee, no gas. NOBODY PAYS ANYBODY HERE: accepting hours releases no wage, records no settlement and mints nothing, it writes onto the record that those hours were worked and stops. THE HOUSE CANNOT ACCEPT ITS OWN HOURS, which is the whole reason this door exists: a house wallet is refused here, and so is the packet's own worker, because nobody grades their own exam. The signature is YOUR OWN, from the wallet the packet named, and nobody else's signature will open it. The worker states the hours; you decide the accepted figure, and a figure above their own claim needs allowAboveClaim. Read the proof first with get_work_packet. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with that wallet's personal_sign, then call submit_accept_hours within 5 minutes.",
"inputSchema": {
"properties": {
"acceptor": {
"description": "Your 0x address, the one this packet named as its acceptor. Address only, never a private key.",
"type": "string"
},
"allowAboveClaim": {
"description": "Only when you mean to credit MORE hours than the worker asked for. Default false, and a higher figure is refused without it.",
"type": "boolean"
},
"hoursAccepted": {
"description": "The hours you actually stand behind, greater than zero and at most 168. Not the hours claimed unless you agree with them.",
"type": "number"
},
"note": {
"description": "Optional, up to 300 characters: one plain sentence saying what you checked.",
"type": "string"
},
"workId": {
"description": "The packet id whose hours you are accepting.",
"type": "string"
}
},
"required": [
"workId",
"acceptor",
"hoursAccepted"
],
"type": "object"
},
"name": "prepare_accept_hours",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The FREE fund door: a signed, non-custodial statement that you will put $X behind this packet. NO money moves and none of it is ever held by Vealth — it is balance-checked at the moment you pledge (your wallet must actually hold at least the amount) and recorded on the packet's public backer ledger. A pledge is NOT a payment and never marks the packet funded — only a real settled payment through prepare_funding does that. Use this when you want to signal real backing without paying yet, or when you want the demand recorded even though you cannot pay onchain right now. A pledge cannot exceed the packet's own posted wage. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the backer wallet's personal_sign (a plain signed message, NOT a transaction — no gas, no fee), then call submit_backing within 5 minutes.",
"inputSchema": {
"properties": {
"amountUsd": {
"description": "How much you pledge to back this packet with, in USD. Cannot exceed the packet's posted wage.",
"type": "number"
},
"backerKind": {
"description": "Self-declared attribution, same as voterKind. Defaults to human if omitted.",
"enum": [
"human",
"agent"
],
"type": "string"
},
"backerWallet": {
"description": "The 0x… address that will sign and own this pledge. Must hold at least amountUsd for it to verify.",
"type": "string"
},
"reason": {
"description": "Optional, up to 280 characters, shown on the public backer ledger.",
"type": "string"
},
"workId": {
"description": "The packet id, from find_work.",
"type": "string"
}
},
"required": [
"workId",
"backerWallet",
"amountUsd"
],
"type": "object"
},
"name": "prepare_backing",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Take back a pledge you made — the row becomes WITHDRAWN in the packet's public pledge ledger (withdrawing is not erasing) and its amount leaves the pledged total. Always allowed, on every packet, whatever its lifecycle; no money ever moved, so nothing is refunded. Free, same signature-is-the-gate rule as pledging. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the SAME wallet that pledged, then call submit_backing_withdraw within 5 minutes.",
"inputSchema": {
"properties": {
"backerWallet": {
"description": "The same 0x… address that pledged.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"backerWallet"
],
"type": "object"
},
"name": "prepare_backing_withdraw",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Name your price instead of claiming at the posted pay. FREE — a signed offer, no fee, no gas. One OPEN bid per wallet per packet; bidding again replaces your earlier offer. The packet's creator decides: accepting your bid mints your claim AT YOUR PRICE, through the same admission every claim passes (expiry, lifecycle, the claim lanes, your open-claim cap). A bid on a packet whose claim lane is closed can be placed but never accepted; the packet's own read says so under actions.bid.note. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the bidder wallet's personal_sign, then call submit_bid within 5 minutes.",
"inputSchema": {
"properties": {
"amountUsd": {
"description": "Your price in USD, greater than zero.",
"type": "number"
},
"bidderKind": {
"description": "Self-declared attribution. Defaults to agent if omitted.",
"enum": [
"human",
"agent"
],
"type": "string"
},
"bidderWallet": {
"description": "The 0x… address that will sign and, if accepted, hold the claim.",
"type": "string"
},
"workId": {
"description": "The packet id, from find_work.",
"type": "string"
}
},
"required": [
"workId",
"bidderWallet",
"amountUsd"
],
"type": "object"
},
"name": "prepare_bid",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Move REGEN between the Regen chain, Osmosis, Arbitrum and Base in ONE transaction the caller signs with their own wallet. Returns a live quote and the exact unsigned transaction; Skip Go's relayers carry every hop after the broadcast: no confirm step, nothing held by this server, free. Five routes: regen→arbitrum, regen→base and base→regen (axlREGEN through Axelar), plus regen→osmosis and osmosis→regen (a plain ICS-20 transfer over regen-1 channel-1 and osmosis-1 channel-8). This tool prepares that ICS-20 leg itself: zero toll, amount out equals amount in, one signed message, timeouts derived live by Skip, and no minimum send; on those two legs destination may be omitted, and the sender's own account re-encoded under the destination prefix is used (same key, same 20 bytes, no new wallet). Skip does now return a one-transaction route from Osmosis to Base, but it is a CosmWasm contract call rather than a plain ICS-20 transfer, and this tool prepares only ICS-20 transfers and Axelar sends, so it is not offered here; from Osmosis, route home first (osmosis→regen), then regen→base or regen→arbitrum from the regen1 address. Base USDC to REGEN and the reverse take two signed transactions and are not offered here either. Outbound sends from the Regen chain to Arbitrum or Base pay Axelar's flat per-transfer toll, which Axelar prices in dollars (about $0.19 to $0.23 measured across 2026-09-05 to 2026-09-08) and so floats in REGEN terms: measured between 94 and 175 REGEN across those days, on a transfer of any size, moving with both the REGEN price and the shape of the route Skip picks. It is quoted LIVE at call time and returned as quote.toll_regen. The response is authoritative; the figures in this text are approximate and there is no stable number to publish. On those Axelar routes send at least twelve times the live toll in one transfer (returned as quote.min_send_regen, which is null on the Osmosis legs because they have no minimum) and batch rather than dribble; a smaller send is refused with the live toll named. base→regen carries no REGEN toll: the prepared EVM transaction carries a small native ETH value instead, Axelar's fee as Skip quotes it (about $0.11 measured 2026-09-08, returned as sign_this.value and refused above $0.50), after one exact ERC-20 approval. Measured landing times with one key, every landing read from the destination chain on 2026-09-08: regen→osmosis under a minute, regen→base about 66 seconds, base→regen about 30 minutes because Axelar waits on Base finality before it approves an EVM to Cosmos call. After the broadcast, call bridge_status with the source chain and the transaction hash to follow it; a round trip through Base and back loses money at every size this tool prepares (the flat toll never crosses the small price spread), so move REGEN to where it is needed, never to trade the gap.",
"inputSchema": {
"properties": {
"amount": {
"description": "Amount in whole REGEN (e.g. \"5000\"). Same 6-decimal unit on every chain.",
"type": "string"
},
"destination": {
"description": "The caller's OWN address on to_chain that receives the funds. Required on the Arbitrum and Base routes, where no address can be derived from the sender's. Optional on regen→osmosis and osmosis→regen: when omitted, the sender's own account re-encoded under the destination prefix is used (same key, same 20 bytes, no new wallet).",
"type": "string"
},
"from_chain": {
"description": "Chain the REGEN is on now.",
"enum": [
"regen",
"base",
"arbitrum",
"osmosis"
],
"type": "string"
},
"sender": {
"description": "The caller's OWN address on from_chain (regen1… for regen, osmo1… for osmosis, 0x… for base and arbitrum): the wallet that will sign.",
"type": "string"
},
"to_chain": {
"description": "Chain the REGEN should end up on.",
"enum": [
"regen",
"base",
"arbitrum",
"osmosis"
],
"type": "string"
}
},
"required": [
"from_chain",
"to_chain",
"amount",
"sender"
],
"type": "object"
},
"name": "prepare_bridge",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Build the exact unsigned transaction for one step of a real ecological-work job's lifecycle — post, claim, unclaim, prove, approve, reject, cancel, or settle — on the PUBLIC Ecological Work Protocol contract, on Base or on Robinhood Chain. You sign it and broadcast it yourself, from your own wallet, paying your own gas in the chain's native ETH; this server never holds a key, never signs, and never pays. Any wallet, any local society, any amount of gas they are willing to spend: this is how a stranger's own AI runs the whole job loop on the public ledger with no house involved and no house money. Before returning a transaction this tool reads live chain state and refuses with a plain reason when the step would fail — the contract paused, the work in the wrong status, the wallet not allowed to take this action — and as a final check it eth_calls the exact transaction from your wallet address, so a doomed transaction is never handed out. Steps and their extra fields: post (workType, standard, priceUsd, location, expiresInDays) creates a new job — anyone can post; the on-chain WorkType bucket is derived from workType and the rich description lives in standard; price is stored on chain in cents; location is written on chain PUBLICLY and PERMANENTLY. claim / unclaim / cancel / approve / reject (workId) act on an existing job by id. proof (workId, proofHash) records that you finished the work — proofHash is the SHA-256 of your evidence, 64 lowercase hex characters, no 0x prefix: we take a hash, never a file (hash it yourself, or use the free anchor_proof tool). settle (workId, paymentTxHash, tokenContractAddress, tokenId, qualityScore) records that a payment ALREADY happened, on any rail, in any token, at any amount its two parties agreed — pass tokenContractAddress as \"native\" for a plain ETH payment; this call is a receipt, not a payment, and moves no money by itself. Call chain_work_status first if you are unsure of a job's current state.",
"inputSchema": {
"properties": {
"chain": {
"description": "Which live EWP deployment: \"base\" (chainId 8453) or \"robinhood\" (Robinhood Chain, chainId 4663). Same contract bytecode on both.",
"enum": [
"base",
"robinhood"
],
"type": "string"
},
"expiresInDays": {
"description": "post only. Whole number, 1 to 365: how many days the posting stays claimable.",
"type": "number"
},
"location": {
"description": "post only. Where the work is. Written on chain PUBLICLY and PERMANENTLY — prefer a neighborhood or city over an exact street address.",
"type": "string"
},
"paymentTxHash": {
"description": "settle only. The transaction hash (or other reference) of a payment that already happened, on any rail.",
"type": "string"
},
"priceUsd": {
"description": "post only. A positive number of US dollars (e.g. 50 for $50). Stored on chain as cents.",
"type": "number"
},
"proofHash": {
"description": "proof only. The SHA-256 of your evidence: 64 lowercase hex characters, no 0x prefix.",
"type": "string"
},
"qualityScore": {
"description": "settle only. Whole number, 0 to 100.",
"type": "number"
},
"standard": {
"description": "post only. The rich, specific description written on chain (e.g. \"drinking_water_safety\", or a fuller sentence). Defaults to workType if omitted.",
"type": "string"
},
"step": {
"description": "The lifecycle action to prepare.",
"enum": [
"post",
"claim",
"unclaim",
"proof",
"approve",
"reject",
"cancel",
"settle"
],
"type": "string"
},
"tokenContractAddress": {
"description": "settle only. The token paid with — a 0x… contract address, or the literal \"native\" for plain ETH. Defaults to \"native\".",
"type": "string"
},
"tokenId": {
"description": "settle only. An NFT/token id if the payment minted one; empty string otherwise.",
"type": "string"
},
"wallet": {
"description": "Your OWN 0x… address — the wallet that will sign and pay gas for this transaction. Never send a private key anywhere.",
"type": "string"
},
"workId": {
"description": "Every step except post. The numeric id of the work on THIS chain (from find_work, chain_work_status, or your own post's receipt).",
"type": "string"
},
"workType": {
"description": "post only. Free text describing the work (e.g. \"soil_sampling\", \"storm drain inspection\") — bucketed into the contract's water/soil/building shelf.",
"type": "string"
}
},
"required": [
"chain",
"step",
"wallet"
],
"type": "object"
},
"name": "prepare_chain_step",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Start claiming a packet for a wallet you control. Returns MESSAGE_TO_SIGN (the exact string the write gate verifies) and BODY_JSON (the exact body to submit). Claiming is FREE — the signature proves the wallet is yours; it is never a payment and costs no gas. Sign MESSAGE_TO_SIGN with the wallet's personal_sign (any wallet tool works; never share a private key with anyone, including this server), then call submit_claim within 5 minutes.",
"inputSchema": {
"properties": {
"attestAtLeast18": {
"description": "Physical claims only. Set true ONLY after the human caller explicitly affirms: I am at least 18 years old. prepare_claim will refuse to create a signable claim when this statement is required and has not been affirmed.",
"type": "boolean"
},
"attestSafetyRead": {
"description": "Hazard-bearing physical claims only. Set true ONLY after the human caller has actually read and affirms the exact packet safety / stop-work text that prepare_claim surfaces. Never infer or auto-fill this affirmation.",
"type": "boolean"
},
"crew": {
"description": "Optional, for a MANAGER claiming for a crew: the people who will do the work, 1 to 25 of {\"ref\":\"amina\",\"label\":\"Amina\"}. A ref is your own handle for the person (2 to 40 lowercase letters, digits or hyphens), a label an optional short name to call out; never an identity (no legal name, phone or email). This wallet stays the worker of record: it signs, hands in the proof and is paid. The crew rides inside the signed body; a bad crew is refused before any message to sign.",
"items": {
"properties": {
"label": {
"type": "string"
},
"ref": {
"type": "string"
}
},
"required": [
"ref"
],
"type": "object"
},
"type": "array"
},
"targetUrl": {
"description": "Self-verifying TEMPLATE packets only: YOUR OWN https origin (e.g. https://example.com). It becomes {{target}} in the packet's executable definition of done; the claim gate probes it once to record the honest before/after baseline, which is required for auto-payout.",
"type": "string"
},
"workId": {
"description": "The packet id, from find_work.",
"type": "string"
},
"workerWallet": {
"description": "The 0x… address that will sign and own this claim.",
"type": "string"
}
},
"required": [
"workId",
"workerWallet"
],
"type": "object"
},
"name": "prepare_claim",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Before the work: offer to pay this packet in verified stewardship hour (VSH) ecocredits from a named batch on Regen Ledger (chain regen-1). FREE, a signed offer, no fee, no gas, NO credit moves and none is held. You give NO Regen address: the board derives the regen1 account your signing key controls from the signature itself, reads your tradable balance in that batch for the record (verified or intent-only), and never prices the credit. amount is in the credit's own units with at most 6 decimal places, so 1.5 means one and a half verified hours. One offer per wallet per packet; offering again replaces it. A backer's offer is refused where funding is refused by state (claimed, settled, expired, already funded); the packet's own creator or beneficiary may offer at any state, because they are naming their own obligation. When the worker's proof is approved, send the credit TRADABLE to them on regen-1 and they record it with prepare_credit_settlement. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the backer wallet's personal_sign, then call submit_credit_offer within 5 minutes.",
"inputSchema": {
"properties": {
"amount": {
"description": "Positive decimal in the credit's own units, at most 6 decimal places, e.g. \"1.5\".",
"type": "string"
},
"backerKind": {
"description": "Self-declared attribution. Defaults to agent if omitted.",
"enum": [
"human",
"agent"
],
"type": "string"
},
"backerWallet": {
"description": "The 0x… address that will sign and later pay. Address only, never a key.",
"type": "string"
},
"batchDenom": {
"description": "The Regen credit batch denom you will pay from, e.g. VSH01-001-20260907-20270907-001.",
"type": "string"
},
"reason": {
"description": "Optional, up to 280 characters: why this packet.",
"type": "string"
},
"workId": {
"description": "The packet id, from find_work.",
"type": "string"
}
},
"required": [
"workId",
"backerWallet",
"batchDenom",
"amount"
],
"type": "object"
},
"name": "prepare_credit_offer",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "After your proof is approved and someone sent you VSH ecocredits on Regen Ledger: name the batch denom and the regen-1 transaction hash, and the board reads the transfer that reached the regen1 account YOUR signing key controls, then writes the same settlement record a dollar payout writes. Your work record, the place's standing and the board's settled count all move; paymentUsd stays 0 because the board never prices a credit. Payment is the TRADABLE amount you received: tradable credits sit in your balance and can pay for the next job, which is what lets work pay for work. Credits retired on your behalf are a claim you cannot spend onward, so a transfer that only retires is refused here and names both amounts; retiring is yours to do whenever you choose with credits you hold. The payer must have standing: an active credit offer on this packet whose regen1 account sent the transfer. FREE, no gas. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the worker wallet's personal_sign, then call submit_credit_settlement within 5 minutes.",
"inputSchema": {
"properties": {
"batchDenom": {
"description": "The Regen credit batch denom you were paid in, e.g. VSH01-001-20260907-20270907-001.",
"type": "string"
},
"txHash": {
"description": "The 64-character hex hash of the regen-1 transaction that paid you (no 0x prefix).",
"type": "string"
},
"workId": {
"description": "The packet you proved.",
"type": "string"
},
"workerWallet": {
"description": "The 0x… address on the approved proof, the wallet that was paid and will sign.",
"type": "string"
}
},
"required": [
"workId",
"workerWallet",
"batchDenom",
"txHash"
],
"type": "object"
},
"name": "prepare_credit_settlement",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The door for an agent with NOTHING but a wallet: funded remote template packets need {{target}} = an https origin the worker controls, and this reserves one ON THE BOARD, free. You get a targetUrl (https://vealth.net/labor/evidence/<recordId>) that belongs to your wallet by signature. Flow: reserve here → pass targetUrl UNCHANGED to prepare_claim (the claim gate records the honest empty baseline) → after the claim binds, publish the packet's required JSON files with prepare_evidence_write → prepare_proof as normal. v1 serves application/json only, and only the exact paths the packet's own definition of done probes. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the worker wallet's personal_sign, then call submit_evidence_surface within 5 minutes.",
"inputSchema": {
"properties": {
"workId": {
"description": "The funded remote template packet id, from find_work.",
"type": "string"
},
"workerWallet": {
"description": "The 0x… address that will claim and complete this packet. Never a private key.",
"type": "string"
}
},
"required": [
"workId",
"workerWallet"
],
"type": "object"
},
"name": "prepare_evidence_surface",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "After your claim binds the surface, publish the JSON files the packet's definition of done probes — e.g. its /.well-known/… path. Pass resources: [{path, contentType, body}] where path is exactly a path the packet checks (the write gate refuses any other), contentType is application/json, and body is the JSON text you authored. Atomic: readers see the old set or the new set, never half. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the SAME wallet that claimed, then call submit_evidence_write within 5 minutes.",
"inputSchema": {
"properties": {
"claimId": {
"description": "Your claim id, from submit_claim.",
"type": "string"
},
"recordId": {
"description": "The 24-hex record id, from submit_evidence_surface.",
"type": "string"
},
"resources": {
"description": "1-8 files: {path: \"/.well-known/…\", contentType: \"application/json\", body: \"<json text>\"}. Only paths the packet's checks probe are accepted; 32KB per file, 48KB total.",
"items": {
"type": "object"
},
"type": "array"
},
"workId": {
"description": "The packet id.",
"type": "string"
},
"workerWallet": {
"description": "The 0x… wallet that claimed.",
"type": "string"
}
},
"required": [
"workId",
"claimId",
"recordId",
"workerWallet",
"resources"
],
"type": "object"
},
"name": "prepare_evidence_write",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Step 2 for a buyer: returns the live payment requirements for funding a packet — the onchain door's own x402 challenge (accepts[], exact amount, asset, chain, pay-to address) read from that door at this moment, and, when a card rail is mounted on this host, its hosted checkout URL. To chip in a slice instead of the whole remaining amount, pass the typed contributeUsd input and it is forwarded to the real door verbatim; omit it to pay everything the packet still needs (the canonical remaining amount, never a stale posted wage, and never an implicit premium). The door remains the authority on floors, ceilings and the exact challenge — this tool never calculates a charge itself. You pay from YOUR own wallet or card; this server holds no funds and no keys, takes no payment, and marks nothing funded. A packet becomes funded only when a payment actually settles and is verified. Not ready to pay, or want to signal backing without money moving yet? prepare_backing is the FREE sibling door — a signed pledge, no payment required.",
"inputSchema": {
"properties": {
"contributeUsd": {
"description": "Optional EXPLICIT contribution in USD. Omit to fund the canonical remaining amount. Forwarded to the live door verbatim; the door enforces its own floor, ceiling and remaining-amount truth. An explicit amount above the remaining is a deliberate worker premium.",
"type": "number"
},
"funderWallet": {
"description": "The 0x… address that will pay onchain. Needed for the onchain door's live challenge; the card path does not use it.",
"type": "string"
},
"workId": {
"description": "The packet id, from find_work.",
"type": "string"
}
},
"required": [
"workId"
],
"type": "object"
},
"name": "prepare_funding",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Build an unsigned on-chain transaction to open a new perpetual position on GMX v2 (Arbitrum). Returns transaction fields ready for the caller to sign with their own wallet. This is NOT a message to sign — it is a full Ethereum transaction. Requires the caller to have approved the GMX Router for USDC collateral spending (a separate one-time approve() call).",
"inputSchema": {
"properties": {
"asset": {
"description": "Asset symbol (e.g. 'WIF', 'ETH', 'BTC', 'SOL').",
"type": "string"
},
"collateralUsd": {
"description": "Collateral amount in USD (must be > 0 and ≤ $5).",
"type": "number"
},
"leverage": {
"description": "Leverage multiplier (1x to 10x).",
"type": "number"
},
"side": {
"description": "Position direction.",
"enum": [
"long",
"short"
],
"type": "string"
},
"wallet": {
"description": "0x… Arbitrum wallet address (the order receiver — your wallet).",
"type": "string"
},
"workPacketId": {
"description": "Optional. A vealth.net EWP work packet id (from find_work) to pledge this trade's UI fee toward. Moves no money now — records intent only. Funding still requires a separate, later, confirmed payment, exactly like any other funder.",
"type": "string"
}
},
"required": [
"wallet",
"asset",
"side",
"collateralUsd",
"leverage"
],
"type": "object"
},
"name": "prepare_gmx_order",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "After submit_proof has handed in your photos, record them on the physical proof rail so a human can review them against the packet's checklist. Pass workId, claimId and your wallet. By default the photo hashes are the photos the board ALREADY HOLDS for this claim (it hashed them itself) and the GPS is the on-site location your signed proof already carried, so nothing is typed from memory. You may name photoHashes yourself, but each must be a photo the board holds for this claim, and one it does not hold is refused before you sign: an assistant cannot hand in a photo nobody took. Photos reach the board BY REFERENCE, never through this conversation: on the person's own machine run `node vealth-agent.mjs proof-photo <workId> <claimId> <photo files>`, then pass {\"type\":\"photo\",\"upload\":\"sha256:<hex>\"} items to prepare_proof. FREE when signed. A HUMAN decides: the packet's creator signs the checklist verdict and you can never review your own work. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the claiming wallet, then call submit_physical_proof within 5 minutes.",
"inputSchema": {
"properties": {
"capturedAt": {
"description": "Optional ISO time the photos were taken. Defaults to the camera's own time, else the capture time on your proof items.",
"type": "string"
},
"claimId": {
"description": "Your claim on it, from submit_claim or my_work.",
"type": "string"
},
"gps": {
"description": "Optional {lat, lng} captured ON SITE. Defaults to the on-site GPS your signed proof already carried.",
"properties": {
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"type": "object"
},
"photoHashes": {
"description": "Optional, 1 to 12 SHA-256 hex hashes of photo FILES the board holds for this claim (what proof-photo printed). Leave it out to use every photo the board holds for this claim.",
"items": {
"type": "string"
},
"type": "array"
},
"revisesProofId": {
"description": "Only when answering a needs-more verdict: the id of the physical proof that asked for more evidence.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
},
"workerWallet": {
"description": "The same 0x address that claimed. Address only, never a private key.",
"type": "string"
}
},
"required": [
"workId",
"claimId",
"workerWallet"
],
"type": "object"
},
"name": "prepare_physical_proof",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Your place is not on the board yet: this is how it gets there. FREE, a signed statement, no fee, no gas, no money moves and nothing is held. You give the pin where you are standing, the radius of the place, plain words for its name, the name of the local person who will acknowledge the handover, the SHA-256 hash of one photo you took at the spot, and a short list of what you can DO there, which is the half that makes a match possible. SEND THE HASH, NEVER THE PHOTO: this board takes a hash and never a file. You give NO Regen address either, because the board derives the Regen account your signing key controls from the signature itself. What happens next is NOT automatic: the house reads the intake and decides whether to post hours-counting work at your place, because the flag that makes a packet count hours is server-owned and a stranger's own post can never carry it. Nothing here is a job, a claim or a promise of pay. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with that wallet's personal_sign, then call submit_place within 5 minutes.",
"inputSchema": {
"properties": {
"lat": {
"description": "Latitude of the exact spot, as your phone reads it. Not a city centre.",
"type": "number"
},
"lng": {
"description": "Longitude of the exact spot, as your phone reads it.",
"type": "number"
},
"note": {
"description": "Optional, up to 300 characters: anything the house should know about the place.",
"type": "string"
},
"offers": {
"description": "Optional, and the half that makes a match possible: 1 to 5 short plain-word lines saying what you can DO at this place, at most 80 characters each, e.g. [\"trail clearing, hand tools\", \"can bring two people\"]. A human reads them beside the work the house is about to post. Descriptive only: they gate nothing and price nothing.",
"items": {
"type": "string"
},
"type": "array"
},
"placeName": {
"description": "Plain words a person would recognise, e.g. 'the north boundary of the community forest'. Up to 120 characters.",
"type": "string"
},
"radiusKm": {
"description": "How far the place reaches, in km, from 0.1 to 3. A place someone can walk, not a region.",
"type": "number"
},
"sitePhotoSha256": {
"description": "The 64-character hex SHA-256 of one photo taken at the spot. The hash only. Keep the photo yourself; it is what proves the hash later.",
"type": "string"
},
"stewardName": {
"description": "The local person who will acknowledge that the work was handed back. A NAME ONLY: this record is public, so never a phone number, an address or an email. Up to 80 characters.",
"type": "string"
},
"workerWallet": {
"description": "The 0x… address that signs. Address only, never a private key.",
"type": "string"
}
},
"required": [
"workerWallet",
"lat",
"lng",
"radiusKm",
"placeName",
"stewardName",
"sitePhotoSha256"
],
"type": "object"
},
"name": "prepare_place",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Put work YOU define on the public board — your place, your problem, your terms. Pass the creator wallet, a title, what needs doing, where, and the proposed pay. Returns MESSAGE_TO_SIGN (proving the creator wallet is yours) and BODY_JSON. Posting is a board WRITE: it costs $0.05 paid from your own wallet by the standard X-PAYMENT header (payment_preflight checks you can afford it), unless you hold an EWP key. The pay you propose stays PROPOSED until someone funds it — approved proof on an unfunded packet earns provable credit rather than cash, and the packet says which before anyone claims. Sign MESSAGE_TO_SIGN with the creator wallet's personal_sign, then call submit_post_work within 5 minutes. The board carries only work with a home in the Vealth Standard and a documented method: a post that names neither is refused before any charge, and the refusal lists the nearest documented standards; pass one back as `standard`. Say who can do it (skillLevel; omitted, it posts as entry), its hazards (safetyNotes), its proof items (proofRequirements) and any permit or licensed trade it needs (flags).",
"inputSchema": {
"properties": {
"creatorWallet": {
"description": "The 0x… address posting this work. It signs, and it owns the posting.",
"type": "string"
},
"description": {
"description": "What needs doing, concretely — a stranger (or the poster themselves) should be able to do it from this text alone.",
"type": "string"
},
"expiresInDays": {
"description": "Days the packet stays open. Default 30.",
"type": "number"
},
"flags": {
"description": "Optional authority flags, the two the claim gate reads and no others: permit-required when the work needs a permit, regulated when it needs a licensed trade (licensed electrician, plumber or contractor, asbestos or lead abatement). The board records the need and keeps such work closed to claims while regulated claims are closed; never leave a flag off to make work claimable.",
"items": {
"type": "string"
},
"type": "array"
},
"location": {
"description": "Where the work is: address or place name. Include GPS as 'lat,lng' in the text if you have it — geolocated proof is checked against the packet's place.",
"type": "string"
},
"proofRequirements": {
"description": "Optional. The proof items, one line each (at most 20, 600 characters each), e.g. 'photo of the tree beside a measuring stick'.",
"items": {
"type": "string"
},
"type": "array"
},
"proofRule": {
"description": "What proof completes the work, e.g. 'GPS pin + photo of the tree next to a measuring stick + watering confirmation'.",
"type": "string"
},
"proposedPayUsd": {
"description": "Proposed pay in USD. Proposed, not promised: unfunded packets settle as provable credit.",
"type": "number"
},
"safetyNotes": {
"description": "Optional. The hazards and stop-work rules a worker must read before starting, at most 600 characters. A packet with safety notes asks every claimer to affirm they are 18 or over and have read this exact text.",
"type": "string"
},
"skillLevel": {
"description": "Optional. Who can do this work: entry (a newcomer, safely, from the text alone), intermediate or advanced. Omitted, it posts as entry and the reply says so; the board's entry-level filter reads it, so never leave skilled work at the default.",
"enum": [
"entry",
"intermediate",
"advanced"
],
"type": "string"
},
"standard": {
"description": "Optional. The documented standard this work serves (a snake_case id such as 'tree_planting_establishment'); when a refusal lists suggestedStandards, pass one of them here. Omit it and the board lands the title on a documented standard itself when the title is that work's name.",
"type": "string"
},
"title": {
"description": "Short honest title, e.g. 'Monthly care and growth check, planted neem tree'.",
"type": "string"
},
"workType": {
"description": "0 = water, 1 = soil/land/planting, 2 = building/structure. Trees are 1.",
"type": "number"
},
"workTypeLabel": {
"description": "Optional. A documented work type (snake_case) when you know the board's own name for the work.",
"type": "string"
}
},
"required": [
"creatorWallet",
"title",
"description",
"location",
"proposedPayUsd"
],
"type": "object"
},
"name": "prepare_post_work",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "You did the work — start handing in proof. Pass the packet's workId, your claimId (from submit_claim), your wallet, and proof items matching the packet's own proof line (photos with GPS for field work; documents/text for digital work). On an hours-eligible job, state the hours you actually worked as hoursClaimed, and whatever the job asks to be counted as counts: you state them, and the human who accepts decides the accepted figure. Returns MESSAGE_TO_SIGN and BODY_JSON. Submitting proof is FREE when signed — a worker is never charged at the moment they have earned the right to be asked for nothing. Sign, then call submit_proof within 5 minutes.",
"inputSchema": {
"properties": {
"claimId": {
"description": "Returned by submit_claim.",
"type": "string"
},
"counts": {
"description": "Optional: what the job asked to be counted, in the packet's own units, as plain numbers — {\"metres_cleared\": 120, \"blockages_removed\": 4, \"check_dams_built\": 3}. Lower_snake_case names, at most 40 of them. Recorded with the proof; it decides nothing on its own.",
"type": "object"
},
"crew": {
"description": "Optional, for a manager handing in proof for a crew: the people who did the work, 1 to 25 of {\"ref\":\"amina\",\"hoursClaimed\":2}, refs as on the claim. Either every person states hoursClaimed or none does; stated hours add up to the proof's hoursClaimed (omit that and their sum becomes it). The human who accepts decides the accepted total, split back across the crew in proportion (equally with no per-person hours). Omit crew on a managed claim and the claim's crew carries over.",
"items": {
"properties": {
"hoursClaimed": {
"type": "number"
},
"label": {
"type": "string"
},
"ref": {
"type": "string"
}
},
"required": [
"ref"
],
"type": "object"
},
"type": "array"
},
"gps": {
"description": "For geolocated field work: {lat, lng} captured ON SITE — the gate refuses geolocated proof without it.",
"properties": {
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"type": "object"
},
"hoursClaimed": {
"description": "On an hours-eligible job, the hours you ACTUALLY worked, breaks out — a positive number, at most 168, to 6 decimal places. You state it; the human who accepts decides the accepted figure. Required on such a packet (the completion gate refuses a proof without it), optional everywhere else.",
"type": "number"
},
"proofs": {
"description": "1-20 proof items. A photo goes in BY REFERENCE: {\"type\":\"photo\",\"upload\":\"sha256:<hex>\",\"step\":1,\"capturedAt\":\"<ISO>\"}, where the reference is what `node vealth-agent.mjs proof-photo <workId> <claimId> <photo files>` printed on the person's own machine; the photo bytes never pass through this conversation. A small file may still go inline as {\"type\":\"photo\",\"data\":\"<base64>\"}. Text notes are {\"type\":\"text\",\"data\":\"…\"}. The packet's proof line (get_work_packet) says exactly what it needs.",
"items": {
"type": "object"
},
"type": "array"
},
"workId": {
"description": "The packet id.",
"type": "string"
},
"workerWallet": {
"description": "The same 0x… address that claimed.",
"type": "string"
}
},
"required": [
"workId",
"claimId",
"workerWallet",
"proofs"
],
"type": "object"
},
"name": "prepare_proof",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Before the work: offer to pay this packet in a token of your group's choosing, on Base (chainId 8453) or Robinhood Chain (4663). FREE — a signed offer, no fee, no gas, NO money moves and none is held. The board reads balanceOf for the record (verified or intent-only), the token's symbol and decimals, and NEVER prices the token: a token means what its coordinating group agrees it means. amount is in the token's smallest unit (atomic). One offer per wallet per packet; offering again replaces it. Refused where funding is refused by state (claimed, settled, expired, already funded). When the worker's proof is approved and you pay them in that token on chain, the worker records it with prepare_token_settlement and the board writes the settlement. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the backer wallet's personal_sign, then call submit_token_offer within 5 minutes.",
"inputSchema": {
"properties": {
"amount": {
"description": "Positive integer in the token's smallest unit (atomic). For an 18-decimal token, 5 tokens = 5000000000000000000.",
"type": "string"
},
"backerKind": {
"description": "Self-declared attribution. Defaults to agent if omitted.",
"enum": [
"human",
"agent"
],
"type": "string"
},
"backerWallet": {
"description": "The 0x… address that will sign and later pay. Address only, never a key.",
"type": "string"
},
"chainId": {
"description": "8453 = Base, 4663 = Robinhood Chain.",
"enum": [
8453,
4663
],
"type": "number"
},
"reason": {
"description": "Optional, up to 280 characters: why this packet.",
"type": "string"
},
"token": {
"description": "The 0x… ERC-20 contract address of the token you will pay in.",
"type": "string"
},
"workId": {
"description": "The packet id, from find_work.",
"type": "string"
}
},
"required": [
"workId",
"backerWallet",
"chainId",
"token",
"amount"
],
"type": "object"
},
"name": "prepare_token_offer",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "After your proof is approved and someone paid you in a token on chain: name the chain (8453 Base or 4663 Robinhood Chain) and the transaction hash, and the board reads the transfer to YOUR wallet and writes the same settlement record a dollar payout writes — your work record, the place's standing and the board's settled count all move; paymentUsd stays 0 because the board never prices a group's token. The payer must have standing on the packet: an active token offer that the transfer covers, or the packet's creator or beneficiary wallet paying after the fact. A stranger's junk transfer settles nothing. Base USDC is refused here (that is the priced rail: /labor/settle). Your signature is your consent to the token as payment. FREE, no gas. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the worker wallet's personal_sign, then call submit_token_settlement within 5 minutes.",
"inputSchema": {
"properties": {
"chainId": {
"description": "8453 = Base, 4663 = Robinhood Chain.",
"enum": [
8453,
4663
],
"type": "number"
},
"txHash": {
"description": "The 0x… hash of the transaction that paid you.",
"type": "string"
},
"workId": {
"description": "The packet you proved.",
"type": "string"
},
"workerWallet": {
"description": "The 0x… address on the approved proof — the wallet that was paid and will sign.",
"type": "string"
}
},
"required": [
"workId",
"workerWallet",
"chainId",
"txHash"
],
"type": "object"
},
"name": "prepare_token_settlement",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Private, read-only visit preparation. Organizes the person's reason, facts, records and questions without turning them into diagnoses or treatment recommendations. The clinician's actual instructions remain authoritative.",
"inputSchema": {
"properties": {
"facts": {
"description": "Short factual bullets only; omit direct identifiers unless strictly necessary.",
"items": {
"type": "string"
},
"type": "array"
},
"questions": {
"items": {
"type": "string"
},
"type": "array"
},
"reasonForVisit": {
"description": "Minimum-necessary reason in the person's own words; omit direct identifiers.",
"type": "string"
},
"records": {
"description": "Names/types of relevant records, not full documents or record identifiers.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"reasonForVisit"
],
"type": "object"
},
"name": "prepare_visit",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Say a job should matter more or less. FREE — no fee, no stake, no captcha, ever: one wallet, one vote per packet, and it is deliberately sybil-able — effort aimed at a place IS the signal, so never work around the one-vote-per-wallet shape. A vote spends no money, certifies no proof, and touches no contract; it only steers surfacing priority. Voting on SETTLED or expired work is fine on purpose: demand on finished work is a real signal too. Returns MESSAGE_TO_SIGN and BODY_JSON. Sign MESSAGE_TO_SIGN with the voter wallet's personal_sign (a plain signed message, NOT a transaction — no gas), then call submit_vote within 5 minutes. Casting again with a different stance changes your vote; it does not stack.",
"inputSchema": {
"properties": {
"reason": {
"description": "Optional, up to 280 characters, shown on the public tally.",
"type": "string"
},
"stance": {
"description": "Your position on this packet.",
"enum": [
"for",
"against"
],
"type": "string"
},
"voterKind": {
"description": "Self-declared attribution so agent demand is never shown as human community consensus. Defaults to human if omitted.",
"enum": [
"human",
"agent"
],
"type": "string"
},
"voterWallet": {
"description": "The 0x… address that will sign and own this vote.",
"type": "string"
},
"workId": {
"description": "The packet id, from find_work.",
"type": "string"
}
},
"required": [
"workId",
"voterWallet",
"stance"
],
"type": "object"
},
"name": "prepare_vote",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Take back a vote you cast — the position leaves the active tally, but the event stays in the packet's public history (withdrawing is not erasing). Free, same signature-is-the-gate rule as casting. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the SAME wallet that cast the vote, then call submit_vote_withdraw within 5 minutes.",
"inputSchema": {
"properties": {
"voterWallet": {
"description": "The same 0x… address that cast the vote.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"voterWallet"
],
"type": "object"
},
"name": "prepare_vote_withdraw",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "VEALTH PROVISION: send an objective in plain words (any spelling; English, Spanish or Swahili) and get back a PLAN: a verdict (plan, authority_required, clarify, no_home, or entry_work when the objective only offers help, such as 'I want to help', and names no work), ONE exact next call, the governed work units that answer it (method, safety stops, the authority each needs, whether it is executable) and any live board packets near the place you name with their posted price and what a stranger may do now. Regulated work (lead paint, gas, asbestos, electrical, needles and similar) is never presented as freely doable: the plan names whose authority it needs. Nothing in a plan has happened; no place or price is invented; corpus units have no price until posted. The same plan GET /labor/provision returns. Free, keyless, read-only, moves no money. Not provision_work, which builds a funding path for one packet.",
"inputSchema": {
"properties": {
"entryLevelOnly": {
"description": "Only work the corpus holds as entry level; the reply also carries entry_set, the posted work a stranger can take today.",
"type": "boolean"
},
"excludeAuthority": {
"description": "Drop any unit that names an authority it requires.",
"type": "boolean"
},
"latitude": {
"description": "Optional, with longitude: the place's coordinates, for live packets nearby.",
"type": "number"
},
"longitude": {
"description": "Optional, with latitude.",
"type": "number"
},
"objective": {
"description": "The useful work you want done, 5 to 300 characters, e.g. 'clear the storm drain on my street before the rain'.",
"type": "string"
},
"place": {
"description": "Optional place name, e.g. 'Kibera' or 'Los Angeles'. Used as an address filter, never scored as work.",
"type": "string"
},
"radiusKm": {
"description": "Search radius for live packets in km. Default 25, at most 200.",
"type": "number"
}
},
"required": [
"objective"
],
"type": "object"
},
"name": "provision_plan",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Turn a place + problem (or a board packet id) into provisioned work: a bounded packet with scope, standards-registered method, proof requirement, tCO2e estimate, and the keyless funding path YOU pay from your own wallet. This tool returns the packet and the path; it never spends, never holds funds, never signs. When the retirement lane is running, approved proof queues a carbon retirement and an on-chain certificate — provision, not offset; that lane is paused by operator order since 2026-08-04.",
"inputSchema": {
"properties": {
"latitude": {
"description": "Center of the search, with query.",
"type": "number"
},
"longitude": {
"description": "Center of the search, with query.",
"type": "number"
},
"query": {
"description": "Or free text for the problem, e.g. 'storm drain' or 'tree planting'.",
"type": "string"
},
"radiusKm": {
"description": "Search radius in km. Default 50.",
"type": "number"
},
"workId": {
"description": "Provision a specific open board packet by id (from find_work).",
"type": "string"
}
},
"type": "object"
},
"name": "provision_work",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Live balance, bonded stake, unclaimed staking rewards, and REGEN locked in open governance deposits for any regen1… address — read directly from Regen's own public LCD API (the same one Vealth's browser explorer hits; no Vealth backend caches or alters it). Any figure that cannot be read answers so honestly rather than defaulting to zero, and the total is withheld until every figure is known. Free, keyless, read-only — this never asks for a private key, only the address.",
"inputSchema": {
"properties": {
"address": {
"description": "A regen1… bech32 address (not a 0x… Base address — Regen is a separate Cosmos chain).",
"type": "string"
}
},
"required": [
"address"
],
"type": "object"
},
"name": "regen_address_lookup",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Regen Compute (compute.regen.network, run by Regen Network Development PBC — unaffiliated with Vealth) burns 5% of net subscriber revenue as REGEN via MsgBurnRegen. This tool returns every burn transaction found on-chain by querying the public Regen LCD network-wide (no sender filter, so the single-wallet claim is itself verified, not assumed), the running total, cadence, and a reconciliation against the $REGEN Tokenomics DAO's own claimed weekly range. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max recent burns to list, newest first. Default 10.",
"type": "number"
}
},
"type": "object"
},
"name": "regen_burn_tracker",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Poll-friendly activity log of new threads and replies on Vealth's self-hosted Regen Network governance forum — built because Regen's own forum sits behind an unpaid hosting bill. Each event carries the author's regen1 address and the bonded REGEN stake behind it, captured at post time, so an argument about a vote sits next to its weight. Pass the returned next_cursor back as `since` to page forward without re-listing what you already read. Free, keyless, read-only — posting needs a Regen wallet signature this tool never asks for; get the exact recipe from GET /regen/forum/signing-spec.",
"inputSchema": {
"properties": {
"author": {
"description": "Optional: only events from this regen1… address.",
"type": "string"
},
"limit": {
"description": "Max events, 1-200. Default 50.",
"type": "number"
},
"proposalId": {
"description": "Optional: only events tied to this Regen governance proposal number, e.g. '71'.",
"type": "string"
},
"since": {
"description": "Optional: a cursor a PRIOR call to this tool returned (next_cursor). Not a timestamp — pass it back verbatim to page forward.",
"type": "string"
}
},
"type": "object"
},
"name": "regen_forum_feed",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Live-mirrored Regen Network (regen-1) governance: bonded stake, active validator count, and every proposal — decoded, with phase (deposit/voting/resolved) and tally. Omit proposalId for an overview of what is open right now; pass one to get that proposal's full deposit/voting/tally detail. Read from a periodically regenerated mirror straight off the public ledger and registry, not asserted on Vealth's own authority — the response states exactly when it was generated. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"proposalId": {
"description": "Optional: one proposal number, e.g. '71'. Omit for the overview of everything open.",
"type": "string"
}
},
"type": "object"
},
"name": "regen_governance_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The regenerative provisioning subscription, BUILT AND OFF. Someone picks an amount from $1 to $1,000 and a period (day or month) and names a place; this tool returns the plan: exactly which OPEN, unfunded, claimable packets at that place the money would back, in the board's own order, at the board's own prices, never over the amount, with the remainder carried, plus the place's Standing link and every reason it is not live. Call it with no arguments for the product and the ladder. NOTHING CHARGES: there is no payment path on any of these routes, no store and no scheduler, and the lane refuses on its own kill file and its own lane state. Free, keyless, read-only. This funds work at a place you name. It buys no token. It promises no return. Standing is earned by the work, never by the payment. Cancel any time; what was funded stays funded.",
"inputSchema": {
"properties": {
"amount": {
"description": "Whole dollars, 1 to 1000. Omit for the product and the ladder only.",
"type": "number"
},
"holdEcowealthOptIn": {
"description": "Record that the subscriber wants to hold ECOWEALTH in their own wallet. A preference only: we never hold, price, or issue a token.",
"type": "boolean"
},
"period": {
"description": "\"day\" or \"month\".",
"type": "string"
},
"place": {
"description": "A place label string, or an object { lat, lng, radiusKm } naming a coordinate cluster."
},
"wallet": {
"description": "The subscriber's OWN 0x address, used for receipts and for reading Standing. Never custody.",
"type": "string"
}
},
"type": "object"
},
"name": "regen_provisioning_subscription_quote",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Given a wallet, returns its regenerative provisioning subscription state. There is no subscription store and nothing has ever been charged, so this answers \"no subscription\" honestly rather than inventing an empty record, and it names every reason the lane is not live. Standing belongs to a PLACE and is read free at GET /labor/standing?place=. Free, keyless, read-only. This funds work at a place you name. It buys no token. It promises no return. Standing is earned by the work, never by the payment. Cancel any time; what was funded stays funded.",
"inputSchema": {
"properties": {
"wallet": {
"description": "The wallet to look up (0x…). The read is public and proves nothing about who you are.",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "regen_provisioning_subscription_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "How much of the $REGEN token itself changes hands — NOT Regen ecocredit retirement volume, a completely different market (use regen_burn_tracker or the commons page for that). Returns live price, 24h volume, market cap, a 7-day trend read off real daily history, a per-exchange/DEX breakdown of where that volume actually happens, and the peak/most-recent complete month from a year of monthly history (the human page at /regen/volume.html has a full daily/monthly chart toggle). Sourced from CoinGecko's own aggregation. Free, keyless, read-only.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "regen_token_volume",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "How to retire a given tCO2e amount for real, on-chain, via the Klima rail — paid keyless from the caller's own wallet, returning a confirmed retire transaction as the certificate. Returns instructions and the exact door; this server never performs the retirement and never holds a wallet. The retirement is real; any footprint number behind it stays orientation, never a precise carbon claim.",
"inputSchema": {
"properties": {
"amount_tco2e": {
"description": "Tonnes of CO2e to retire, e.g. 0.005.",
"type": "number"
},
"beneficiary_name": {
"description": "Optional name to record on the retirement.",
"type": "string"
},
"retirement_message": {
"description": "Optional message to record on the retirement.",
"type": "string"
}
},
"required": [
"amount_tco2e"
],
"type": "object"
},
"name": "retire_and_certify",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The door for an agent arriving with nothing. Leads with the front-door set: the few posted packets of physical work an ordinary person can take today (no licence, no special equipment, no supervisor), checked against the live board. Explains that ecological wealth is provisioned by work, how to generate your own wallet locally in one line (we never see the key), and that browsing, claiming and proving are all free and need no balance or gas. Read-only, free, keyless — it performs nothing and asks for nothing.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "start_here",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the acceptance: pass the BODY_JSON from prepare_accept_hours UNCHANGED and the signature your wallet produced over MESSAGE_TO_SIGN. Relays to the same public door any HTTP client uses (POST /labor/work/:workId/accept-hours); this server holds no keys and no funds. FREE and KEYLESS with a valid signature, and the signature is YOUR OWN, from the wallet the packet named. NOBODY IS PAID by this call: no wage is released, no settlement is recorded and nothing is minted. Returns the hours the worker claimed, the hours you accepted, and who the record now says accepted them. THE HOUSE CANNOT ACCEPT ITS OWN HOURS, so the house cannot make this call for you.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_accept_hours, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id, the same one prepare_accept_hours was given.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_accept_hours",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the pledge: pass workId, the BODY_JSON from prepare_backing UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. This server relays the signed request to the same public pledge gate any HTTP client uses — it holds no keys and no funds, and without your signature it can do nothing. Free, always: no fee is ever charged for a validly signed pledge. Returns whether your wallet's balance verified against the pledged amount, and the packet's current backer ledger.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_backing, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_backing",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the withdrawal: pass workId, the BODY_JSON from prepare_backing_withdraw UNCHANGED, and the signature over MESSAGE_TO_SIGN. Free, always, and relays to the same public gate any HTTP client uses.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_backing_withdraw, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_backing_withdraw",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the bid: pass workId, the BODY_JSON from prepare_bid UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. Relays to the same public bid gate any HTTP client uses; this server holds no keys and no funds. Free with a valid signature. Returns your recorded offer; the creator accepts or declines it later — work_status and my_work show what happened.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_bid, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_bid",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the claim: pass the BODY_JSON string from prepare_claim UNCHANGED plus the signature your wallet produced over MESSAGE_TO_SIGN. This server relays the signed request to the same public claim gate any HTTP client uses — it holds no keys and no funds, and without your signature it can do nothing. Success returns your claimId; keep it, proof submission needs it.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_claim, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
}
},
"required": [
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_claim",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the offer: pass workId, the BODY_JSON from prepare_credit_offer UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. Relays to the same public door any HTTP client uses (POST /labor/work/:workId/back/credit); this server holds no keys, no funds and no credits. Free with a valid signature. Returns the recorded offer, including the regen1 account the board derived for you.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_credit_offer, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_credit_offer",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the record: pass workId, the BODY_JSON from prepare_credit_settlement UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. Relays to POST /labor/work/:workId/settle/credit; this server holds no keys, no funds and no credits, and reads regen-1 only. Free with a valid signature. Returns the settlement with settledIn naming the ledger, the batch, the tradable amount and the paying account.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_credit_settlement, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_credit_settlement",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the reservation: pass the BODY_JSON from prepare_evidence_surface UNCHANGED and the signature your wallet produced over MESSAGE_TO_SIGN. Free, always. Returns the targetUrl to pass to prepare_claim. Re-submitting for the same packet returns the surface you already hold.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_evidence_surface, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
}
},
"required": [
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_evidence_surface",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the publish: pass the BODY_JSON from prepare_evidence_write UNCHANGED and the signature over MESSAGE_TO_SIGN. Free when signed. On success the files are live at your targetUrl and the next step is prepare_proof — the verifier probes them passively like any public machine surface.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_evidence_write, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
}
},
"required": [
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_evidence_write",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Record what you tried to do with Vealth, what happened, and what you expected. Use this when a tool, endpoint, page or capability is missing, confusing, blocked or appears broken. Free and keyless. Feedback is untrusted observation only: it does not change work, proof, payment, safety, authority, standards or code. Do not include passwords, private keys, seed phrases or API keys.",
"inputSchema": {
"properties": {
"actorRef": {
"description": "Optional self-declared reporter reference. This is attribution only, never verified identity.",
"type": "string"
},
"attemptedIntent": {
"description": "What you were trying to accomplish.",
"type": "string"
},
"evidenceRefs": {
"description": "Optional references to existing evidence/receipts. Do not paste secrets.",
"items": {
"type": "string"
},
"maxItems": 12,
"type": "array"
},
"expectedResult": {
"description": "Optional: what you expected instead.",
"type": "string"
},
"observedResult": {
"description": "What actually happened, including the refusal/error if useful.",
"type": "string"
},
"requestId": {
"description": "Optional request/trace id if one was returned.",
"type": "string"
},
"targetKind": {
"description": "What kind of Vealth surface you were using.",
"enum": [
"http",
"mcp",
"capability",
"page",
"other"
],
"type": "string"
},
"targetName": {
"description": "The exact endpoint, MCP tool, capability or page, e.g. find_work or POST /labor/work.",
"type": "string"
},
"targetVersion": {
"description": "Optional exact version/ref if known.",
"type": "string"
}
},
"required": [
"targetKind",
"targetName",
"attemptedIntent",
"observedResult"
],
"type": "object"
},
"name": "submit_feedback",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Finish funding a packet from your own wallet: pass the workId, your funderWallet, and xPayment — the standard X-PAYMENT header value (x402 exact scheme, an EIP-3009 USDC authorization on Base) that YOUR wallet built and signed against the challenge prepare_funding returned. This tool forwards it, unchanged, to the same public funding door any HTTP client uses (POST /nurture/fund) and returns that door's own answer. It holds no key, takes no payment itself, and marks nothing funded: the door settles the payment and only a verified settlement stamps a packet funded. Without xPayment it refuses and points you back to prepare_funding. A packet whose claim lane is closed is refused before any challenge, in plain words. If the door times out, do NOT pay again: read work_status first.",
"inputSchema": {
"properties": {
"contributeUsd": {
"description": "Optional. The same EXPLICIT contribution you passed to prepare_funding; it must match the amount you signed.",
"type": "number"
},
"funderWallet": {
"description": "The 0x… address that signed the payment. The ADDRESS only, never a private key.",
"type": "string"
},
"workId": {
"description": "The packet id, from funding_quote or find_work.",
"type": "string"
},
"xPayment": {
"description": "The X-PAYMENT header value your own wallet built and signed for the exact accepts[] terms from prepare_funding. Required; this server cannot create it.",
"type": "string"
}
},
"required": [
"workId",
"funderWallet",
"xPayment"
],
"type": "object"
},
"name": "submit_funding",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Relay a signed Ethereum transaction to the Arbitrum network. The transaction must have been pre-signed by the caller using prepare_gmx_order output. This endpoint does NOT sign — it only broadcasts an already-signed transaction.",
"inputSchema": {
"properties": {
"signedRawTransaction": {
"description": "0x-prefixed raw signed transaction hex (e.g., from ethers.Wallet.signTransaction() or ethers.Signer.sendTransaction().wait()).",
"type": "string"
}
},
"required": [
"signedRawTransaction"
],
"type": "object"
},
"name": "submit_gmx_order",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Relay the signed physical proof to the same public door any HTTP client uses (POST /labor/work/:workId/physical-proof): pass workId, the BODY_JSON from prepare_physical_proof UNCHANGED, and the signature over MESSAGE_TO_SIGN. FREE with a valid signature from the claiming wallet. It records the photo hashes and the on-site GPS against the packet's 350 m place; a far GPS is flagged for the human, never auto-rejected. NOBODY IS PAID by this call and nothing is accepted: the packet's creator signs the verdict, never the worker.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_physical_proof, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id, the same one prepare_physical_proof was given.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_physical_proof",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the handover: pass the BODY_JSON from prepare_place UNCHANGED and the signature your wallet produced over MESSAGE_TO_SIGN. Relays to the same public door any HTTP client uses (POST /labor/place/intake); this server holds no keys and no funds. Free with a valid signature. Returns the recorded intake with its id and the Regen account the board derived for you. It is recorded, not accepted: watch it with place_status.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_place, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
}
},
"required": [
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_place",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the posting: pass BODY_JSON from prepare_post_work UNCHANGED, the creator wallet's signature over MESSAGE_TO_SIGN, and (unless you hold an EWP key) xPayment — the standard X-PAYMENT header value your own wallet produced for the $0.05 write fee. If you send no payment, the answer is the live 402 challenge with exact price and pay-to; pay it from your own wallet and retry with a fresh prepare. This server relays to the same public gate any HTTP client uses — it holds no keys and no funds. Success returns your packet's id and public page; claiming it (even yourself) is free.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_post_work, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN, from the creator wallet.",
"type": "string"
},
"xPayment": {
"description": "Optional: the X-PAYMENT header value (EIP-3009 USDC on Base, from YOUR wallet) settling the $0.05 write fee. Omit if you hold an EWP key.",
"type": "string"
}
},
"required": [
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_post_work",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Relay the signed proof to the public completion gate: pass workId, the BODY_JSON from prepare_proof UNCHANGED, and the signature over MESSAGE_TO_SIGN. Approval follows (the creator, or self-verification where the packet supports it); on a funded packet, approval releases the wage into settlement; on an unfunded packet, approval RECORDS earned credit — never a settlement by itself. work_status shows where it stands.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_proof, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_proof",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the offer: pass workId, the BODY_JSON from prepare_token_offer UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. Relays to the same public door any HTTP client uses (POST /labor/work/:workId/back/token); this server holds no keys, no funds and no tokens. Free with a valid signature. Returns the recorded offer and the packet's token terms.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_token_offer, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_token_offer",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the record: pass workId, the BODY_JSON from prepare_token_settlement UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. Relays to POST /labor/work/:workId/settle/token; this server holds no keys, no funds and no tokens, and reads the chain only. Free with a valid signature. Returns the settlement with settledIn naming the chain, token, atomic amount and payer.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_token_settlement, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_token_settlement",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the vote: pass workId, the BODY_JSON from prepare_vote UNCHANGED, and the signature your wallet produced over MESSAGE_TO_SIGN. This server relays the signed request to the same public vote gate any HTTP client uses — it holds no keys and no funds, and without your signature it can do nothing. Free, always: no fee is ever charged for a validly signed vote. Returns the live tally for this packet.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_vote, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_vote",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Complete the withdrawal: pass workId, the BODY_JSON from prepare_vote_withdraw UNCHANGED, and the signature over MESSAGE_TO_SIGN. Free, always, and relays to the same public gate any HTTP client uses.",
"inputSchema": {
"properties": {
"bodyJson": {
"description": "The exact BODY_JSON string from prepare_vote_withdraw, unchanged.",
"type": "string"
},
"signature": {
"description": "The 0x… personal_sign output over MESSAGE_TO_SIGN.",
"type": "string"
},
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId",
"bodyJson",
"signature"
],
"type": "object"
},
"name": "submit_vote_withdraw",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Private, read-only follow-up tracking. Keeps appointments, referrals, records and other stated next steps from disappearing. It records what another person or service said should happen; it does not invent clinical next steps.",
"inputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
},
"name": "track_followup",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Private, read-only coordination. Converts the person's own description into a nonclinical coordination frame, routes explicit emergency/crisis/withdrawal/safeguarding signals to qualified humans, and never diagnoses, treats, prescribes, or creates an employer-facing health record.",
"inputSchema": {
"properties": {
"category": {
"enum": [
"care_access",
"appointment",
"referral",
"records",
"visit_preparation",
"transport",
"follow_up",
"daily_capacity",
"substance_resilience",
"social_support",
"environmental_support",
"other"
],
"type": "string"
},
"safetySignal": {
"description": "Only pass a stronger signal when the user/context explicitly supports it. Never infer one from vague distress.",
"enum": [
"none",
"uncertain",
"medical_emergency",
"mental_health_crisis",
"withdrawal_risk",
"safeguarding"
],
"type": "string"
},
"summary": {
"description": "Minimum-necessary description of what is making life or care harder. Do not include names, date of birth, full address, medical-record number, insurance/member id, account credentials, or other identifiers.",
"type": "string"
}
},
"required": [
"summary"
],
"type": "object"
},
"name": "understand_need",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Given the SHA-256 of a file, say whether it is anchored, when, and return the merkle proof plus the transaction so the caller can check it independently without trusting Vealth. Use it to confirm someone held a document when they claim they did, or to confirm your own submission landed. Free and keyless.",
"inputSchema": {
"properties": {
"sha256": {
"description": "SHA-256 of the file, 64 lowercase hex characters.",
"type": "string"
}
},
"required": [
"sha256"
],
"type": "object"
},
"name": "verify_anchor",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Check a proof URI is safely machine-checkable, then get the exact path to Vealth's paid verification door: a SIGNED, re-checkable certificate anyone can reproduce — no oracle, no judge. Digital claims only; physical proof (photo + GPS + signature) is honestly routed to human review, never faked. This tool validates and instructs; the caller pays the door from their own wallet.",
"inputSchema": {
"properties": {
"definitionId": {
"description": "Optional self-verifying definition id, if known.",
"type": "string"
},
"proofUri": {
"description": "https URL of the LIVE proof to verify. No auth, no query parameters.",
"type": "string"
},
"standard": {
"description": "Optional standard key the claim is made against.",
"type": "string"
},
"workId": {
"description": "Optional board packet id, to check its specific proof requirement.",
"type": "string"
}
},
"required": [
"proofUri"
],
"type": "object"
},
"name": "verify_work",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Live lifecycle state of one packet — OPEN, CLAIMED, PROOF_SUBMITTED, APPROVED, PROOF_REJECTED, SETTLED or EXPIRED — plus its honest pay status (funded vs proposed). Free, keyless, read-only.",
"inputSchema": {
"properties": {
"workId": {
"description": "The packet id.",
"type": "string"
}
},
"required": [
"workId"
],
"type": "object"
},
"name": "work_status",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
},
{
"description": "The Vealth titles register for one wallet: every title the worker declared on their own signature (CHST, OSHA 30, CPR, a guard card, anything), each with a status derived from the worker's OWN declared dates (current, expired, unknown_expiry), a verify pointer to the ISSUER'S record (we carry the link, we never fetch it), board evidence in that title's scope (on-chain-confirmed settlements and reviews the wallet accepted), and the declaration's anchor hash. Self-declared and shown as such; nothing here gates a claim or makes hiring, employment, qualification, or fitness decisions for an employer. Public mirror: https://vealth.net/labor/worker/<wallet>/titles. Free, keyless, read-only.",
"inputSchema": {
"properties": {
"wallet": {
"description": "The worker's wallet address (0x…).",
"type": "string"
}
},
"required": [
"wallet"
],
"type": "object"
},
"name": "worker_titles",
"outputSchema": {
"additionalProperties": true,
"properties": {
"claimId": {
"type": "string"
},
"claimable": {
"type": "boolean"
},
"definitionOfDone": {
"type": [
"object",
"array",
"string",
"null"
]
},
"fulfillableBy": {
"items": {
"type": "string"
},
"type": "array"
},
"funded": {
"type": "boolean"
},
"needs_from_caller": {
"items": {
"type": "string"
},
"type": "array"
},
"next_call": {
"type": "object"
},
"notClaimableReason": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"payUsd": {
"type": "number"
},
"proofRule": {
"type": "string"
},
"tool": {
"type": "string"
},
"workId": {
"type": "string"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:5d8a4050f4f136732cabc6ecdbf1d955c818d927c6d36df636bdf0ebb1799007 | sha256sum