DeXe DAO governance
NPM · DEXE-MCP
DeXe Protocol DAOs for AI agents: create DAOs, proposals, votes, OTC token sales, on-chain reads.
Available components
Last scanned (9 hours ago)
Scores higher than 85% of npm servers
Category Crypto and Web3
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 110 of 303 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to edward-arinin-web-dev/dexe-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 11 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 11171 tokens (~219/item across 51 items; 48 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
- Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (46% of tools); any adoption earns full credit.Pass
Tool Safety88
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 2 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "dexe_vote_build_withdraw" implies "withdraw" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +4
- Stability: unverified → 0.27 ▲ functional
- 14 Oct 26 +31
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 50 functional
- First check of Tool coverage: 46 functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- 13 Oct 26 0
- Package version: 0.37.0 → 0.37.1 functional
- 12 Oct 26 49
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Oct 2026 · Analysed npm/dexe-mcp@0.37.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | edward-arinin-web-dev/dexe-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/edward-arinin-web-dev/dexe-mcp/.github/workflows/release.yml@refs/tags/v0.37.1 |
| Rekor log index | 3244642919 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:a1ed3126bb7cae215da06342a443a1c1fcdceaa9db9e918887447d7d911afe5c5c40c6a10f377e9dc8382ef219d64ad443abfb6064da5c8babe4b29a0 |
Background: How many MCP packages publish verified provenance →
Dependencies 303 packages
| Packages resolved | 303 |
|---|---|
| Stale | 110 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
dexe_context Session context ~160
Read-only. Session orientation — configured chains and the default, env readiness (RPC/IPFS/subgraph/backend), which toolsets are on or hidden and what the hidden ones unlock, and the DAOs/proposals recorded in this install's local state. Pass `user` to add that wallet's deposited power in the newest recorded DAO. Not needed once the DAO and chain are known. Persisted DAOs/proposals are WINDOWED; the *Total fields carry real counts.
| Name | Type | Req | Description |
|---|---|---|---|
| daoLimit | integer | – | Recorded DAOs to return, newest first. |
| proposalLimit | integer | – | Recorded proposals to return, newest first. |
| user | string | – | Wallet address: adds its deposited voting power in the newest recorded DAO (one extra RPC call). |
No output schema declared.
No examples provided.
dexe_dao_create Deploy a new DAO ~1,089
Broadcasts when a signer is configured. Deploys a new DeXe DAO in ONE call. SIMPLE mode (recommended): pass `symbol` + `totalSupply` and the tool synthesizes a coherent, frontend-equivalent config (LINEAR power, treasury as an implicit remainder, a quorum that passes on realistic turnout). ADVANCED mode: pass a full `params` struct. Returns a `preview` of the resolved config + a safety proof and broadcasts only with `confirm: true`. Runs the frontend's governance coherence guards over ALL FIVE settings slots (default / internal / validators / distribution / tokenSale) — one un-passable slot bricks that whole proposal class forever — plus a calldata round-trip self-check and a pre-sign eth_call: a provable revert is refused with a classified cause + fix BEFORE any gas is spent, while an RPC outage only downgrades to a warning. Mainnet (56) always needs `confirm: true` (real BNB); validate on testnet (97) first. `deployer` defaults to the signer. Unsure of the journey or params? Call dexe_guide (flow:'create_dao').
| Name | Type | Req | Description |
|---|---|---|---|
| avatarCID | string | – | IPFS CID of an already-pinned JPEG avatar (dexe_ipfs_upload_avatar) |
| avatarFileName | string | – | File name stored alongside avatarCID. |
| avatarPath | string | – | Local avatar image path (JPEG/PNG/WebP/GIF ≤10 MB) — server validates + pins it. Preferred over avatarCID. |
| chainId | integer | – | Target chain id. Defaults to the MCP's default chain. Use 97 (BSC testnet) to validate; 56 = BSC mainnet (real funds). |
| confirm | boolean | – | True to actually broadcast; without it SIMPLE mode and any mainnet deploy return a review-only preview. Pass it on the FIRST call when the user has already approved the deploy. |
| confirmRisky | boolean | – | Proceed despite a governance-safety refusal. Read the returned `risks` to the user FIRST — such a config cannot be repaired after deploy, because repairing it needs a proposal passed under it. Ignore… |
| daoDescription | string | – | DAO description (markdown; uploaded to IPFS as slate) |
| daoName | string | yes | DAO name (also the deployGovPool pool name) |
| deployer | string | – | tx.origin that sends the deploy (needed for address prediction). Defaults to the signer address. |
| documents | array | – | External documents shown on the DAO profile, e.g. [{ name: "Whitepaper", url: "https://..." }] |
| dryRun | boolean | – | Preview: no broadcast, no IPFS pin, no Pinata key needed. CIDs are right but unpinned — do NOT broadcast this calldata. |
| durationSeconds | integer | – | SIMPLE mode: voting duration. Default 86400 (1 day). |
| earlyCompletion | boolean | – | SIMPLE mode: end voting as soon as the quorum is reached. Default true. |
| executionDelaySeconds | integer | – | SIMPLE mode: delay before execution. Default 0. |
| flowContext | object | – | Guided-flow position from dexe_guide's step templates. Adds flowProgress + next to the result and persists it. |
| minVotesTokens | string | – | SIMPLE mode: min tokens to vote AND create proposals, WHOLE tokens. Default '1'. Must be ≤ the largest holder's allocation. |
| params | object | – | ADVANCED mode: the full deployGovPool params struct. Prefer SIMPLE mode. Field-by-field schema: dexe_dao_build_deploy (needs DEXE_TOOLSETS=core,dev). |
| poolFactory | string | – | PoolFactory override; defaults to ContractsRegistry lookup |
| quorumPercent | number | – | SIMPLE mode: quorum, percent 0-100. Omit and the tool picks (default 51). Must be >=50 and clearable by at most 80% turnout — a quorum equal to the votable share freezes the DAO forever. |
| recipients | array | – | SIMPLE mode: split the votable share across wallets (default: deployer only). Percents are of TOTAL supply and must sum to 100 − treasuryPercent. |
| signerKey | string | – | Keyring signer: omit = primary key; 'agent<n>' or address = a DEXE_AGENT_PK_* key. |
| socialLinks | array | – | [[network, url], ...] |
| symbol | string | – | SIMPLE mode: gov token symbol (e.g. 'GENA'). Required when `params` is omitted. |
| totalSupply | string | – | SIMPLE mode: total token supply in WHOLE tokens (e.g. '1000000'). Required when `params` is omitted. |
| treasuryPercent | number | – | SIMPLE mode: treasury share, percent 0-100 (implicit remainder; it cannot vote). Omit and the tool picks one that leaves a real voting margin (default 30). |
| voteModel | string | – | SIMPLE mode: vote-power model. LINEAR = 1 token = 1 vote (default). POLYNOMIAL = meritocratic curve. |
| websiteUrl | string | – | DAO website URL shown on its profile. |
No output schema declared.
No examples provided.
dexe_dao_generate_avatar Generate a deterministic placeholder avatar for a DAO ~91
Writes to a remote service. Renders a real JPEG of the DAO's initials over a hash-coloured gradient and pins it, returning {avatarCID, avatarFileName, avatarUrl}. Deterministic.
| Name | Type | Req | Description |
|---|---|---|---|
| daoName | string | yes | DAO name; first 1–2 alphanumeric chars become the avatar initials. |
| size | integer | – | Output image size in px (square). |
| Name | Type | Req | Description |
|---|---|---|---|
| avatarCID | string | yes | – |
| avatarFileName | string | yes | – |
| avatarUrl | string | yes | – |
| pinnedAt | string | yes | – |
| size | number | yes | – |
No examples provided.
dexe_dao_info DAO overview — helpers, NFT contracts, validator count ~83
Read-only. One multicall on a GovPool: helper addresses, NFT contract addresses, description URL, and live validator count.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | GovPool contract address |
| Name | Type | Req | Description |
|---|---|---|---|
| descriptionURL | string|null | yes | – |
| govPool | string | yes | – |
| helpers | object | yes | – |
| nftContracts | object | yes | – |
| validatorsCount | string|null | yes | – |
No examples provided.
dexe_dao_predict_addresses Predict addresses for a future DAO deployment ~118
Read-only. Calls `PoolFactory.predictGovAddresses(deployer, poolName)` — the six CREATE2-predicted contract addresses for a DAO before it is deployed.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| deployer | string | yes | Address that will send the deployGovPool tx (tx.origin) |
| poolName | string | yes | Unique pool name — part of the CREATE2 salt |
| Name | Type | Req | Description |
|---|---|---|---|
| distributionProposal | string | yes | – |
| expertNft | string | yes | – |
| govPool | string | yes | – |
| govToken | string | yes | – |
| govTokenSale | string | yes | – |
| nftMultiplier | string | yes | – |
No examples provided.
dexe_dao_registry_lookup Check whether an address is a DeXe GovPool ~104
Read-only. Calls `PoolRegistry.isGovPool(address)` — true when the address is a registered DeXe DAO GovPool.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | Candidate GovPool address |
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | – | Alias for `address` — the name every other DAO tool uses |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | – |
| chainId | number | yes | – |
| isGovPool | boolean | yes | – |
| poolRegistry | string | yes | – |
No examples provided.
dexe_dao_report Full DAO report — one call, every section, with a since-diff ~410
Read-only. The whole picture of one DAO in one call — every section named by `sections` (default all), plus everything with a DEADLINE: open votes, executable proposals and, with `user`, unvoted proposals and claimable rewards. Pass `since` (ISO timestamp, Unix seconds, `block:<n>`, or `last`) for ONLY what changed; each run stores a snapshot so the next `since` diff has a baseline. Sections degrade independently; unavailable ones are NAMED in `unavailable[]` with the reason.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | GovPool / DAO address |
| memberLimit | integer | – | Member/delegation rows to fetch (newest joiners first). |
| persist | boolean | – | Store this run's snapshot so a later `since` diff has a baseline. Full runs only — a `sections`-narrowed run never overwrites it. |
| proposalLimit | integer | – | How many of the NEWEST proposals to walk for state, outcomes and turnout. |
| sections | array | – | Narrow the report. Default: all of identity, settings, treasury, membership, delegation, experts, validators, proposals, turnout, activity, deadlines. |
| since | string | – | Diff anchor: ISO-8601 ('2026-08-01T00:00:00Z'), Unix seconds ('1785000000' / 'unix:…'), a block number ('block:62000000'; a bare integer below 1e9 is read as a block), or 'last' to diff against this… |
| user | string | – | Optional wallet. Adds per-user deadline items: proposals in Voting this user has NOT voted on, and claimable rewards. |
| Name | Type | Req | Description |
|---|---|---|---|
| blockNumber | number|null | yes | – |
| chainId | number | yes | – |
| changes | – | yes | – |
| degraded | string|null | – | – |
| followUps | array | yes | – |
| generatedAt | string | yes | – |
| generatedAtUnix | number | yes | – |
| govPool | string | yes | – |
| sections | object | yes | – |
| since | – | yes | – |
| snapshotPersisted | boolean | yes | – |
| sources | object | yes | – |
| unavailable | array | yes | – |
No examples provided.
dexe_doctor Diagnose env setup ~136
Read-only. Diagnoses env setup — the cause and the fix of an env-related failure: presence + reachability checks (RPC, Pinata, IPFS gateway DNS, subgraph, backend) as pass/warn/fail with remediation hints. Warnings are advisories — a healthy zero-config install always has some. `probePin` is the one write: one tiny IPFS pin.
| Name | Type | Req | Description |
|---|---|---|---|
| _placeholder | boolean | – | Unused; tool takes no input. |
| probePin | boolean | – | Probe pin to Pinata (added, then removed) — use when an IPFS upload fails with HTTP 403. |
No output schema declared.
No examples provided.
dexe_get_config Resolved server config ~57
Read-only, local. The resolved read config: chain set and default chain, subgraph coverage per chain, the backend API and the IPFS read gateways.
| Name | Type | Req | Description |
|---|---|---|---|
| _placeholder | boolean | – | Unused; tool takes no input. |
No output schema declared.
No examples provided.
dexe_graph_query Free-form GraphQL query against a DeXe subgraph ~236
Read-only. GraphQL against a DeXe subgraph: 'pools' (DAOs, proposals, voters, delegations, experts, sales), 'interactions' (per-user tx feed), 'validators'. Bound every list with `first:` (max 1000), page with `skip:`; oversized responses are rejected. Entity and field names must match the subgraph schema exactly — root fields are not entity names (DaoPool -> `daoPools`), and a wrong name errors with where to look it up. `chainId` picks the endpoint (pools: 56, validators: 56, interactions: 56; default 56); the reply echoes `indexedChainId`, never another chain's rows.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| query | string | yes | GraphQL query document (read-only) |
| subgraph | string | yes | Which DeXe subgraph to query |
| variables | object | – | GraphQL variables referenced by the query |
No output schema declared.
No examples provided.
dexe_graph_schema Introspect a DeXe subgraph schema ~251
Read-only. Live introspection of a DeXe subgraph schema — the valid names for a GraphQL query, e.g. after "Type 'X' has no field 'Y'". Omit `entity` for the root query field map (each entity -> the field name to query it by); pass `entity` for that type's fields, '<Entity>_filter' for valid `where:` keys, '<Entity>_orderBy' for valid `orderBy:` values. An unknown name returns ranked candidates. `chainId` picks the endpoint (pools: 56, validators: 56, interactions: 56; default 56); the reply echoes `indexedChainId`, never another chain's rows.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| entity | string | – | Type name to expand, e.g. 'Proposal', 'VoterInPool', 'DaoPool_filter', 'Proposal_orderBy'. Omit for the root query field map. |
| subgraph | string | yes | Which DeXe subgraph to introspect |
No output schema declared.
No examples provided.
dexe_guide Flow plans and pitfalls ~222
Read-only, local. The plan for a multi-step or unfamiliar DeXe request — 'create a DAO', 'launch a token with distribution/OTC/staking', 'open a sale', 'pass this proposal': the ordered steps (which tools, in what order, with what params), the questions to ask the user with per-parameter risk notes, and the known pitfalls for that journey. Reference topics answer data questions the same way (flow:"read_dao_data" covers the whole read surface). No args or a free-text `intent` returns the menu; `flow` returns the full plan.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Target chain (56 mainnet / 97 testnet). Defaults to the last-used, then the configured default chain. |
| flow | string | – | Exact flow or topic id. Takes precedence over `intent`; omit both for the menu. |
| intent | string | – | The user's request in free text — matched against the flow triggers (e.g. 'create a token and sell 20% via OTC'). |
No output schema declared.
No examples provided.
dexe_ipfs_fetch Fetch content by CID (dedicated gateway, optional fallback) ~80
Read-only. Fetches IPFS content by CID through the server's gateway chain: its dedicated gateway first when it has one, then the configured or public fallbacks.
| Name | Type | Req | Description |
|---|---|---|---|
| cid | string | yes | CID (with or without ipfs:// prefix) |
| timeoutMs | integer | – | Per-gateway timeout in ms (default 10000). |
| Name | Type | Req | Description |
|---|---|---|---|
| attempts | number | yes | – |
| cid | string | yes | – |
| contentType | string | yes | – |
| gateway | string | yes | – |
| json | – | – | – |
| sizeBytes | number | yes | – |
| truncated | boolean | – | – |
No examples provided.
dexe_ipfs_upload_avatar Upload a DAO avatar (one-shot: pins + returns avatarCID/avatarFileName/avatarUrl) ~179
Writes to a remote service. Pins an image, returning {avatarCID, avatarFileName, avatarUrl}. PREFER `filePath`; never pass base64 through the conversation. Magic-byte validated (JPEG/PNG/WebP/GIF only — SVG/HTML render broken on app.dexe.io); renamed `.jpeg`; CID v1 base32.
| Name | Type | Req | Description |
|---|---|---|---|
| base64 | string | – | Base64 image bytes — only when the image isn't a local file. |
| contentType | string | – | Caller-claimed MIME type. Informational only — the pinned MIME comes from byte sniffing. |
| fileName | string | – | Base filename; extension will be normalized to .jpeg |
| filePath | string | – | Absolute path to a local image (JPEG/PNG/WebP/GIF, max 10 MB). Preferred over base64. |
| Name | Type | Req | Description |
|---|---|---|---|
| avatarCID | string | yes | CID v1 base32 — pass to upload_dao_metadata as avatarCID. |
| avatarFileName | string | yes | Filename (always ends with .jpeg). |
| avatarUrl | string | yes | Full subdomain-gateway URL — what the frontend stores verbatim. |
| detectedFormat | string | yes | Raster format detected from magic bytes (jpeg|png|webp|gif). |
| pinnedAt | string | yes | – |
| size | number | yes | – |
No examples provided.
dexe_ipfs_upload_file Upload raw bytes (avatar, attachment, etc.) to IPFS (Pinata) ~168
Writes to a remote service. Pins a file to IPFS; PREFER `filePath` over base64. Returns CID v1 (base32) + filename. Images are magic-byte gated to rasters and renamed `.jpeg` unless `normalizeImageExt: false`.
| Name | Type | Req | Description |
|---|---|---|---|
| base64 | string | – | Base64 file bytes — only when the content isn't a local file. |
| contentType | string | – | MIME type of the bytes. |
| fileName | string | – | Filename to pin it under, with extension. |
| filePath | string | – | Absolute path to a local file, max 25 MB — the server reads it. Preferred over base64. |
| normalizeImageExt | boolean | – | If contentType starts with image/, rename the extension to .jpeg. |
| Name | Type | Req | Description |
|---|---|---|---|
| cid | string | yes | CID v1 base32 — use this as avatarCID. |
| cidV0 | string | yes | Original CID returned by Pinata (usually v0 Qm...). Kept for legacy callers. |
| fileName | string | yes | Filename actually pinned (possibly normalized to .jpeg). |
| pinnedAt | string | yes | – |
| size | number | yes | – |
No examples provided.
dexe_ipfs_upload_proposal_metadata Upload proposal metadata JSON to IPFS (Pinata) ~99
Writes to a remote service. Pins `{proposalName, proposalDescription}` to IPFS via Pinata; returns the CID for `descriptionURL` in `GovPool.createProposal`.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Proposal body; Markdown supported, converted to the Slate format the frontend expects. |
| extra | object | – | Extra fields merged into the metadata object. |
| title | string | yes | Proposal title; becomes `proposalName`. |
| Name | Type | Req | Description |
|---|---|---|---|
| cid | string | yes | – |
| descriptionURL | string | yes | – |
| pinnedAt | string | yes | – |
| size | number | yes | – |
No examples provided.
dexe_otc_buyer_buy Buy from an OTC tier ~333
Broadcasts when a signer is configured. Preflights balance + allowance, adds an ERC20 approve when needed, then builds `TokenSaleProposal.buy(tierId, paymentToken, amount, proof)`. Native path (0x000...000) skips approve and sets `value`; `whitelistUsers` generates the proof.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount to spend: human units ('100.5'), or digits-only = 18-decimal-normalized. |
| chainId | integer | – | Target chain id. Defaults to the MCP's default chain. |
| dryRun | boolean | – | If true, return ordered TxPayloads even when DEXE_PRIVATE_KEY is set. |
| proof | array | – | Merkle proof for a gated tier; [] when not gated. |
| signerKey | string | – | Keyring signer: omit = primary key; 'agent<n>' or address = a DEXE_AGENT_PK_* key. |
| simulateFirst | boolean | – | eth_call-simulate buy() first; aborts with the revertReason if the sim fails. |
| tierId | string | yes | Tier to buy from, decimal string. |
| tokenSaleProposal | string | yes | TokenSaleProposal helper address |
| tokenToBuyWith | string | yes | Payment token; native BNB = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE (0x0 is an alias). |
| user | string | – | Buyer address; defaults to the configured signer. |
| whitelistUsers | array | – | Optional whitelist for proof gen |
No output schema declared.
No examples provided.
dexe_otc_buyer_claim_all Claim all OTC purchases ~247
Broadcasts when a signer is configured. Reads `getUserViews(user, tierIds)` and sends `claim` for tiers with `claimableAmount > 0`. Tiers whose only balance is the VESTED leg are reported under `vestingBlocked` and NOT sent — `vestingWithdraw` is refused by the pool's firewall (upstream defect F15); `includeVesting: true` tries anyway.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Target chain id. Defaults to the MCP's default chain. |
| dryRun | boolean | – | If true, return ordered TxPayloads even when DEXE_PRIVATE_KEY is set. |
| includeVesting | boolean | – | Attempt `vestingWithdraw` too; it reverts on every current pool (upstream F15). |
| signerKey | string | – | Keyring signer: omit = primary key; 'agent<n>' or address = a DEXE_AGENT_PK_* key. |
| tierIds | array | yes | Tier ids to sweep, decimal strings. |
| tokenSaleProposal | string | yes | TokenSaleProposal helper address |
| user | string | – | Claimer address; defaults to the configured signer. |
No output schema declared.
No examples provided.
dexe_otc_buyer_status Token sale position for a wallet (old name) ~143
Read-only. Deprecated alias of dexe_read_token_sale_position (renamed in 0.36.0); same input and output.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| tierIds | array | yes | Tier ids to report on, decimal strings (1 to 50). |
| tokenSaleProposal | string | yes | TokenSaleProposal helper address |
| user | string | yes | Buyer address to report state for. |
| whitelists | array | – | Optional per-tier whitelist (for MerkleWhitelist proof generation). |
No output schema declared.
No examples provided.
dexe_otc_dao_open_sale Open an OTC token sale ~493
Broadcasts when a signer is configured. Proposes a multi-tier token sale on an OTC DAO: builds the `createTiers` envelope (deduped approves, auto-merkle, auto-addToWhitelist, merkle lists pinned to IPFS so buyers can regenerate proofs), then runs the proposal_create flow (approve, deposit, IPFS metadata, `createProposalAndVote`). DAOs from `dexe_dao_create` (v0.19+) already wire TokenSaleProposal as an executor; older ones need a `new_proposal_type` proposal first.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledgeVestingBlocked | boolean | – | Refused by default: opt into vestingPercentage > 0; the vested leg is stranded (F15). |
| buildOnly | boolean | – | Return only the envelope (actions + metadata + merkle roots); skips IPFS and DAO reads. |
| chainId | integer | – | Target chain id. Defaults to the MCP's default chain. |
| dryRun | boolean | – | Preview: no broadcast, no IPFS pin. CIDs are right but unpinned — do NOT broadcast. |
| flowContext | object | – | Guided-flow position from dexe_guide's step templates. Adds flowProgress + next to the result and persists it. |
| govPool | string | yes | GovPool address |
| latestTierId | string | – | Current `latestTierId()` on the sale; new tiers start after it. |
| proposalDescription | string | – | Proposal body; Markdown supported. |
| proposalName | string | – | Proposal title in the DAO UI. |
| signerKey | string | – | Keyring signer: omit = primary key; 'agent<n>' or address = a DEXE_AGENT_PK_* key. |
| tiers | array | yes | Tier specs for `createTiers`, in order; at least one. |
| tokenSaleProposal | string | – | TokenSaleProposal helper address. Omit for a DAO this install deployed (recorded at deploy); otherwise dexe_dao_predict_addresses or the deploy receipt. |
| user | string | – | Acting address; defaults to the configured signer. |
| voteAmount | string | – | Vote size: whole tokens ('12.5') or raw wei. Omit to vote with all available power. |
| voteNftIds | array | – | Your governance NFT token ids, decimal; [] for ERC20-only DAOs. |
No output schema declared.
No examples provided.
dexe_otc_list_sales_for_dao List a DAO's token sale tiers (old name) ~122
Read-only. Deprecated alias of dexe_read_token_sales (renamed in 0.36.0); same input and output.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | GovPool address |
| tokenSaleProposal | string | – | TokenSaleProposal helper address. Omit when the local state records it; otherwise dexe_dao_predict_addresses or the deploy receipt. |
No output schema declared.
No examples provided.
dexe_proposal_catalog List every proposal type DeXe supports ~83
Read-only, local. Every proposal type DeXe supports (external, internal validator, off-chain) with target, IPFS-metadata need, gating and builder tool.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Restrict to one category; 'all' returns the whole catalog. |
| implementedOnly | boolean | – | True to list only types that have an MCP builder. |
| Name | Type | Req | Description |
|---|---|---|---|
| externalMetadataShape | – | – | – |
| internalMetadataShape | – | – | – |
| total | number | yes | – |
| types | array | yes | – |
No examples provided.
dexe_proposal_create Create a proposal ~1,059
Broadcasts when a signer is configured. Creates ANY governance proposal in ONE call: runs approve→deposit→createProposalAndVote and uploads correct IPFS metadata (category/isMeta/changes). Without a signer it returns ordered TxPayloads + a WalletConnect QR.\nPass `proposalType` — the enum lists every wired type — with its inputs in `params`:\n• 'custom': your own actionsOnFor [{executor,value,data}]. 'modify_dao_profile' reads the top-level newDaoName/newDaoDescription/newWebsiteUrl/newSocialLinks/newAvatarPath fields, not `params`.\n• External: token_transfer {token,recipient,amount,isNative?} · withdraw_treasury {receiver,token?,amount?,nftAddress?,nftIds?} · change_voting_settings {govSettings?,settings[],settingsIds?} · add_expert/remove_expert {expertNftContract,scope,nominatedUser,uri?} · token_sale_whitelist {tokenSaleProposal,requests[]} · token_sale_recover {tokenSaleProposal,tierIds[]} · manage_validators {govValidators,changes[]} · validators_allocation {credits[]} · delegate_to_expert/revoke_from_expert {expert,amount,nftIds?} · change_math_model {newVotePower} · blacklist {erc20Gov,addAddresses?,removeAddresses?} · apply_to_dao {token,receiver,amount} · new_proposal_type/enable_staking {govSettings?,settings,executors,newSettingId} · custom_abi {target,signature,method,args?} · token_distribution · token_sale · create_staking_tier · reward_multiplier.\n• Internal (validators-only): change_validator_balances {changes[]} · change_validator_settings {duration,executionDelay,quorum} · monthly_withdraw {withdrawals[],destination} · offchain_internal_proposal {}.\nOff-chain backend types are rejected with the flow to use instead. Full recipes with examples: dexe://playbook, or dexe_proposal_catalog.
| Name | Type | Req | Description |
|---|---|---|---|
| actionsOnFor | array | – | Actions run when the proposal passes. Required for proposalType:'custom'. |
| allowDuplicate | boolean | – | The create is SKIPPED when a live proposal already carries the same IPFS metadata URL (a resumed run). True mints a second identical proposal on purpose. |
| category | string | – | Proposal category (included in IPFS metadata). |
| chainId | integer | – | Target chain (56 mainnet, 97 testnet); needs an RPC for it. Default: the MCP's default chain. |
| confirmRisky | boolean | – | Required when the built proposal carries a DANGER governance-safety advisory. Without it the flow refuses BEFORE any transaction. |
| description | string | – | Proposal description (markdown supported) |
| dryRun | boolean | – | Preview: no broadcast, no IPFS pin, no Pinata key needed. The metadata CID is right but unpinned — do NOT broadcast this calldata. |
| flowContext | object | – | Guided-flow position from dexe_guide's step templates. Adds flowProgress + next to the result and persists it. |
| govPool | string | yes | DAO GovPool address (dexe_dao_registry_lookup). |
| newAvatarBase64 | string | – | Base64 image bytes — only when the image isn't a local file. |
| newAvatarCID | string | – | modify_dao_profile: IPFS CID of an already-pinned avatar. |
| newAvatarFileName | string | – | modify_dao_profile: file name stored with newAvatarCID. |
| newAvatarPath | string | – | Local avatar image path (JPEG/PNG/WebP/GIF, max 10 MB) — the server validates and pins it for you. |
| newDaoDescription | string | – | modify_dao_profile: the DAO's new description (markdown). |
| newDaoName | string | – | modify_dao_profile: the DAO's new display name. |
| newSocialLinks | array | – | modify_dao_profile: [[network, url], ...]. |
| newWebsiteUrl | string | – | modify_dao_profile: the DAO's new website URL. |
| params | object | – | Type-specific builder inputs for the chosen proposalType (recipes: tool description / dexe://playbook). |
| proposalMetadataExtra | object | – | Extra fields merged into IPFS metadata. |
| proposalType | string | – | What kind of proposal to create — required in practice. 'custom' means you supply actionsOnFor. Unsure? Call dexe_proposal_catalog. |
| signerKey | string | – | Keyring signer: omit = primary key; 'agent<n>' or address = a DEXE_AGENT_PK_* key. |
| title | string | yes | Proposal title |
| user | string | – | User address. Required when DEXE_PRIVATE_KEY not set. |
| voteAmount | string | – | Auto-vote amount: raw wei (digits only) or human units with a decimal point ('12.5'). Default: all available power. |
| voteNftIds | array | – | Your governance NFT token ids, decimal; [] for ERC20-only DAOs. |
No output schema declared.
No examples provided.
dexe_proposal_list List proposals on a GovPool ~139
Read-only. Calls `GovPool.getProposals(offset, limit)` and adds quorum progress per proposal. Quorum is per-side — either For or Against clearing the target reaches it; `requiredQuorum` is an ABSOLUTE vote weight, not a percentage.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | GovPool contract address |
| limit | integer | – | Max proposals per page. |
| offset | integer | – | Proposals to skip; page with `nextOffset`. |
| Name | Type | Req | Description |
|---|---|---|---|
| govPool | string | yes | – |
| limit | number | yes | – |
| nextOffset | number | – | – |
| offset | number | yes | – |
| proposals | array | yes | – |
| returned | number | – | – |
| total | number | – | – |
| truncated | boolean | – | – |
No examples provided.
dexe_proposal_state Live proposal state + required quorum ~140
Read-only. Reads `getProposalState`, `getProposalRequiredQuorum` and the proposal's votes in one multicall. `requiredQuorum` is an ABSOLUTE vote weight, not a percentage; quorum is per-side — either For or Against clearing it reaches quorum.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | GovPool contract address |
| proposalId | string|number | yes | On-chain proposal id, 1-indexed decimal (dexe_proposal_list). |
| Name | Type | Req | Description |
|---|---|---|---|
| govPool | string | yes | – |
| proposalId | string | yes | – |
| quorumAttainmentAgainstPct | number|null | yes | – |
| quorumAttainmentForPct | number|null | yes | – |
| quorumReached | boolean|null | yes | – |
| requiredQuorum | string | yes | – |
| requiredQuorumFormatted | string | – | – |
| state | string | yes | – |
| stateIndex | number | yes | – |
| votesAgainst | string|null | yes | – |
| votesAgainstFormatted | string | – | – |
| votesFor | string|null | yes | – |
| votesForFormatted | string | – | – |
| votesShortOfQuorum | string|null | yes | – |
No examples provided.
dexe_proposal_vote_and_execute Vote on and execute a proposal ~478
Broadcasts when a signer is configured. The ONE call for 'vote on / pass / execute proposal N': checks proposal state, AUTO-DEPOSITS wallet tokens when voting power is short (approve UserKeeper → deposit → vote, the frontend's bundled shape), and with autoExecute executes once the vote passes. Without a signer it returns ordered TxPayloads + a WalletConnect QR. Unsure of the lifecycle (validator round, locked tokens)? Call dexe_guide (flow:'vote_execute') first.
| Name | Type | Req | Description |
|---|---|---|---|
| autoExecute | boolean | – | Attempt execute if proposal passes after vote |
| chainId | integer | – | Target chain (56 mainnet, 97 testnet); needs an RPC for it. Default: the MCP's default chain. |
| depositFirst | – | – | 'auto': deposit exactly what is missing when deposited power is short. true: deposit the whole wallet balance. false: never deposit. |
| driveValidatorRound | boolean | – | With autoExecute, drive the validator stage too: moveProposalToValidators, cast the signer's validator vote if it is one, then execute. False stops after the member vote. |
| dryRun | boolean | – | If true, return ordered TxPayloads even when DEXE_PRIVATE_KEY is set (preview without broadcasting). |
| flowContext | object | – | Guided-flow position from dexe_guide's step templates. Adds flowProgress + next to the result and persists it. |
| govPool | string | yes | DAO GovPool address (dexe_dao_registry_lookup). |
| isVoteFor | boolean | – | Vote for (true) or against (false) |
| proposalId | string|number | yes | On-chain proposal id, 1-indexed decimal (dexe_proposal_list). |
| signerKey | string | – | Keyring signer: omit = primary key; 'agent<n>' or address = a DEXE_AGENT_PK_* key. |
| user | string | – | User address. Required when DEXE_PRIVATE_KEY not set. |
| voteAmount | string | – | Vote amount: raw wei (digits only) or human units with a decimal point ('12.5'). Default: ALL available power (deposited + wallet). |
| voteNftIds | array | – | Your governance NFT token ids, decimal; [] for ERC20-only DAOs. |
No output schema declared.
No examples provided.
dexe_read_dao_list Discover and list DAOs (subgraph) ~164
Read-only. Paginated DAO discovery via the pools subgraph; name search is case-insensitive, ordered by voter count descending. Pass `chainId` (chains with a pools endpoint here: 56; default 56); the reply echoes `indexedChainId`, never another chain's rows. No endpoint for a chain = an error that names the on-chain reads to use instead.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| limit | integer | – | Max rows per page. |
| offset | integer | – | Rows to skip (pagination). |
| query | string | – | Name search (case-insensitive, empty = all) |
No output schema declared.
No examples provided.
dexe_read_dao_members List DAO members with voting power (subgraph) ~161
Read-only. Paginated member list for a DAO — voting power, delegation counts, rewards, expert status. Pass `chainId` (chains with a pools endpoint here: 56; default 56); the reply echoes `indexedChainId`, never another chain's rows. No endpoint for a chain = an error that names the on-chain reads to use instead.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | GovPool address (lowercased for subgraph) |
| limit | integer | – | Max rows per page. |
| offset | integer | – | Rows to skip (pagination). |
No output schema declared.
No examples provided.
dexe_read_dao_stats DAO TVL + activity stats time series ~195
Read-only. Time series of DAO stats (tvl_usd, member counts, proposal counts, delegations) from the DeXe tracker. `period` is a human duration like '24 hours', '7 days', '1 months'. Backend-only — mainnets.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain for the backend lookup: 1 Ethereum, 56 BSC. Testnets are not indexed. Default: the configured chain. |
| govPool | string | yes | GovPool / DAO address |
| maxPoints | integer | – | Cap on returned data points; longer series are evenly downsampled (first and last points always kept). The tracker emits ~hourly points — '1 months' is ~740 raw points / ~650 KB, far beyond a usable… |
| period | string | – | Duration window, e.g. '24 hours', '7 days', '1 months' |
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | number | yes | – |
| data | array | yes | – |
| downsampled | boolean | yes | – |
| govPool | string | yes | – |
| period | string | yes | – |
| points | number | yes | Raw point count returned by the tracker |
| returnedPoints | number | yes | Points in `data` after downsampling |
No examples provided.
dexe_read_delegation_map Delegation relationships — outgoing or incoming (subgraph) ~233
Read-only. Delegation pairs from the pools subgraph: direction='outgoing' = who a user delegated to, 'incoming' = who delegated to them. Pass `chainId` (chains with a pools endpoint here: 56; default 56); the reply echoes `indexedChainId`, never another chain's rows. No endpoint for a chain = an error that names the on-chain reads to use instead.
| Name | Type | Req | Description |
|---|---|---|---|
| addresses | array | yes | Voter WALLET addresses (plain 0x…40-hex). Composite VoterInPool ids ('govPool-voter' or 80-hex 'voter+pool' concatenations) are also accepted — the voter part is extracted automatically. |
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| direction | string | – | outgoing = who I delegated to; incoming = who delegated to me |
| limit | integer | – | Max rows per page. |
| offset | integer | – | Rows to skip (pagination). |
No output schema declared.
No examples provided.
dexe_read_settings Default + internal proposal settings for a DAO ~103
Read-only. Reads `GovSettings.getDefaultSettings()` and `getInternalSettings()` for the DAO at `govPool` — quorum, duration, executionDelay, minVotesForCreating/Voting.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | DAO GovPool address (dexe_dao_registry_lookup). |
| Name | Type | Req | Description |
|---|---|---|---|
| defaultSettings | – | – | – |
| govPool | string | yes | – |
| internalSettings | – | – | – |
| settings | string | yes | – |
No examples provided.
dexe_read_token_holders Top holders of an ERC20 token (with balances) ~134
Read-only. Holders + raw balances for any ERC20 from the DeXe backend, balance desc, one page per call (see `pageToken`). Mainnets only (1, 56).
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain for the backend lookup: 1 Ethereum, 56 BSC. Testnets are not indexed. Default: the configured chain. |
| pageSize | integer | – | Rows per page (backend max 100). |
| pageToken | string | – | Prior result's `nextPageToken` for the next page. |
| token | string | yes | ERC20 token contract address |
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | number | yes | – |
| count | number | yes | – |
| holders | array | yes | – |
| nextPageToken | string | yes | – |
| token | string | yes | – |
| truncated | boolean | – | – |
No examples provided.
dexe_read_token_sale_position Token sale position for a wallet ~172
Read-only. Tier params + user state across N tiers: purchasable status, claimable amount, vesting withdrawable, lockup ETA, totalSold, merkle root. `whitelists` adds the user's proof, making `canParticipate` accurate for gated tiers.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| tierIds | array | yes | Tier ids to report on, decimal strings (1 to 50). |
| tokenSaleProposal | string | yes | TokenSaleProposal helper address |
| user | string | yes | Buyer address to report state for. |
| whitelists | array | – | Optional per-tier whitelist (for MerkleWhitelist proof generation). |
No output schema declared.
No examples provided.
dexe_read_token_sales List a DAO's token sale tiers ~203
Read-only. Reads `latestTierId()` then `getTierViews(0, latestTierId)` on the DAO's TokenSaleProposal: tiers with `totalSold` and status (`upcoming`/`active`/`ended`/`off`) computed from the current block timestamp and the tier's on-chain isOff flag. On-chain only — any chain with an RPC; the reply echoes the resolved `chainId`. `tokenSaleProposal` defaults to the address this install's local state records for the DAO; otherwise it is required.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | yes | GovPool address |
| tokenSaleProposal | string | – | TokenSaleProposal helper address. Omit when the local state records it; otherwise dexe_dao_predict_addresses or the deploy receipt. |
No output schema declared.
No examples provided.
dexe_read_treasury Treasury or wallet balances (native + ERC20, USD) ~189
Read-only. Treasury / wallet balances for any address; pass a GovPool address for a DAO treasury. Auto-discovers EVERY token via the DeXe backend with USD prices and a total. Falls back to an on-chain read (chain 97, explicit `tokens`, or a backend failure) — no token discovery there, and it reports `degraded: true`.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to read from: 56 mainnet, 97 testnet. Needs an RPC for it. Default: the configured chain. |
| govPool | string | – | Alias for `holder` — every other DAO read names the DAO this way |
| holder | string | – | Address whose balances we read (a GovPool for a DAO treasury) |
| tokens | array | – | Optional explicit ERC20 addresses (at most 50); forces on-chain RPC read of just these |
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | number | yes | – |
| degraded | boolean | yes | – |
| holder | string | yes | – |
| native | string | yes | – |
| nativeFormatted | string | – | – |
| source | string | yes | – |
| tokens | array | yes | – |
| totalUsd | number|null | yes | – |
No examples provided.
dexe_tx_approval_status Keystore approval status ~83
Read-only. Status + landed tx hashes of a keystore approval (`awaiting_approval`). Cannot approve; only the owner can, on the page.
| Name | Type | Req | Description |
|---|---|---|---|
| approvalId | string | yes | `approval.approvalId` of the awaiting_approval result |
| waitMs | integer | – | Long-poll up to this many ms for a change |
No output schema declared.
No examples provided.
dexe_tx_send Sign and broadcast a transaction ~302
Broadcasts when a signer is configured. Sends the TxPayload fields from any dexe_*_build_* tool and waits for confirmation. Pass `chainId` when several chains are configured, plus the payload's own chainId as `payloadChainId` — a mismatch REFUSES the send. Calldata with a privileged GovUserKeeper accounting selector is refused (hard block, no override).
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to broadcast on; needs an RPC for it. Default: the MCP's default chain. |
| data | string | – | ABI-encoded calldata (0x-prefixed hex) |
| gasLimit | string | – | Optional gas limit override (decimal string) |
| payload | object | – | A dexe_*_build_* `payload` object verbatim ({to,data,value,chainId}). Fills to/data/value and payloadChainId when the flat fields are omitted. |
| payloadChainId | integer | – | The TxPayload's own `chainId`, copied verbatim — a mismatch REFUSES the send. |
| signerKey | string | – | Signer: omit = primary DEXE_PRIVATE_KEY (never an agent); 'agent<n>'/address = keyring. |
| to | string | – | Destination contract address (or pass the builder's `payload` object) |
| value | string | – | Wei value as decimal string |
| waitConfirmations | integer | – | Confirmations to wait (0 = fire-and-forget) |
No output schema declared.
No examples provided.
dexe_tx_status Transaction status ~80
Read-only. Receipt/status for a submitted tx hash (pending vs not_found). A broadcast timeout is not a failure — the tx may still confirm; re-check here.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain to look the receipt up on. Default: the MCP's default chain. |
| txHash | string | yes | Transaction hash to look up |
No output schema declared.
No examples provided.
dexe_vote_build_deposit Stake tokens/NFTs into a DAO to gain voting power ~289
Builds calldata; does not broadcast. `GovPool.deposit(amount, nftIds)` — stakes into the DAO to gain voting power. Payable: native-coin DAOs pass `value`; ERC20 DAOs pass value=0 and need the GovUserKeeper approve first.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Governance token to stake, in that token's own decimals. RAW base units, digits only ('1500000000000000000' = 1.5 at 18 dec); '1.5' is REJECTED — scale it, or use dexe_proposal_create |
| chainId | integer | – | Chain this payload targets: 56 mainnet, 97 testnet. Default: the configured chain. |
| govPool | string | yes | DAO GovPool address (dexe_dao_registry_lookup). |
| nftIds | array | – | Your governance NFT token ids, decimal; [] for ERC20-only DAOs. |
| value | string | – | Native coin (BNB/ETH, 18 decimals) sent with the tx — native-staking DAOs only. RAW base units, digits only ('1500000000000000000' = 1.5 at 18 dec); '1.5' is REJECTED — scale it, or use dexe_proposal… |
| Name | Type | Req | Description |
|---|---|---|---|
| advisories | array | – | Deprecated — use warnings. |
| payload | object | yes | – |
| warnings | array | – | – |
No examples provided.
dexe_vote_build_erc20_approve Build ERC20.approve(spender, amount) calldata ~281
Builds calldata; does not broadcast. `ERC20.approve(spender, amount)`. Run it before dexe_vote_build_deposit when staking an ERC20: approve the DAO's GovUserKeeper (dexe_dao_info), never the GovPool. Native-coin staking needs no approve — pass `value` on deposit instead.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Allowance in the ERC20 at `token`, that token's own decimals. RAW base units, digits only ('1500000000000000000' = 1.5 at 18 dec); '1.5' is REJECTED — scale it, or use dexe_proposal_create. Unlimited… |
| chainId | integer | – | Chain this payload targets: 56 mainnet, 97 testnet. Default: the configured chain. |
| govPool | string | – | DAO GovPool. When set, an approve to it (instead of its GovUserKeeper) is refused. |
| spender | string | yes | For deposits: the DAO's GovUserKeeper address (NOT the GovPool) |
| token | string | yes | ERC20 token contract address to approve. |
| Name | Type | Req | Description |
|---|---|---|---|
| advisories | array | – | Deprecated — use warnings. |
| payload | object | yes | – |
| warnings | array | – | – |
No examples provided.
dexe_vote_build_execute Execute a passed proposal ~237
Builds calldata; does not broadcast. `GovPool.execute(proposalId)`; scope:'internal' + govValidators builds `GovValidators.executeInternalProposal(proposalId)` (anyone may send once Succeeded). When an action calls GovSettings.addSettings the response carries an advisory naming the chains where the proposal passes the vote and then reverts here — read it before signing.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain this payload targets: 56 mainnet, 97 testnet. Default: the configured chain. |
| govPool | string | yes | DAO GovPool address (dexe_dao_registry_lookup). |
| govValidators | string | – | Required for scope:'internal' (dexe_dao_info.helpers.validators) |
| proposalId | string | yes | On-chain proposal id, 1-indexed decimal (dexe_proposal_list). |
| scope | string | – | 'external' executes on GovPool; 'internal' on GovValidators (needs govValidators). |
| voter | string | – | Your address. When set, the deposit-lock warning is checked against your live power and shown only if your tokens really are locked. |
| Name | Type | Req | Description |
|---|---|---|---|
| advisories | array | – | Deprecated — use warnings. |
| payload | object | yes | – |
| warnings | array | – | – |
No examples provided.
dexe_vote_build_vote Vote on an external proposal ~294
Builds calldata; does not broadcast. Emits `GovPool.multicall([vote(proposalId, isVoteFor, amount, nftIds)])` — the single-element multicall the frontend sends, because SphereX-protected pools revert a raw top-level vote(). Needs staked or delegated power first (dexe_vote_build_deposit).
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Your staked/delegated governance token power to cast, that token's own decimals. RAW base units, digits only ('1500000000000000000' = 1.5 at 18 dec); '1.5' is REJECTED — scale it, or use dexe_proposa… |
| chainId | integer | – | Chain this payload targets: 56 mainnet, 97 testnet. Default: the configured chain. |
| govPool | string | yes | DAO GovPool address (dexe_dao_registry_lookup). |
| isVoteFor | boolean | yes | true = vote FOR, false = vote AGAINST. |
| nftIds | array | – | Your governance NFT token ids, decimal; [] for ERC20-only DAOs. |
| proposalId | string | yes | On-chain proposal id, 1-indexed decimal (dexe_proposal_list). |
| voter | string | – | Your address. When set, the deposit-lock warning is checked against your live power and shown only if your tokens really are locked. |
| Name | Type | Req | Description |
|---|---|---|---|
| advisories | array | – | Deprecated — use warnings. |
| payload | object | yes | – |
| warnings | array | – | – |
No examples provided.
dexe_vote_build_withdraw Unstake tokens/NFTs from a DAO ~202
Builds calldata; does not broadcast. `GovPool.withdraw(receiver, amount, nftIds)` — unstakes deposited governance tokens. Tokens you voted with stay locked until that proposal is executed.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Governance token to unstake, in that token's own decimals. RAW base units, digits only ('1500000000000000000' = 1.5 at 18 dec); '1.5' is REJECTED — scale it, or use dexe_proposal_create |
| chainId | integer | – | Chain this payload targets: 56 mainnet, 97 testnet. Default: the configured chain. |
| govPool | string | yes | DAO GovPool address (dexe_dao_registry_lookup). |
| nftIds | array | – | Your governance NFT token ids, decimal; [] for ERC20-only DAOs. |
| receiver | string | yes | Address the unstaked tokens/NFTs are sent to. |
| Name | Type | Req | Description |
|---|---|---|---|
| advisories | array | – | Deprecated — use warnings. |
| payload | object | yes | – |
| warnings | array | – | – |
No examples provided.
How do I install the DeXe DAO governance MCP server?
DeXe DAO governance runs locally as an npm package, launched with npx -y dexe-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · dexe-mcp
claude mcp add edward-arinin-web-dev-dexe-mcp -- npx -y dexe-mcp
What is the DeXe DAO governance MCP server?
DeXe DAO governance is an MCP server listed in the public MCP registry as io.github.edward-arinin-web-dev/dexe-mcp. DeXe Protocol DAOs for AI agents: create DAOs, proposals, votes, OTC token sales, on-chain reads. This page covers its npm package (dexe-mcp).
Is the DeXe DAO governance MCP server safe to use?
DeXe DAO governance scores 85 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the DeXe DAO governance MCP server expose?
DeXe DAO governance exposes 48 tools: dexe_dao_predict_addresses, dexe_dao_registry_lookup, dexe_dao_info, dexe_proposal_state, dexe_proposal_list, and 43 more. Their descriptions and schemas cost roughly 10,524 tokens of context every time the server is loaded.
Is the DeXe DAO governance MCP server still maintained?
DeXe DAO governance is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the DeXe DAO governance MCP server under?
DeXe DAO governance declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.