dexe-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEXE_RPC_URL | No | Legacy single-chain alias for a JSON-RPC endpoint. | |
| DEXE_TOOLSETS | No | Comma-separated tool profiles. Valid values include core, proposals, read, vote, agents, governor, dev, and full. | core |
| DEXE_PINATA_JWT | No | Pinata JWT for IPFS uploads. Required to broadcast a DAO/proposal creation because metadata must be pinned. Previews and dryRun need no key. | |
| DEXE_STATE_PATH | No | Overrides the session-state file path, normally ~/.dexe-mcp/state.json. | |
| DEXE_PRIVATE_KEY | No | Hot-key private key, read only when DEXE_SIGNER_MODE=unattended. With the mode unset, a hot key is ignored. | |
| DEXE_SIGNER_MODE | No | Signing mode: walletconnect (default), keystore, readonly, or unattended. Unattended uses hot keys without confirmation and is limited to DEXE_UNATTENDED_CHAINS. | walletconnect |
| DEXE_IPFS_GATEWAY | No | Dedicated IPFS gateway for reads, such as Pinata, Filebase, or a self-hosted gateway. Without one, public gateways are used. | |
| DEXE_DOCTOR_STRICT | No | Set to 1 to make dexe-mcp doctor exit 1 on warnings, same as --strict. | |
| DEXE_GRAPH_API_KEY | No | The Graph API key, used only when the subgraph URL does not embed the key. | |
| DEXE_PROTOCOL_PATH | No | Path to an existing DeXe-Protocol checkout for the optional dev toolset; disables auto-clone. | |
| DEXE_BACKEND_API_URL | No | DeXe backend API URL for off-chain proposals, for example https://api.dexe.io. | |
| DEXE_RPC_URL_MAINNET | No | JSON-RPC endpoint for BSC mainnet. Without any RPC URL, a public BSC RPC is used (rate-limited). | |
| DEXE_RPC_URL_TESTNET | No | JSON-RPC endpoint for BSC testnet. | |
| DEXE_DEFAULT_CHAIN_ID | No | Default chain ID for chain selection. Defaults to 56 (BSC mainnet); use 97 for testnet. | 56 |
| DEXE_RPC_URL_<chainId> | No | Per-chain JSON-RPC endpoint, where <chainId> is the numeric chain ID. | |
| DEXE_SAFE_DELEGATECALL | No | Set to block to refuse Safe operation: 1 outright. By default a DELEGATECALL needs an explicit allowDelegateCall: true on the call. | |
| DEXE_UNATTENDED_CHAINS | No | Chains allowed for unattended hot-key signing. Defaults to 97. | 97 |
| DEXE_DISABLE_PUBLIC_RPC | No | Set to 1 to turn off the public RPC fallback for BSC and the archive-capable Ethereum/Optimism fallback used by dexe_gov_* tools. | |
| DEXE_SUBGRAPH_POOLS_URL | No | Subgraph endpoint for pools data. Defaults target the decentralized network. | |
| DEXE_PINATA_GATEWAY_TOKEN | No | Gateway key for restricted Pinata dedicated gateways. | |
| DEXE_SUBGRAPH_VALIDATORS_URL | No | Subgraph endpoint for validators data. Defaults target the decentralized network. | |
| DEXE_WALLETCONNECT_PROJECT_ID | No | WalletConnect project ID for signing. A shared default ships, but set your own project ID for production use. | |
| DEXE_SUBGRAPH_INTERACTIONS_URL | No | Subgraph endpoint for interactions data. Defaults target the decentralized network. | |
| DEXE_IPFS_DISABLE_PUBLIC_FALLBACK | No | Set to 1 to disable public IPFS gateway fallback. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Tools for DeXe Protocol governance DAOs, plus dexe_gov_* (needs DEXE_TOOLSETS=core,governor) for external OpenZeppelin/Compound Governors. For any MULTI-STEP request (create a DAO, token sale, staking, pass a proposal) call dexe_guide FIRST: it returns the plan, the questions to ask and the pitfalls. Orientation: dexe_context (chain, env, known DAOs, toolsets off); dexe_write_context (signer, keyring, uploads) — skip both when the user named the DAO and chain. Prefer the composites: dexe_dao_create, dexe_proposal_create (any of the 33 proposal types — proposalType + params), dexe_proposal_vote_and_execute (auto-deposits). On partial failure they return the landed-steps ledger — fix the cause and re-run the same call. On re-run, ERC20.approve / GovPool.deposit / createProposalAndVote / GovPool.vote are re-derived from chain state and skipped; GovPool.execute and the validator round are NOT — and a receipt-wait TIMEOUT means the transaction was already broadcast, so check dexe_tx_status before any re-run and never re-send blindly. Amounts: composites/proposal builders take raw wei (digits only) or human units with a decimal point ('12.5'); dexe_vote_build_* take RAW base units only. Durations are seconds. Images: pass a LOCAL FILE PATH, never base64. ERC20.approve the UserKeeper, never GovPool. Validate DAO deploys on BSC testnet (chain 97). Keystore: on awaiting_approval ask the user to approve on the local page, then re-run the same call; never ask for the password. Tools are gated by DEXE_TOOLSETS (default 'core' — 46 tools). dexe_proposal_build_* (needs DEXE_TOOLSETS=core,proposals) are off and not needed: dexe_proposal_create covers every type. dexe_compile, dexe_get_abi, dexe_find_selector (needs DEXE_TOOLSETS=core,dev): compile once before the reads. Recipes + error remedies: dexe://playbook; catalog: dexe://tools. Skills: dexe-agent-team, dexe-create-dao, dexe-create-proposal, dexe-otc, dexe-report, dexe-setup, dexe-staking, dexe-vote-execute; dexe-agent-team needs DEXE_TOOLSETS=core,agents plus hot keys.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dexe_dao_predict_addressesA | Read-only. Calls |
| dexe_dao_registry_lookupA | Read-only. Calls |
| dexe_dao_infoA | Read-only. One multicall on a GovPool: helper addresses, NFT contract addresses, description URL, and live validator count. |
| dexe_proposal_stateA | Read-only. Reads |
| dexe_proposal_listB | Read-only. Calls |
| dexe_vote_user_powerA | Read-only. Reads |
| dexe_read_treasuryA | 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 |
| dexe_read_token_holdersA | Read-only. Holders + raw balances for any ERC20 from the DeXe backend, balance desc, one page per call (see |
| dexe_read_dao_statsA | Read-only. Time series of DAO stats (tvl_usd, member counts, proposal counts, delegations) from the DeXe tracker. |
| dexe_read_settingsB | Read-only. Reads |
| dexe_ipfs_upload_proposal_metadataA | Writes to a remote service. Pins |
| dexe_ipfs_upload_fileA | Writes to a remote service. Pins a file to IPFS; PREFER |
| dexe_ipfs_upload_avatarA | Writes to a remote service. Pins an image, returning {avatarCID, avatarFileName, avatarUrl}. PREFER |
| dexe_dao_generate_avatarA | 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. |
| dexe_ipfs_fetchA | 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. |
| dexe_proposal_catalogB | Read-only, local. Every proposal type DeXe supports (external, internal validator, off-chain) with target, IPFS-metadata need, gating and builder tool. |
| dexe_vote_build_erc20_approveA | Builds calldata; does not broadcast. |
| dexe_vote_build_depositA | Builds calldata; does not broadcast. |
| dexe_vote_build_withdrawA | Builds calldata; does not broadcast. |
| dexe_vote_build_voteA | Builds calldata; does not broadcast. Emits |
| dexe_vote_build_executeA | Builds calldata; does not broadcast. |
| dexe_dao_reportA | Read-only. The whole picture of one DAO in one call — every section named by |
| dexe_read_dao_listA | Read-only. Paginated DAO discovery via the pools subgraph; name search is case-insensitive, ordered by voter count descending. Pass |
| dexe_read_dao_membersA | Read-only. Paginated member list for a DAO — voting power, delegation counts, rewards, expert status. Pass |
| dexe_read_delegation_mapA | Read-only. Delegation pairs from the pools subgraph: direction='outgoing' = who a user delegated to, 'incoming' = who delegated to them. Pass |
| dexe_read_token_salesA | Read-only. Reads |
| dexe_otc_list_sales_for_daoA | Read-only. Deprecated alias of dexe_read_token_sales (renamed in 0.36.0); same input and output. |
| dexe_graph_queryA | Read-only. GraphQL against a DeXe subgraph: 'pools' (DAOs, proposals, voters, delegations, experts, sales), 'interactions' (per-user tx feed), 'validators'. Bound every list with |
| dexe_graph_schemaA | 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 |
| dexe_tx_sendA | Broadcasts when a signer is configured. Sends the TxPayload fields from any dexe_*build* tool and waits for confirmation. Pass |
| dexe_tx_statusA | 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. |
| dexe_tx_approval_statusA | Read-only. Status + landed tx hashes of a keystore approval ( |
| dexe_get_configA | Read-only, local. The resolved read config: chain set and default chain, subgraph coverage per chain, the backend API and the IPFS read gateways. |
| dexe_doctorA | 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. |
| dexe_wc_statusA | Read-only. WalletConnect config plus live session state (connected?, account, chain, topic, peer wallet, last error). It dispatches transactions in DEXE_SIGNER_MODE=walletconnect (the default). |
| dexe_wc_connectA | Writes to a remote service. Starts a WalletConnect session and renders a scannable QR (ASCII + PNG). RECOMMENDED signer — the phone signs and broadcasts, so no private key touches this machine. Poll dexe_wc_status until |
| dexe_wc_disconnectA | Writes to a remote service. Tears down the active WalletConnect session; safe when not connected. |
| dexe_proposal_createA | 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 |
| dexe_proposal_vote_and_executeA | 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. |
| dexe_dao_createA | Broadcasts when a signer is configured. Deploys a new DeXe DAO in ONE call. SIMPLE mode (recommended): pass |
| dexe_contextA | 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 |
| dexe_write_contextA | Read-only. Write posture for this session — the signer mode + address (WalletConnect, keystore, hot key or none), the agent KEYRING (signerKey, address, gas, 24h broadcasts per persona), Pinata / WalletConnect / Safe readiness, the signer's deposited power in the newest recorded DAO, and a write journey a prior session left unfinished. Chains, env readiness and recorded DAOs are dexe_context. |
| dexe_guideA | 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 |
| dexe_otc_dao_open_saleA | Broadcasts when a signer is configured. Proposes a multi-tier token sale on an OTC DAO: builds the |
| dexe_read_token_sale_positionA | Read-only. Tier params + user state across N tiers: purchasable status, claimable amount, vesting withdrawable, lockup ETA, totalSold, merkle root. |
| dexe_otc_buyer_statusA | Read-only. Deprecated alias of dexe_read_token_sale_position (renamed in 0.36.0); same input and output. |
| dexe_otc_buyer_buyA | Broadcasts when a signer is configured. Preflights balance + allowance, adds an ERC20 approve when needed, then builds |
| dexe_otc_buyer_claim_allA | Broadcasts when a signer is configured. Reads |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| dexe-flow-create_dao | Deploy a new DeXe governance DAO with its gov token in one composite call (preview → confirm → broadcast). |
| dexe-flow-create_proposal | Create ANY of the 33 catalog proposal types with one dexe_proposal_create call — it handles approve → deposit → create + IPFS metadata. |
| dexe-flow-vote_execute | Vote and execute in one dexe_proposal_vote_and_execute call — auto-deposits when power is short and auto-drives the validator round. |
| dexe-flow-token_distribution | A distribution proposal splits a token amount pro-rata among whoever VOTES on it — this is NOT a payout to a fixed address list. |
| dexe-flow-otc_sale | Open a multi-tier token sale (proposal → vote → execute → live), then buyers check status / buy / claim via the dexe_otc_* composites. |
| dexe-flow-staking_setup | Create a staking reward tier: resolve/deploy the StakingProposal contract, pass a create_staking_tier proposal, then holders stake and claim. |
| dexe-flow-launch_token_economy | The end-to-end journey: deploy a DAO + token, put tokens in specific hands, open an OTC sale, set up staking. Composed of the create_dao, create_proposal, otc_sale and staking_setup flows. |
| dexe-flow-agent_team | Drive several keyring personas (proposer / voter / validator / delegator) through one DAO: configure the keyring, fund inside a budget, run the sequence that works on-chain, reconcile per-persona from the agent ledger. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| playbook | AI playbook for dexe-mcp: intent → exact tool call recipes for every flow, per-proposal-type params, and the error → remedy table. |
| graph-schema | Subgraph entity/field reference for dexe_graph_query (pools / interactions / validators): id conventions, filters, enums, worked queries. BSC mainnet data only. |
| tools | Full dexe-mcp tool catalog: every tool by group with a one-line description, plus the DEXE_TOOLSETS profiles that gate them. |
TDQS
Scored across 48 tools
Descriptions are extremely detailed and carry strong cues ('read-only', 'builds calldata', 'broadcasts'), but the surface contains real overlap: two explicit deprecated aliases (dexe_otc_list_sales_for_dao → dexe_read_token_sales, dexe_otc_buyer_status → dexe_read_token_sale_position) do exactly what another tool does, and three avatar/image tools (dexe_dao_generate_avatar, dexe_ipfs_upload_avatar, dexe_ipfs_upload_file) are easy to confuse. There is also a deliberate high-level vs low-level layering (dexe_proposal_vote_and_execute vs dexe_vote_build_vote + dexe_tx_send) that an agent must reason about before choosing.
Everything is snake_case with a uniform dexe_ prefix and clear domain groupings (dao_, proposal_, vote_, ipfs_, tx_, wc_, otc_, read_), which keeps it readable. However the verb layer is inconsistent: read_ vs get_ vs bare domain nouns (dexe_dao_info, dexe_get_config, dexe_read_settings, dexe_proposal_list) and odd forms like dexe_otc_buyer_status sit alongside build_/create_ verbs, so there is no single predictable verb_noun pattern.
48 tools is well past the heavy threshold for a single server, and a meaningful chunk of that count is duplication rather than capability (two deprecated aliases, multiple overlapping avatar/IPFS tools, parallel high-level and build-level vote/execute paths). The full DAO + token-sale + graph + wallet + diagnostics surface justifies breadth, but it should have been consolidated into fewer, cleaner entry points.
Coverage is genuinely broad: DAO discovery/creation/inspection, members, delegations, treasury and holder reads, full proposal lifecycle (catalog, create, list, state, vote, execute), staking deposit/withdraw/approve, IPFS read/write, OTC token sales end-to-end, validator internals, tx send/status, WalletConnect and diagnostics. Minor gaps remain, such as a first-class user-to-user delegation build tool (only delegation reads and expert-delegation proposals exist) and per-proposal metadata retrieval outside the generic graph query.