@continuumdao/continuum-node-sdk 1.3.41 → 1.3.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-host-catalog.json +900 -132
- package/dist/browser.d.ts +11 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +9 -0
- package/dist/browser.js.map +1 -0
- package/dist/config/mpa-wallet.d.ts +346 -29
- package/dist/config/mpa-wallet.d.ts.map +1 -1
- package/dist/config/mpa-wallet.js +201 -19
- package/dist/config/mpa-wallet.js.map +1 -1
- package/dist/core/agent/agent-chart-data-access.d.ts +1 -1
- package/dist/core/agent/agent-chart-data-access.d.ts.map +1 -1
- package/dist/core/agent/agent-chart-data-access.js +24 -1
- package/dist/core/agent/agent-chart-data-access.js.map +1 -1
- package/dist/core/agent/cron-jobs.d.ts.map +1 -1
- package/dist/core/agent/cron-jobs.js +9 -0
- package/dist/core/agent/cron-jobs.js.map +1 -1
- package/dist/core/agent/discord-guilds-config.d.ts +39 -0
- package/dist/core/agent/discord-guilds-config.d.ts.map +1 -0
- package/dist/core/agent/discord-guilds-config.js +213 -0
- package/dist/core/agent/discord-guilds-config.js.map +1 -0
- package/dist/core/agent/discord-rest-client.d.ts +75 -0
- package/dist/core/agent/discord-rest-client.d.ts.map +1 -0
- package/dist/core/agent/discord-rest-client.js +183 -0
- package/dist/core/agent/discord-rest-client.js.map +1 -0
- package/dist/core/agent/discord-search.d.ts +16 -0
- package/dist/core/agent/discord-search.d.ts.map +1 -0
- package/dist/core/agent/discord-search.js +292 -0
- package/dist/core/agent/discord-search.js.map +1 -0
- package/dist/core/agent/mcp-servers.d.ts +4 -4
- package/dist/core/agent/mcp-servers.d.ts.map +1 -1
- package/dist/core/agent/mcp-servers.js +55 -12
- package/dist/core/agent/mcp-servers.js.map +1 -1
- package/dist/core/agent/reddit-search.d.ts +13 -0
- package/dist/core/agent/reddit-search.d.ts.map +1 -0
- package/dist/core/agent/reddit-search.js +244 -0
- package/dist/core/agent/reddit-search.js.map +1 -0
- package/dist/core/agent/skills.d.ts +7 -1
- package/dist/core/agent/skills.d.ts.map +1 -1
- package/dist/core/agent/skills.js +69 -2
- package/dist/core/agent/skills.js.map +1 -1
- package/dist/core/agent/social-search-config.d.ts +76 -0
- package/dist/core/agent/social-search-config.d.ts.map +1 -0
- package/dist/core/agent/social-search-config.js +501 -0
- package/dist/core/agent/social-search-config.js.map +1 -0
- package/dist/core/agent/telegram-channels-config.d.ts +24 -0
- package/dist/core/agent/telegram-channels-config.d.ts.map +1 -0
- package/dist/core/agent/telegram-channels-config.js +146 -0
- package/dist/core/agent/telegram-channels-config.js.map +1 -0
- package/dist/core/agent/telegram-search-auth.d.ts +21 -0
- package/dist/core/agent/telegram-search-auth.d.ts.map +1 -0
- package/dist/core/agent/telegram-search-auth.js +85 -0
- package/dist/core/agent/telegram-search-auth.js.map +1 -0
- package/dist/core/agent/telegram-search.d.ts +12 -0
- package/dist/core/agent/telegram-search.d.ts.map +1 -0
- package/dist/core/agent/telegram-search.js +173 -0
- package/dist/core/agent/telegram-search.js.map +1 -0
- package/dist/core/agent/telegram.d.ts +15 -0
- package/dist/core/agent/telegram.d.ts.map +1 -0
- package/dist/core/agent/telegram.js +72 -0
- package/dist/core/agent/telegram.js.map +1 -0
- package/dist/core/agent/ticker-extract.d.ts +15 -0
- package/dist/core/agent/ticker-extract.d.ts.map +1 -0
- package/dist/core/agent/ticker-extract.js +124 -0
- package/dist/core/agent/ticker-extract.js.map +1 -0
- package/dist/core/agent/user-folder-path.d.ts +19 -0
- package/dist/core/agent/user-folder-path.d.ts.map +1 -0
- package/dist/core/agent/user-folder-path.js +59 -0
- package/dist/core/agent/user-folder-path.js.map +1 -0
- package/dist/core/agent/user-folder-schemas.d.ts +41 -0
- package/dist/core/agent/user-folder-schemas.d.ts.map +1 -0
- package/dist/core/agent/user-folder-schemas.js +67 -0
- package/dist/core/agent/user-folder-schemas.js.map +1 -0
- package/dist/core/agent/user-folder.d.ts.map +1 -1
- package/dist/core/agent/user-folder.js +18 -14
- package/dist/core/agent/user-folder.js.map +1 -1
- package/dist/core/business-latest/fetch.d.ts +9 -0
- package/dist/core/business-latest/fetch.d.ts.map +1 -0
- package/dist/core/business-latest/fetch.js +138 -0
- package/dist/core/business-latest/fetch.js.map +1 -0
- package/dist/core/business-latest/index.d.ts +5 -0
- package/dist/core/business-latest/index.d.ts.map +1 -0
- package/dist/core/business-latest/index.js +5 -0
- package/dist/core/business-latest/index.js.map +1 -0
- package/dist/core/business-latest/parse-rss.d.ts +10 -0
- package/dist/core/business-latest/parse-rss.d.ts.map +1 -0
- package/dist/core/business-latest/parse-rss.js +84 -0
- package/dist/core/business-latest/parse-rss.js.map +1 -0
- package/dist/core/business-latest/schemas.d.ts +115 -0
- package/dist/core/business-latest/schemas.d.ts.map +1 -0
- package/dist/core/business-latest/schemas.js +61 -0
- package/dist/core/business-latest/schemas.js.map +1 -0
- package/dist/core/business-latest/sources.d.ts +19 -0
- package/dist/core/business-latest/sources.d.ts.map +1 -0
- package/dist/core/business-latest/sources.js +65 -0
- package/dist/core/business-latest/sources.js.map +1 -0
- package/dist/core/chart/alpaca-bars-envelope.d.ts +13 -0
- package/dist/core/chart/alpaca-bars-envelope.d.ts.map +1 -0
- package/dist/core/chart/alpaca-bars-envelope.js +65 -0
- package/dist/core/chart/alpaca-bars-envelope.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/chart-data-purpose.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/chart-data-purpose.js +32 -0
- package/dist/core/chart/analysis/trade-setups/chart-data-purpose.js.map +1 -1
- package/dist/core/chart/chart-data-validation.d.ts.map +1 -1
- package/dist/core/chart/chart-data-validation.js +32 -6
- package/dist/core/chart/chart-data-validation.js.map +1 -1
- package/dist/core/chart/fetch-metadata.d.ts +4 -1
- package/dist/core/chart/fetch-metadata.d.ts.map +1 -1
- package/dist/core/chart/fetch-metadata.js +88 -2
- package/dist/core/chart/fetch-metadata.js.map +1 -1
- package/dist/core/chart/fetch-result.d.ts.map +1 -1
- package/dist/core/chart/fetch-result.js +32 -1
- package/dist/core/chart/fetch-result.js.map +1 -1
- package/dist/core/chart/index.d.ts +2 -1
- package/dist/core/chart/index.d.ts.map +1 -1
- package/dist/core/chart/index.js +2 -1
- package/dist/core/chart/index.js.map +1 -1
- package/dist/core/chart/live/binding-extract.d.ts.map +1 -1
- package/dist/core/chart/live/binding-extract.js +82 -1
- package/dist/core/chart/live/binding-extract.js.map +1 -1
- package/dist/core/chart/live/fetch-tick.d.ts +3 -0
- package/dist/core/chart/live/fetch-tick.d.ts.map +1 -1
- package/dist/core/chart/live/fetch-tick.js +146 -1
- package/dist/core/chart/live/fetch-tick.js.map +1 -1
- package/dist/core/chart/live/index.d.ts +2 -2
- package/dist/core/chart/live/index.d.ts.map +1 -1
- package/dist/core/chart/live/index.js +2 -2
- package/dist/core/chart/live/index.js.map +1 -1
- package/dist/core/chart/live/interval.d.ts.map +1 -1
- package/dist/core/chart/live/interval.js +9 -0
- package/dist/core/chart/live/interval.js.map +1 -1
- package/dist/core/chart/live/schemas.d.ts +2 -0
- package/dist/core/chart/live/schemas.d.ts.map +1 -1
- package/dist/core/chart/live/schemas.js +2 -0
- package/dist/core/chart/live/schemas.js.map +1 -1
- package/dist/core/chart/markdown-ohlcv-table.d.ts +11 -0
- package/dist/core/chart/markdown-ohlcv-table.d.ts.map +1 -0
- package/dist/core/chart/markdown-ohlcv-table.js +153 -0
- package/dist/core/chart/markdown-ohlcv-table.js.map +1 -0
- package/dist/core/chart/ohlcv-integrity.d.ts +7 -4
- package/dist/core/chart/ohlcv-integrity.d.ts.map +1 -1
- package/dist/core/chart/ohlcv-integrity.js +34 -10
- package/dist/core/chart/ohlcv-integrity.js.map +1 -1
- package/dist/core/chart/ohlcv-session-store.d.ts +2 -1
- package/dist/core/chart/ohlcv-session-store.d.ts.map +1 -1
- package/dist/core/chart/ohlcv-session-store.js +36 -7
- package/dist/core/chart/ohlcv-session-store.js.map +1 -1
- package/dist/core/chart/ohlcv-sources.d.ts +157 -0
- package/dist/core/chart/ohlcv-sources.d.ts.map +1 -0
- package/dist/core/chart/ohlcv-sources.js +206 -0
- package/dist/core/chart/ohlcv-sources.js.map +1 -0
- package/dist/core/chart/point-normalize.d.ts.map +1 -1
- package/dist/core/chart/point-normalize.js +11 -0
- package/dist/core/chart/point-normalize.js.map +1 -1
- package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
- package/dist/core/chart/prepare-from-rows.js +3 -0
- package/dist/core/chart/prepare-from-rows.js.map +1 -1
- package/dist/core/coinmarketcap/mcp-server-choice.d.ts.map +1 -1
- package/dist/core/coinmarketcap/mcp-server-choice.js +5 -2
- package/dist/core/coinmarketcap/mcp-server-choice.js.map +1 -1
- package/dist/core/coinmarketcap/schemas.d.ts +17 -17
- package/dist/core/keygen-read.d.ts +8 -0
- package/dist/core/keygen-read.d.ts.map +1 -1
- package/dist/core/keygen-read.js +26 -0
- package/dist/core/keygen-read.js.map +1 -1
- package/dist/core/keygen.d.ts +1 -8
- package/dist/core/keygen.d.ts.map +1 -1
- package/dist/core/keygen.js +2 -27
- package/dist/core/keygen.js.map +1 -1
- package/dist/core/management-signer.d.ts +3 -1
- package/dist/core/management-signer.d.ts.map +1 -1
- package/dist/core/management-signer.js +4 -4
- package/dist/core/management-signer.js.map +1 -1
- package/dist/core/mpc/address-kind.d.ts +5 -0
- package/dist/core/mpc/address-kind.d.ts.map +1 -0
- package/dist/core/mpc/address-kind.js +38 -0
- package/dist/core/mpc/address-kind.js.map +1 -0
- package/dist/core/mpc/address-kind.test.d.ts +2 -0
- package/dist/core/mpc/address-kind.test.d.ts.map +1 -0
- package/dist/core/mpc/address-kind.test.js +21 -0
- package/dist/core/mpc/address-kind.test.js.map +1 -0
- package/dist/core/mpc/broadcast-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/broadcast-sign-result.js +61 -55
- package/dist/core/mpc/broadcast-sign-result.js.map +1 -1
- package/dist/core/mpc/compose-eip712-request.d.ts +6 -0
- package/dist/core/mpc/compose-eip712-request.d.ts.map +1 -0
- package/dist/core/mpc/compose-eip712-request.js +40 -0
- package/dist/core/mpc/compose-eip712-request.js.map +1 -0
- package/dist/core/mpc/context.js +1 -1
- package/dist/core/mpc/context.js.map +1 -1
- package/dist/core/mpc/eip712-sign-request.d.ts +17 -1
- package/dist/core/mpc/eip712-sign-request.d.ts.map +1 -1
- package/dist/core/mpc/eip712-sign-request.js +114 -23
- package/dist/core/mpc/eip712-sign-request.js.map +1 -1
- package/dist/core/mpc/forge-dry-run-build.js +1 -1
- package/dist/core/mpc/forge-dry-run-build.js.map +1 -1
- package/dist/core/mpc/gas-preflight-mpa.d.ts +8 -0
- package/dist/core/mpc/gas-preflight-mpa.d.ts.map +1 -0
- package/dist/core/mpc/gas-preflight-mpa.js +21 -0
- package/dist/core/mpc/gas-preflight-mpa.js.map +1 -0
- package/dist/core/mpc/gas-preflight.d.ts +0 -5
- package/dist/core/mpc/gas-preflight.d.ts.map +1 -1
- package/dist/core/mpc/gas-preflight.js +0 -19
- package/dist/core/mpc/gas-preflight.js.map +1 -1
- package/dist/core/mpc/mpa-authority-vectm-browser.d.ts +48 -0
- package/dist/core/mpc/mpa-authority-vectm-browser.d.ts.map +1 -0
- package/dist/core/mpc/mpa-authority-vectm-browser.js +210 -0
- package/dist/core/mpc/mpa-authority-vectm-browser.js.map +1 -0
- package/dist/core/mpc/mpa-authority-vectm-read.d.ts +3314 -0
- package/dist/core/mpc/mpa-authority-vectm-read.d.ts.map +1 -0
- package/dist/core/mpc/mpa-authority-vectm-read.js +221 -0
- package/dist/core/mpc/mpa-authority-vectm-read.js.map +1 -0
- package/dist/core/mpc/mpa-authority-vectm.d.ts +63 -0
- package/dist/core/mpc/mpa-authority-vectm.d.ts.map +1 -0
- package/dist/core/mpc/mpa-authority-vectm.js +331 -0
- package/dist/core/mpc/mpa-authority-vectm.js.map +1 -0
- package/dist/core/mpc/mpa-billing-actions.d.ts +13 -35
- package/dist/core/mpc/mpa-billing-actions.d.ts.map +1 -1
- package/dist/core/mpc/mpa-billing-actions.js +154 -207
- package/dist/core/mpc/mpa-billing-actions.js.map +1 -1
- package/dist/core/mpc/mpa-billing-helpers.d.ts +16 -1
- package/dist/core/mpc/mpa-billing-helpers.d.ts.map +1 -1
- package/dist/core/mpc/mpa-billing-helpers.js +33 -9
- package/dist/core/mpc/mpa-billing-helpers.js.map +1 -1
- package/dist/core/mpc/mpa-billing-ops.d.ts +0 -11
- package/dist/core/mpc/mpa-billing-ops.d.ts.map +1 -1
- package/dist/core/mpc/mpa-billing-ops.js +41 -207
- package/dist/core/mpc/mpa-billing-ops.js.map +1 -1
- package/dist/core/mpc/mpa-fee-status.d.ts +7 -42
- package/dist/core/mpc/mpa-fee-status.d.ts.map +1 -1
- package/dist/core/mpc/mpa-fee-status.js +174 -229
- package/dist/core/mpc/mpa-fee-status.js.map +1 -1
- package/dist/core/mpc/mpa-payment-tokens.d.ts +38 -0
- package/dist/core/mpc/mpa-payment-tokens.d.ts.map +1 -0
- package/dist/core/mpc/mpa-payment-tokens.js +135 -0
- package/dist/core/mpc/mpa-payment-tokens.js.map +1 -0
- package/dist/core/mpc/mpa-top-up.d.ts.map +1 -1
- package/dist/core/mpc/mpa-top-up.js +16 -125
- package/dist/core/mpc/mpa-top-up.js.map +1 -1
- package/dist/core/mpc/register-keygen.d.ts.map +1 -1
- package/dist/core/mpc/register-keygen.js +133 -14
- package/dist/core/mpc/register-keygen.js.map +1 -1
- package/dist/core/mpc/schemas.d.ts +118 -0
- package/dist/core/mpc/schemas.d.ts.map +1 -1
- package/dist/core/mpc/schemas.js +106 -2
- package/dist/core/mpc/schemas.js.map +1 -1
- package/dist/core/mpc/trigger-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/trigger-sign-result.js +12 -7
- package/dist/core/mpc/trigger-sign-result.js.map +1 -1
- package/dist/core/node-config.d.ts +31 -0
- package/dist/core/node-config.d.ts.map +1 -0
- package/dist/core/node-config.js +238 -0
- package/dist/core/node-config.js.map +1 -0
- package/dist/core/node-database/binary.d.ts +12 -0
- package/dist/core/node-database/binary.d.ts.map +1 -0
- package/dist/core/node-database/binary.js +32 -0
- package/dist/core/node-database/binary.js.map +1 -0
- package/dist/core/node-database/database-backup.d.ts +13 -0
- package/dist/core/node-database/database-backup.d.ts.map +1 -0
- package/dist/core/node-database/database-backup.js +236 -0
- package/dist/core/node-database/database-backup.js.map +1 -0
- package/dist/core/node-database/maintenance-quiescence.d.ts +17 -0
- package/dist/core/node-database/maintenance-quiescence.d.ts.map +1 -0
- package/dist/core/node-database/maintenance-quiescence.js +42 -0
- package/dist/core/node-database/maintenance-quiescence.js.map +1 -0
- package/dist/core/node-database/management-key-files.d.ts +11 -0
- package/dist/core/node-database/management-key-files.d.ts.map +1 -0
- package/dist/core/node-database/management-key-files.js +166 -0
- package/dist/core/node-database/management-key-files.js.map +1 -0
- package/dist/core/node-database/schemas.d.ts +187 -0
- package/dist/core/node-database/schemas.d.ts.map +1 -0
- package/dist/core/node-database/schemas.js +212 -0
- package/dist/core/node-database/schemas.js.map +1 -0
- package/dist/core/node-database/signed-post.d.ts +21 -0
- package/dist/core/node-database/signed-post.d.ts.map +1 -0
- package/dist/core/node-database/signed-post.js +138 -0
- package/dist/core/node-database/signed-post.js.map +1 -0
- package/dist/core/node-database/transport.d.ts +5 -0
- package/dist/core/node-database/transport.d.ts.map +1 -0
- package/dist/core/node-database/transport.js +20 -0
- package/dist/core/node-database/transport.js.map +1 -0
- package/dist/core/registry/networks-read.d.ts +14 -0
- package/dist/core/registry/networks-read.d.ts.map +1 -0
- package/dist/core/registry/networks-read.js +117 -0
- package/dist/core/registry/networks-read.js.map +1 -0
- package/dist/core/registry/networks.d.ts +2 -8
- package/dist/core/registry/networks.d.ts.map +1 -1
- package/dist/core/registry/networks.js +3 -113
- package/dist/core/registry/networks.js.map +1 -1
- package/dist/core/rss/parse-rss.d.ts +10 -0
- package/dist/core/rss/parse-rss.d.ts.map +1 -0
- package/dist/core/rss/parse-rss.js +84 -0
- package/dist/core/rss/parse-rss.js.map +1 -0
- package/dist/core/vpn/schemas.d.ts +8 -8
- package/dist/core/vpn/schemas.js +6 -6
- package/dist/core/vpn/schemas.js.map +1 -1
- package/dist/core/vpn/vpn-files.d.ts.map +1 -1
- package/dist/core/vpn/vpn-files.js +4 -3
- package/dist/core/vpn/vpn-files.js.map +1 -1
- package/dist/core/vpn/vpn-parse.d.ts +6 -9
- package/dist/core/vpn/vpn-parse.d.ts.map +1 -1
- package/dist/core/vpn/vpn-parse.js +8 -12
- package/dist/core/vpn/vpn-parse.js.map +1 -1
- package/dist/core/world-affairs/fetch.d.ts +9 -0
- package/dist/core/world-affairs/fetch.d.ts.map +1 -0
- package/dist/core/world-affairs/fetch.js +142 -0
- package/dist/core/world-affairs/fetch.js.map +1 -0
- package/dist/core/world-affairs/index.d.ts +4 -0
- package/dist/core/world-affairs/index.d.ts.map +1 -0
- package/dist/core/world-affairs/index.js +4 -0
- package/dist/core/world-affairs/index.js.map +1 -0
- package/dist/core/world-affairs/schemas.d.ts +136 -0
- package/dist/core/world-affairs/schemas.d.ts.map +1 -0
- package/dist/core/world-affairs/schemas.js +66 -0
- package/dist/core/world-affairs/schemas.js.map +1 -0
- package/dist/core/world-affairs/sources.d.ts +20 -0
- package/dist/core/world-affairs/sources.d.ts.map +1 -0
- package/dist/core/world-affairs/sources.js +81 -0
- package/dist/core/world-affairs/sources.js.map +1 -0
- package/dist/evm/encode-calldata.d.ts +2 -0
- package/dist/evm/encode-calldata.d.ts.map +1 -1
- package/dist/evm/encode-calldata.js +64 -3
- package/dist/evm/encode-calldata.js.map +1 -1
- package/dist/evm/forge-dry-run-paths.d.ts +2 -2
- package/dist/evm/forge-dry-run-paths.d.ts.map +1 -1
- package/dist/evm/forge-dry-run-paths.js +3 -1
- package/dist/evm/forge-dry-run-paths.js.map +1 -1
- package/dist/evm/join-multisign.d.ts.map +1 -1
- package/dist/evm/join-multisign.js +4 -0
- package/dist/evm/join-multisign.js.map +1 -1
- package/dist/evm/proposal-body.d.ts +19 -0
- package/dist/evm/proposal-body.d.ts.map +1 -0
- package/dist/evm/proposal-body.js +274 -0
- package/dist/evm/proposal-body.js.map +1 -0
- package/dist/evm/proposal-builder.d.ts +4 -9
- package/dist/evm/proposal-builder.d.ts.map +1 -1
- package/dist/evm/proposal-builder.js +9 -265
- package/dist/evm/proposal-builder.js.map +1 -1
- package/dist/index.d.ts +23 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/mcp/agent-cron-jobs.js +2 -2
- package/dist/mcp/agent-cron-jobs.js.map +1 -1
- package/dist/mcp/agent-discord-search.d.ts +4 -0
- package/dist/mcp/agent-discord-search.d.ts.map +1 -0
- package/dist/mcp/agent-discord-search.js +16 -0
- package/dist/mcp/agent-discord-search.js.map +1 -0
- package/dist/mcp/agent-host-catalog.d.ts +14 -1
- package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
- package/dist/mcp/agent-host-catalog.js +25 -6
- package/dist/mcp/agent-host-catalog.js.map +1 -1
- package/dist/mcp/agent-input-coerce.d.ts.map +1 -1
- package/dist/mcp/agent-input-coerce.js +1 -0
- package/dist/mcp/agent-input-coerce.js.map +1 -1
- package/dist/mcp/agent-mcp-servers.d.ts.map +1 -1
- package/dist/mcp/agent-mcp-servers.js +5 -5
- package/dist/mcp/agent-mcp-servers.js.map +1 -1
- package/dist/mcp/agent-reddit-search.d.ts +4 -0
- package/dist/mcp/agent-reddit-search.d.ts.map +1 -0
- package/dist/mcp/agent-reddit-search.js +21 -0
- package/dist/mcp/agent-reddit-search.js.map +1 -0
- package/dist/mcp/agent-skills.d.ts.map +1 -1
- package/dist/mcp/agent-skills.js +9 -3
- package/dist/mcp/agent-skills.js.map +1 -1
- package/dist/mcp/agent-telegram-search.d.ts +4 -0
- package/dist/mcp/agent-telegram-search.d.ts.map +1 -0
- package/dist/mcp/agent-telegram-search.js +16 -0
- package/dist/mcp/agent-telegram-search.js.map +1 -0
- package/dist/mcp/agent-telegram.d.ts +4 -0
- package/dist/mcp/agent-telegram.d.ts.map +1 -0
- package/dist/mcp/agent-telegram.js +20 -0
- package/dist/mcp/agent-telegram.js.map +1 -0
- package/dist/mcp/business-latest/register.d.ts +5 -0
- package/dist/mcp/business-latest/register.d.ts.map +1 -0
- package/dist/mcp/business-latest/register.js +41 -0
- package/dist/mcp/business-latest/register.js.map +1 -0
- package/dist/mcp/chart.d.ts.map +1 -1
- package/dist/mcp/chart.js +3 -0
- package/dist/mcp/chart.js.map +1 -1
- package/dist/mcp/deferred/discovery-tools.d.ts +5 -0
- package/dist/mcp/deferred/discovery-tools.d.ts.map +1 -1
- package/dist/mcp/deferred/discovery-tools.js +69 -25
- package/dist/mcp/deferred/discovery-tools.js.map +1 -1
- package/dist/mcp/deferred/optional-endpoint-groups.d.ts +2 -2
- package/dist/mcp/deferred/optional-endpoint-groups.d.ts.map +1 -1
- package/dist/mcp/deferred/optional-endpoint-groups.js +13 -1
- package/dist/mcp/deferred/optional-endpoint-groups.js.map +1 -1
- package/dist/mcp/deferred/tool-group-map.d.ts +3 -2
- package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
- package/dist/mcp/deferred/tool-group-map.js +738 -42
- package/dist/mcp/deferred/tool-group-map.js.map +1 -1
- package/dist/mcp/defi/discovery.js +6 -6
- package/dist/mcp/defi/discovery.js.map +1 -1
- package/dist/mcp/docs/search-index.json +921 -83
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mpc-gas-docs.d.ts +2 -0
- package/dist/mcp/mpc-gas-docs.d.ts.map +1 -1
- package/dist/mcp/mpc-gas-docs.js +2 -0
- package/dist/mcp/mpc-gas-docs.js.map +1 -1
- package/dist/mcp/mpc.d.ts.map +1 -1
- package/dist/mcp/mpc.js +70 -33
- package/dist/mcp/mpc.js.map +1 -1
- package/dist/mcp/node-config.d.ts +4 -0
- package/dist/mcp/node-config.d.ts.map +1 -0
- package/dist/mcp/node-config.js +34 -0
- package/dist/mcp/node-config.js.map +1 -0
- package/dist/mcp/node-database.d.ts +4 -0
- package/dist/mcp/node-database.d.ts.map +1 -0
- package/dist/mcp/node-database.js +74 -0
- package/dist/mcp/node-database.js.map +1 -0
- package/dist/mcp/ohlcv-sources.d.ts +5 -0
- package/dist/mcp/ohlcv-sources.d.ts.map +1 -0
- package/dist/mcp/ohlcv-sources.js +54 -0
- package/dist/mcp/ohlcv-sources.js.map +1 -0
- package/dist/mcp/register.d.ts +5 -0
- package/dist/mcp/register.d.ts.map +1 -1
- package/dist/mcp/register.js +26 -0
- package/dist/mcp/register.js.map +1 -1
- package/dist/mcp/resources/agent-cron-jobs.md +3 -1
- package/dist/mcp/resources/agent-mcp-servers.md +99 -1
- package/dist/mcp/resources/agent-skills.md +10 -6
- package/dist/mcp/resources/agent-social-search.md +78 -0
- package/dist/mcp/resources/agent-telegram-search.md +24 -0
- package/dist/mcp/resources/agent-telegram.md +18 -0
- package/dist/mcp/resources/agent-webhooks.md +2 -0
- package/dist/mcp/resources/business-latest.md +26 -0
- package/dist/mcp/resources/chart-analysis.md +4 -0
- package/dist/mcp/resources/chart.md +16 -4
- package/dist/mcp/resources/discord-guilds.yaml +46 -0
- package/dist/mcp/resources/management-signer.md +2 -1
- package/dist/mcp/resources/mpc.md +37 -30
- package/dist/mcp/resources/node-config.md +142 -0
- package/dist/mcp/resources/node-database.md +64 -0
- package/dist/mcp/resources/overview.md +13 -0
- package/dist/mcp/resources/social-search.yaml +79 -0
- package/dist/mcp/resources/telegram-channels.yaml +47 -0
- package/dist/mcp/resources/user-folder.md +44 -0
- package/dist/mcp/resources/vpn.md +10 -8
- package/dist/mcp/resources/world-affairs.md +28 -0
- package/dist/mcp/server/http-transport.d.ts +3 -0
- package/dist/mcp/server/http-transport.d.ts.map +1 -1
- package/dist/mcp/server/http-transport.js +3 -2
- package/dist/mcp/server/http-transport.js.map +1 -1
- package/dist/mcp/server/index.js +8 -1
- package/dist/mcp/server/index.js.map +1 -1
- package/dist/mcp/server/telegram-search-internal.d.ts +3 -0
- package/dist/mcp/server/telegram-search-internal.d.ts.map +1 -0
- package/dist/mcp/server/telegram-search-internal.js +54 -0
- package/dist/mcp/server/telegram-search-internal.js.map +1 -0
- package/dist/mcp/user-folder.d.ts +4 -0
- package/dist/mcp/user-folder.d.ts.map +1 -0
- package/dist/mcp/user-folder.js +32 -0
- package/dist/mcp/user-folder.js.map +1 -0
- package/dist/mcp/vpn.js +7 -7
- package/dist/mcp/vpn.js.map +1 -1
- package/dist/mcp/world-affairs/register.d.ts +5 -0
- package/dist/mcp/world-affairs/register.d.ts.map +1 -0
- package/dist/mcp/world-affairs/register.js +41 -0
- package/dist/mcp/world-affairs/register.js.map +1 -0
- package/dist/schemas/extended.d.ts +600 -1
- package/dist/schemas/extended.d.ts.map +1 -1
- package/dist/schemas/extended.js +355 -1
- package/dist/schemas/extended.js.map +1 -1
- package/package.json +9 -3
|
@@ -31,9 +31,20 @@ Shared optional fields on most create inputs: `purpose`, `useCustomGas`, `starti
|
|
|
31
31
|
- **Get Sig** (`trigger_sign_result`) refreshes fees via `feeSpeedTier` (default from `defaultGetSigFeeSpeed`).
|
|
32
32
|
- **MCP `build_*_multisign` tools** auto-submit and return `{ requestId }`. Treat `requestId` as success — do not call the same build tool again; use `list_sign_requests` to verify duplicates.
|
|
33
33
|
|
|
34
|
+
- `claim_node_withdraw_authority`
|
|
35
|
+
- Sign EIP-712 `NodeAuthorityClaim` on the node and relay `claimNodeWithdrawAuthority`. Required before register. Do not batch with register.
|
|
34
36
|
- `register_key_gen_on_linea`
|
|
35
|
-
- Register KeyGen with MultiSignAgentWallet on Linea
|
|
36
|
-
- Input: `keyGenId`; optional `purpose`, `useCustomGas`, `startingNonce`.
|
|
37
|
+
- Register KeyGen with MultiSignAgentWallet on the configured fee chain (currently Linea Mainnet 59144) via `register(keyGenId, addressKind, nodeKey, globalNonce, groupId)`.
|
|
38
|
+
- Input: `keyGenId`; optional `groupId` (defaults to `/getKeyGenGroupId`), `executorKeyGenId`, `purpose`, `useCustomGas`, `startingNonce`.
|
|
39
|
+
- Each KeyGen type has its own signature accounting. The same `groupId` shares a veCTM waiver. Do not batch with attach.
|
|
40
|
+
- `unregister_key_gen_on_linea`
|
|
41
|
+
- Delete the KeyGen billing account on this node. `confirm` must be true.
|
|
42
|
+
- `create_mpa_withdraw_multi_sign_request`
|
|
43
|
+
- Withdraw prepaid node credit (`withdrawCredit` or `withdrawCtmCredit` via `paymentToken`; `withdrawFeeCredit` when `token` is set).
|
|
44
|
+
- `get_ve_ctm_attach_status` / `attach_ve_ctm_to_node` / `request_ve_ctm_detach`
|
|
45
|
+
- Compose `attachVeCtm(nodeKey, tokenId, nodeInfo)` on the fee contract — separate from register. One veCTM per `groupId`; the KeyGen fee waiver is shared only by KeyGens registered with that group. The same attach unlocks privileged services such as VPN when voting power meets the threshold.
|
|
46
|
+
- Attach does not activate the billing month. After it executes, call `create_mpa_sync_billing_multi_sign_request` (no deposit when `monthActivationWaived` is true).
|
|
47
|
+
- Tools fail with "veCTM is not live on the fee contract yet" until `nodeProperties`, `rewards`, and `ve` are set.
|
|
37
48
|
- `transfer_native_gas`
|
|
38
49
|
- Native gas transfer (send gas).
|
|
39
50
|
- Input: `keyGenId`, `chainId`, `toAddress`, `amountWei`; optional shared fields.
|
|
@@ -52,13 +63,18 @@ Shared optional fields on most create inputs: `purpose`, `useCustomGas`, `starti
|
|
|
52
63
|
- `create_compose_multi_sign_request`
|
|
53
64
|
- Build a request from one or more compose actions (custom contract calls).
|
|
54
65
|
- Input: `keyGenId`, `chainId`, `actions[]` (`signature`, `contractAddress`, `args[]`, optional `valueWei`); optional shared fields.
|
|
66
|
+
- `create_compose_eip712_multi_sign_request`
|
|
67
|
+
- Build a request from one or more EIP-712 typed-data signatures (same-kind batch; no EVM gas).
|
|
68
|
+
- Input: `keyGenId`, `chainId`, `signatures[]` (`typedData` + optional `delivery`; default `delivery.kind` is `none`); optional `purpose`.
|
|
69
|
+
- `extraJSON.eip712` is always an array. Get Sig omits `txParams`; Execute delivers each leg or exports signature hexes.
|
|
55
70
|
- `create_forge_multi_sign_request`
|
|
56
71
|
- Build a request from Foundry broadcast JSON.
|
|
57
72
|
- Input: `keyGenId`, `broadcast` (`transactions[]` with `transaction` or `tx` objects); optional `destinationChainID`, `overrideSender`, `startingNonce`, and shared fields.
|
|
58
73
|
- `import_forge_dry_run_multi_sign_request`
|
|
59
74
|
- Import a Foundry dry-run file (`run-latest.json`) from `user_folder` — same parser as the node app Compose “Import from Foundry broadcast” flow.
|
|
60
|
-
- Input: `keyGenId`; exactly one of `dryRunFilePath` (under `user_folder
|
|
61
|
-
-
|
|
75
|
+
- Input: `keyGenId`; exactly one of `dryRunFilePath` (under `user_folder`) or `dryRunJson`; optional `refreshStaleNonces` (default true), `useCustomGas`, `startingNonce`, `purpose`.
|
|
76
|
+
- Paths: native `forge script` with cwd `evm/` writes `evm/broadcast/<Script>.s.sol/<chainId>/dry-run/run-latest.json`. Foundry MCP is preferred when loaded (`foundry__forge_script` → `.mcp-foundry-workspace/broadcast/.../dry-run/run-latest.json`). If Foundry MCP is not loaded, say so once and use the native `evm/broadcast/` path. Default `useCustomGas: false`; do not stop the import to ask about gas unless the operator mentioned custom gas.
|
|
77
|
+
- A copy is written to `data/artifacts/forge/<chainId>/<script>/run-latest.json` when possible.
|
|
62
78
|
- `build_forge_dry_run_multi_sign_payload`
|
|
63
79
|
- Build (do not submit) a multiSign helper from a dry-run file. Writes `data/artifacts/multisign/forge-dry-run/<chainId>/<script>/helper.json` plus a forge mirror under `data/artifacts/forge/`.
|
|
64
80
|
- Same inputs as `import_forge_dry_run_multi_sign_request`. Returns `{ bodyForSign, messageToSign, chainId, count, helperArtifactPath, … }`.
|
|
@@ -75,34 +91,23 @@ Shared optional fields on most create inputs: `purpose`, `useCustomGas`, `starti
|
|
|
75
91
|
- `get_mpa_wallet_status`
|
|
76
92
|
- Read MPA KeyGen billing status (node `/getFeeStatusByKeyGenId` merged with on-chain subscription).
|
|
77
93
|
- Input: `keyGenId`.
|
|
78
|
-
- Returns registration, credit
|
|
94
|
+
- Returns registration, fee-token credit (`remainingDeposit`, `remainingDepositWei`, `feeTokenSymbol` fetched on-chain), CTM credit (`remainingCtmCredit`, `remainingCtmCreditWei`, `ctmTokenSymbol`), monthly fee, `fundedForCurrentMonth`, waiver flags (`monthActivationWaived`, `qualifiesForVeCtmWaiver`, `qualifiesForNodeTrial`), signing credits, and pay-month hints (`canPayMonthFromCredit`, `payMonthDisabledReason`). When `fundedForCurrentMonth` is false, pay with `create_mpa_sync_billing_multi_sign_request` (that tool deposits the shortfall unless `monthActivationWaived`).
|
|
79
95
|
- `create_mpa_top_up_multi_sign_request`
|
|
80
|
-
- Create batch `multiSignRequest` (
|
|
81
|
-
- Input: `keyGenId`, `amountWei`; optional `activateBillingMonthAfterDeposit` (append `syncBilling` when month inactive and post-deposit pool covers monthly fee), shared fields.
|
|
82
|
-
-
|
|
96
|
+
- Create batch `multiSignRequest` (ERC-20 `approve` when needed + `deposit` or `depositCtm`) to top up MPA KeyGen credits on Linea.
|
|
97
|
+
- Input: `keyGenId`, `amountWei`; optional `paymentToken` (`fee` default or `ctm`), `activateBillingMonthAfterDeposit` (append `syncBilling` when month inactive and post-deposit pool covers monthly fee, or when veCTM/trial waives the month), shared fields.
|
|
98
|
+
- Chosen token must be on the KeyGen executor. By default does not activate the billing month.
|
|
83
99
|
- `create_mpa_sync_billing_multi_sign_request`
|
|
84
|
-
- Pay/activate the current KeyGen billing month
|
|
85
|
-
- Input: `keyGenId`; optional `globalNonce`, shared fields.
|
|
86
|
-
- Requires inactive billing month
|
|
100
|
+
- Pay/activate the current KeyGen billing month. Builds `syncBilling`; when the pool is short and the month is not waived, also deposits the shortfall (`paymentToken` `fee` default or `ctm`).
|
|
101
|
+
- Input: `keyGenId`; optional `paymentToken`, `executorKeyGenId` (authority secp256k1 when the billed KeyGen is not the withdraw authority), `globalNonce`, shared fields.
|
|
102
|
+
- Requires inactive billing month. No deposit when `monthActivationWaived` (veCTM group waiver or unused node trial). Uses node-reported global nonce when `globalNonce` is omitted.
|
|
87
103
|
- `create_mpa_overage_purchase_multi_sign_request`
|
|
88
104
|
- Purchase extra signing credits via `purchaseOverageSignatures(string,string,uint256)` after the billing month is active.
|
|
89
105
|
- Input: `keyGenId`, `signatureCount`; optional shared fields.
|
|
90
|
-
- Withdraw authority debits the credit pool; non-authority executors include
|
|
91
|
-
- `
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
- `create_mpa_vpn_deposit_multi_sign_request`
|
|
96
|
-
- Deposit VPN credits via `depositVpn(string,bytes32,uint256,bool)` (approve + deposit when needed).
|
|
97
|
-
- Input: `keyGenId`, `hostIpAddress`, `amountWei`; optional `activateOnDeposit`, `nodeKey`, shared fields.
|
|
98
|
-
- `create_mpa_sync_vpn_billing_multi_sign_request`
|
|
99
|
-
- Activate VPN billing month via `syncVpnBilling(string,bytes32)` when the VPN credit pool covers the monthly fee.
|
|
100
|
-
- Input: `keyGenId`, `hostIpAddress`; optional `nodeKey`, shared fields.
|
|
101
|
-
- KeyGen executor must be the VPN withdraw authority.
|
|
102
|
-
- `get_mpa_vpn_status`
|
|
103
|
-
- Read VPN MPA billing status (node `/getVpnFeeStatus` merged with on-chain subscription).
|
|
104
|
-
- Input: `hostIpAddress`; optional `nodeKey`.
|
|
105
|
-
- Returns `vpnBillingRegistered`, `vpnBillingMonthActive`, credit pool, monthly fee, and pay-month hints (`canPayMonthFromCredit`, `payMonthDisabledReason`).
|
|
106
|
+
- Withdraw authority debits the credit pool; non-authority executors include fee-token `approve` for the overage fee.
|
|
107
|
+
- `get_node_privilege_status`
|
|
108
|
+
- Read whether this node may use privileged services such as VPN (GET `/getNodePrivilegeStatus`).
|
|
109
|
+
- Returns `entitled`, `source` (`vectm_attach`), `paused`, `hasattachedvectm`, `meetsthreshold`, `tokenid`, `thresholdpower`.
|
|
110
|
+
- Attach a veCTM NFT that meets `veCtmThresholdPower`. Node trial does not grant privileged services.
|
|
106
111
|
|
|
107
112
|
### Sign request lifecycle
|
|
108
113
|
|
|
@@ -191,9 +196,11 @@ List/get tools return **compact summaries** by default (small fields: `requestId
|
|
|
191
196
|
## MPA on Linea flow
|
|
192
197
|
|
|
193
198
|
1. Complete KeyGen and fetch the result (`fetch_key_gen_result`).
|
|
194
|
-
2.
|
|
195
|
-
3.
|
|
196
|
-
4.
|
|
199
|
+
2. Claim node withdraw authority — `claim_node_withdraw_authority`.
|
|
200
|
+
3. Register on Linea — `register_key_gen_on_linea`.
|
|
201
|
+
4. Check wallet — `get_mpa_wallet_status`.
|
|
202
|
+
5. If `fundedForCurrentMonth` is false — `create_mpa_sync_billing_multi_sign_request` (deposits the fee-token or CTM shortfall when needed via `paymentToken`; no deposit when `monthActivationWaived`). Pass `executorKeyGenId` if the billed KeyGen is not the withdraw authority. Then run the multi-sign flow above.
|
|
203
|
+
6. Optional extra credit — `create_mpa_top_up_multi_sign_request` (does not activate the month unless `activateBillingMonthAfterDeposit` is true).
|
|
197
204
|
|
|
198
205
|
## List filters
|
|
199
206
|
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Path A — configure a node from an external MCP client
|
|
2
|
+
|
|
3
|
+
An external agent (Claude, Cursor, Grok) talks to **`http://127.0.0.1:8446/mcp`** after the operator opens an SSH tunnel. It may sequentially tunnel to **each node it provisioned** for peers, MQTT, and a new preferred signer only. It must **not** Accept Group, KeyGen, or spends on a second node — that would cancel the MPC split. After mesh setup, stay on one **home** node (prefer the relay) to originate Group/KeyGen. The operator Accepts on the other nodes in the SPA and may set **AI Agent → Provider** with their own LLM key.
|
|
4
|
+
|
|
5
|
+
**Published playbook (discover before or after connect):** `search_continuum_docs` → `get_continuum_doc` path `ContinuumDAO/MPAWallet/AgentProvision`. Humans: [Install a node](https://docs.continuumdao.org/ContinuumDAO/MPAWallet/Install). Oneshot flags: [CREATE_NODE_ONESHOT.md](https://github.com/ContinuumDAO/mpc-config/blob/main/docs/CREATE_NODE_ONESHOT.md).
|
|
6
|
+
|
|
7
|
+
Peer/relay write, MQTT TLS get/set, and restart gate tools (`set_configured_nodes`, `get_mqtt_tls_public_key`, `set_mqtt_tls_key`, `get_maintenance_restart_gate`) are on **static tools/list** — call them directly. Do not wait on `activate_tool_group`. Read peers with **`get_configured_node_keys`** (`node_info`).
|
|
8
|
+
|
|
9
|
+
## 0. Ask which topology before renting anything
|
|
10
|
+
|
|
11
|
+
Do not default to “rent two VPS from the same provider.”
|
|
12
|
+
|
|
13
|
+
**Recommend redundancy plus diversity** whenever the user will control more than one node (option A, and invitees in C):
|
|
14
|
+
|
|
15
|
+
- **Node redundancy:** prefer **2-of-3** (or higher `N` with `gate < N`) so one lost VPS does not freeze the wallet. 2/2 has no spare.
|
|
16
|
+
- **Different regions:** put nodes in distinct geographic regions (and AZs if the provider exposes them) so one outage or routing event does not hit the whole set.
|
|
17
|
+
- **Different VPS providers:** do not colocate the set on a single cloud. One provider ban, billing failure, or regional incident should not take every node offline.
|
|
18
|
+
|
|
19
|
+
The relay is still a single MQTT hub — say that clearly — but signing nodes should not share provider and region with each other (or with the relay, if they can avoid it).
|
|
20
|
+
|
|
21
|
+
| Option | Tell the user | Rent / oneshot | Then |
|
|
22
|
+
|--------|---------------|----------------|------|
|
|
23
|
+
| **A — Standalone set they control** | They run every signing node. Ask **how many can die** before the wallet is stuck. **Recommend 2-of-3**, split across **regions and providers**. | **N** Ubuntu/Debian VPS | Same relay (first slot) on every node. MQTT key from relay → others. Group + KeyGen with chosen **gate**. |
|
|
24
|
+
| **B — Join an established group** | Someone already has a relay. | **One** VPS | Prefer a **different region and provider** than the existing peers. Import **relay IP** + **MQTT TLS public key**. Do not invent a second relay. |
|
|
25
|
+
| **C — This node is the relay; invite others** | They host MQTT. | **One** VPS to start | `get_mqtt_tls_public_key` and share IP + PEM. Invitees run B; ask them to use other regions/providers. |
|
|
26
|
+
|
|
27
|
+
### Option A — 2/2 vs extra nodes for safety
|
|
28
|
+
|
|
29
|
+
| Sub-choice | Nodes (N) | KeyGen `gate` | If one node is lost |
|
|
30
|
+
|------------|-----------|---------------|---------------------|
|
|
31
|
+
| **2/2** | 2 | 2 | Cannot sign until that node is restored. Smallest pair only if they accept that risk. Still use **two providers / two regions**. |
|
|
32
|
+
| **Safer (recommend this)** | 3 | 2 (2-of-3) | The other two still reach gate 2. **Default ask.** Three VPS, three regions if possible, at least two providers. |
|
|
33
|
+
| **More slack** | 4+ | e.g. 2-of-4 or 3-of-5 | Can lose `N − gate` nodes. Keep spreading region and provider as N grows. |
|
|
34
|
+
|
|
35
|
+
`gate` is the signing threshold (`2 ≤ gate ≤ N`). Loss-safety requires **gate < N**. Redundancy without diversity (three droplets in one region on one account) is a weak spare.
|
|
36
|
+
|
|
37
|
+
One installed node cannot finish a KeyGen alone. MQTT key is an **invite secret** (relay → peers), not a public paste. Every collaborator must use the **same first/relay IPv4**.
|
|
38
|
+
|
|
39
|
+
**VPS rental is out of scope.** Continuum does not buy machines. After the user picks a topology, tell them (or Claude with their cloud account) to rent the matching Ubuntu/Debian VPS count with public IPv4 and `ssh root@`, **not all from one panel**. x402 or any other pay-for-VM path is optional and external.
|
|
40
|
+
|
|
41
|
+
## 1. Credentials — two different moments
|
|
42
|
+
|
|
43
|
+
The oneshot installer (`install-node-debian-ubuntu.sh`) **must run as root on the VPS**. Typical: `ssh root@VPS` then paste curl|bash, or pipe the script over SSH.
|
|
44
|
+
|
|
45
|
+
| Secret | Oneshot | Path A MCP / later |
|
|
46
|
+
|--------|---------|--------------------|
|
|
47
|
+
| Root password or root SSH key | Needed if Claude or the user runs the oneshot as root | Do not keep in the agent after install |
|
|
48
|
+
| `mpcnode` login password | **Not set by oneshot** — emit `ssh root@IP 'passwd mpcnode'` next | User-only (SSH / SPA attach). Not needed for MCP |
|
|
49
|
+
| Bootstrap / `added_keys` | — | On the node bind-mount; MCP signs with it |
|
|
50
|
+
| LLM API key | — | User, **AI Agent → Provider** after attach |
|
|
51
|
+
|
|
52
|
+
Prefer: user runs oneshot, or Claude uses a **root SSH key**. Putting the root password in chat is last resort.
|
|
53
|
+
|
|
54
|
+
**Right after oneshot succeeds**, give a copy-paste password command. Oneshot creates `mpcnode` with `--disabled-password`; `ssh mpcnode@` will fail until they set one. They run this on **this PC**; `passwd` prompts twice. Do not collect the password in chat:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
ssh root@YOUR_VPS_PUBLIC_IP 'passwd mpcnode'
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
After install, Claude does **not** need root or `mpcnode` to call MCP.
|
|
61
|
+
|
|
62
|
+
## 2. SSH tunnel (user-owned)
|
|
63
|
+
|
|
64
|
+
MCP HTTP has **no auth** — keep it on loopback.
|
|
65
|
+
|
|
66
|
+
**Give one copy-paste OpenSSH line** for the VPS you are on **now** (sequential: stop `-N`, new IPv4, same local **8446**). Do not remap ports unless the user asks. Same style as the SPA **Node hosted app (SSH tunnel)** box. Run on **this PC**, leave it open (`-N`). User **`mpcnode`**, not `root` — only after `passwd mpcnode` succeeded. The SPA’s three-port command (3333 / 8080 / 18080) does **not** forward MCP — Path A needs **8446**. Prefer all four forwards:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
ssh -4 -N \
|
|
70
|
+
-L 127.0.0.1:8446:127.0.0.1:8446 \
|
|
71
|
+
-L 127.0.0.1:3333:127.0.0.1:3333 \
|
|
72
|
+
-L 127.0.0.1:8080:127.0.0.1:8080 \
|
|
73
|
+
-L 127.0.0.1:18080:127.0.0.1:18080 \
|
|
74
|
+
mpcnode@YOUR_NODE_PUBLIC_IP
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
MCP-only: `ssh -4 -N -L 127.0.0.1:8446:127.0.0.1:8446 mpcnode@YOUR_NODE_PUBLIC_IP`. Do not bind `0.0.0.0`.
|
|
78
|
+
|
|
79
|
+
| Local port | Remote | Who |
|
|
80
|
+
|------------|--------|-----|
|
|
81
|
+
| **8446** | `continuum-mcp` `/mcp` | User opens; Claude uses |
|
|
82
|
+
| **3333** | node-app | User attach (hand-off) |
|
|
83
|
+
| **8080** | management HTTP | SPA attach |
|
|
84
|
+
| **18080** | public discovery | SPA attach |
|
|
85
|
+
|
|
86
|
+
Point the MCP client at `http://127.0.0.1:8446/mcp`. First node calls: `get_health` or `node_id`.
|
|
87
|
+
|
|
88
|
+
## 3. Peer / relay and MQTT tools
|
|
89
|
+
|
|
90
|
+
On **each node you provisioned**, one tunnel at a time (relay first):
|
|
91
|
+
|
|
92
|
+
1. `set_configured_nodes` with the same `peers: [relayIpv4, ...otherIpv4]`.
|
|
93
|
+
2. On the **relay**: `get_mqtt_tls_public_key`. On each other provisioned node: `set_mqtt_tls_key` with that PEM.
|
|
94
|
+
3. Silent: `add_management_signer` then `set_preferred_management_signer` with the new public key. Do not leave bootstrap as preferred.
|
|
95
|
+
4. `get_maintenance_restart_gate` (optional). Operator runs **`docker compose restart`** on that VPS. There is no MCP reboot tool.
|
|
96
|
+
5. `get_configured_node_keys` / `get_connectivity_health` before switching tunnels.
|
|
97
|
+
|
|
98
|
+
Do **not** `create_group_request`, `accept_group_request`, `create_key_gen_request`, or `accept_key_gen_request` except from the **home** node after mesh setup — and never Accept on a second node. Do not MCP nodes you did not provision.
|
|
99
|
+
|
|
100
|
+
`set_configured_nodes` writes `configs.yaml` via `POST /configUpdatePlan` + `POST /configUpdateImplement`. Changes apply after restart.
|
|
101
|
+
|
|
102
|
+
## 4. Topology playbooks (Path A MCP)
|
|
103
|
+
|
|
104
|
+
### A1 — 2/2 (only if they accept no spare node)
|
|
105
|
+
|
|
106
|
+
1. Oneshot on two VPS in **different regions**, ideally **different providers**. Sequential tunnels: peers + MQTT + new signer on **both**.
|
|
107
|
+
2. Stay on the **relay**. `get_connectivity_health`.
|
|
108
|
+
3. `create_group_request` / `create_key_gen_request` (`gate: 2`) from the relay only. User **Accepts** on the other node.
|
|
109
|
+
|
|
110
|
+
### A2 — 2-of-3 (recommended)
|
|
111
|
+
|
|
112
|
+
Same as A1 with **three** VPS — **different regions**, **at least two providers**. Sequential tunnels for peers/MQTT/signer on all three (`peers: [relay, a, b]`). Stay on the relay. Group all three IDs. KeyGen `gate: 2`. User Accepts on the other two.
|
|
113
|
+
|
|
114
|
+
### B — Join existing
|
|
115
|
+
|
|
116
|
+
1. Oneshot on one VPS. Prefer a **region and provider** the existing group does not already use.
|
|
117
|
+
2. Get **relay IPv4** and **MQTT PEM** from the existing operators.
|
|
118
|
+
3. `set_configured_nodes` with their full peer list (their relay first). `set_mqtt_tls_key`. Restart. Accept/create group as they instruct.
|
|
119
|
+
|
|
120
|
+
### C — Become relay and invite
|
|
121
|
+
|
|
122
|
+
1. Oneshot on one VPS. `set_configured_nodes` with at least `[thisPublicIpv4]` (add invitee IPs when known).
|
|
123
|
+
2. `get_mqtt_tls_public_key`. Give invitees: public IP, relay slot, PEM.
|
|
124
|
+
3. They run playbook B on VPS in **other regions / providers**. Add their IPs and restart when the list grows. Group/KeyGen only after enough healthy peers for the chosen gate. Prefer a 2-of-3+ gate so the mesh has node redundancy.
|
|
125
|
+
|
|
126
|
+
## 5. Hand-off to the user
|
|
127
|
+
|
|
128
|
+
Do **not** stop after peers / MQTT / restart and send them to the long docs. **Speak a short next-steps checklist.** After mesh setup, leave the tunnel on the **home** node (relay). Originate Group and KeyGen **there only**. The user Accepts on every other node in the SPA.
|
|
129
|
+
|
|
130
|
+
When `get_connectivity_health` is healthy on the home node:
|
|
131
|
+
|
|
132
|
+
0. Preferred signer is already done on each provisioned node in §3 (silent). If you skipped a node, do it before Group.
|
|
133
|
+
1. **Group** — `create_group_request` with the topology `node_id`s. You are auto-agreed. User **Accepts** on the other members (unanimous).
|
|
134
|
+
2. **KeyGen** — `create_key_gen_request` with the agreed **gate** (prefer 2-of-3). User Accepts on the other nodes. Confirm with `fetch_key_gen_result`.
|
|
135
|
+
3. **Register (preferred KeyGen)** — `post_preferred_key_gen` on the node they will compose from. UI: **AI Agent → Provider**. Without this, compose/agent has no default wallet.
|
|
136
|
+
4. **Attach** — `https://mpa.continuumdao.org` (tunnel **3333** if needed) so they can see Accept and the new address.
|
|
137
|
+
5. `mpcnode` password already set after oneshot; if not, `ssh root@IP 'passwd mpcnode'`.
|
|
138
|
+
6. Optional later: **AI Agent → Provider** LLM key (no MCP tool), chains, tokens.
|
|
139
|
+
|
|
140
|
+
## 6. Local PC later (Windows 11 / macOS) — not in this flow
|
|
141
|
+
|
|
142
|
+
Do **not** run the Debian oneshot on the user’s laptop. Humans install via **node map → your own PC**: Docker Desktop (WSL2 on Windows), Continuum extension, public WAN IPv4, router port-forward + DHCP MAC bind. Agents cannot reliably drive Docker Desktop GUI, router admin, or CGNAT. After a human-installed Desktop node exists, the same tunnel to **8446** + these tools still apply.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Node database and management keys
|
|
2
|
+
|
|
3
|
+
Encrypted MongoDB backup/restore and on-disk Ed25519 management key files. Activate deferred groups before use (`search_continuum_tools` / `activate_tool_group`):
|
|
4
|
+
|
|
5
|
+
| Pack | Router alias | Tools |
|
|
6
|
+
|------|----------------|-------|
|
|
7
|
+
| **`node_database:backup`** | `node:db-backup` | list/check/backup/restore, fetch/post backup, maintenance prep |
|
|
8
|
+
| **`node_database:bootstrap`** | `node:bootstrap-key` | fetch/post/remove bootstrap seed |
|
|
9
|
+
| **`node_database:added-keys`** | `node:added-keys` | fetch/post/remove added signer key files |
|
|
10
|
+
|
|
11
|
+
Legacy **`node_database`** expands to all three packs.
|
|
12
|
+
|
|
13
|
+
## Operator approval (agent host)
|
|
14
|
+
|
|
15
|
+
These tools require **interactive human approval** in the agent chat UI before the host executes them:
|
|
16
|
+
|
|
17
|
+
- **`restore_database`** — destructive; wipes and replaces databases in the backup envelope.
|
|
18
|
+
- **`remove_bootstrap_key`** — deletes the bootstrap seed file; without an off-node backup you may lose decrypt/recovery ability.
|
|
19
|
+
|
|
20
|
+
They still require their normal tool arguments (e.g. `confirmRestore: true` for restore). Cron/specialist runs without approval UI are blocked.
|
|
21
|
+
|
|
22
|
+
## Prerequisites
|
|
23
|
+
|
|
24
|
+
- Management signing configured (preferred Ed25519 signer with local private key).
|
|
25
|
+
- **Deterministic nodeKey** + bootstrap seed for backup/export routes (legacy random-nodeKey nodes get 403).
|
|
26
|
+
- **HTTPS or loopback** management URL for `fetch_*` key/backup download routes.
|
|
27
|
+
|
|
28
|
+
## Maintenance quiescence
|
|
29
|
+
|
|
30
|
+
Backup, restore, and sensitive fetch tools call **`request_maintenance_restart_prep`** and poll **`get_maintenance_restart_gate`** until `readyForProcessExit` unless `skipQuiescence: true`. Bootstrap/added key post/remove are **not** drained.
|
|
31
|
+
|
|
32
|
+
## Backup workflow
|
|
33
|
+
|
|
34
|
+
1. **`list_database_backups`** — existing backups.
|
|
35
|
+
2. **`backup_database`** — create encrypted snapshot under `database_backups/`.
|
|
36
|
+
3. **`fetch_database_backup`** — download to `userFolderPath` (e.g. `data/backups/<backupId>`) or small `contentBase64`.
|
|
37
|
+
4. **`post_database_backup`** — upload from `userFolderPath` or base64.
|
|
38
|
+
5. **`restore_database`** — **destructive**; requires `confirmRestore: true`.
|
|
39
|
+
|
|
40
|
+
## Bootstrap key files
|
|
41
|
+
|
|
42
|
+
| Tool | Route |
|
|
43
|
+
|------|--------|
|
|
44
|
+
| `fetch_bootstrap_key` | Export seed (TLS/loopback) |
|
|
45
|
+
| `post_bootstrap_key` | Install `bootstrap_key/ed25519_private.hex` |
|
|
46
|
+
| `remove_bootstrap_key` | Delete bootstrap seed file |
|
|
47
|
+
|
|
48
|
+
## Added signer key files
|
|
49
|
+
|
|
50
|
+
Requires **`POST /addManagementKey`** first (Mongo + one-time PEM at creation). These tools manage **disk copies** under `added_keys/`:
|
|
51
|
+
|
|
52
|
+
| Tool | Route |
|
|
53
|
+
|------|--------|
|
|
54
|
+
| `fetch_added_management_key` | Export PEM + seed by `publicKeyHex` |
|
|
55
|
+
| `post_added_management_key` | Install `added_key_<N>` when absent |
|
|
56
|
+
| `remove_added_management_key` | Delete PEM + `.pub` only |
|
|
57
|
+
|
|
58
|
+
Use **`remove_management_signer`** to soft-remove the key from Mongo lifecycle.
|
|
59
|
+
|
|
60
|
+
## Security
|
|
61
|
+
|
|
62
|
+
- Never paste private keys or backup ciphertext into follow-up chat.
|
|
63
|
+
- Restore wipes databases present in the backup envelope.
|
|
64
|
+
- Prefer **`user_folder`** paths over inline base64 for backups >4 MiB.
|
|
@@ -11,6 +11,7 @@ This server helps an MCP client operate a Continuum node through safe, structure
|
|
|
11
11
|
## What this server is for
|
|
12
12
|
|
|
13
13
|
- Discover node state and health (`version`, `get_machine_info`, `get_node_id`, `health`, `connectivity_health`, `logs`).
|
|
14
|
+
- Path A node config (`node-config.md`): topology (prefer 2-of-3+ with nodes in different regions and VPS providers), tunnel to `:8446`, `set_configured_nodes`, MQTT TLS get/set, host compose restart. User attach + optional Provider stay with the operator. To **provision** a new VPS node, first `search_continuum_docs` / `get_continuum_doc` path `ContinuumDAO/MPAWallet/AgentProvision`.
|
|
14
15
|
- Manage EdDSA management keys and signer selection (`list_management_keys`, `create_eddsa_management_keypair`, `add_eddsa_management_key`, `set_preferred_management_key`, `get_preferred_management_key`).
|
|
15
16
|
- Coordinate group lifecycle (`list_available_node_ids`, `list_valid_group_node_sets`, `create_group_request`, `accept_group_request`).
|
|
16
17
|
- Coordinate MPC key generation (`create_key_gen_request`, `accept_key_gen_request`, `list_key_gen_requests`, `fetch_key_gen_result`, `get_preferred_key_gen`, `post_preferred_key_gen`, and related tools in `keygen.md`).
|
|
@@ -19,6 +20,9 @@ This server helps an MCP client operate a Continuum node through safe, structure
|
|
|
19
20
|
- Manage the token registry (`get_token_registry`, `add_to_token_registry`, `remove_from_token_registry`).
|
|
20
21
|
- Manage the chain registry (`get_chain_registry`, `add_to_chain_registry`, `remove_from_chain_registry`).
|
|
21
22
|
- Manage agent MCP servers on the node (`list_mcp_servers`, `add_mcp_server_from_catalog`, `get_mcp_server`, `add_mcp_server`, `remove_mcp_server`) — see `agent-mcp-servers.md`.
|
|
23
|
+
- Manage agent skills (`list_skills`, `add_skill_from_catalog`, `add_skill`, `reset_skills_from_defaults`) — see `agent-skills.md`.
|
|
24
|
+
- Manage user_folder workspace files (`list_user_folder`, `get_user_folder_file`, `write_user_folder_file`) — see `user-folder.md`.
|
|
25
|
+
- Encrypted MongoDB backup/restore and management key files (`list_database_backups`, `backup_database`, `restore_database`, bootstrap/added key tools) — activate deferred group **`node_database`**; see `node-database.md`.
|
|
22
26
|
- **`prepare_chart`** — build `continuum/chart/v1` payloads for agent chat charts (multi-series OHLCV, lines, overlays) — see `chart.md`.
|
|
23
27
|
- Optional **Technical indicators** MCP (catalog id `technical-indicators`, not loaded by default): add from catalog and enable **Initial load** when needed — `list_technical_indicators`, `calculate_technical_indicator`.
|
|
24
28
|
- Optional **VPN** MCP (catalog id `vpn`, not loaded by default): admin WireGuard and peer egress tools — add from catalog and enable **Initial load** when needed. MPA VPN billing multisign tools remain on this server (`mpc.md`).
|
|
@@ -48,6 +52,14 @@ This server helps an MCP client operate a Continuum node through safe, structure
|
|
|
48
52
|
|
|
49
53
|
5. Repeat for additional groups, keys, and signing operations.
|
|
50
54
|
|
|
55
|
+
## Tool discovery (external MCP clients)
|
|
56
|
+
|
|
57
|
+
- **Wire catalog:** `tools/list` is static — Continuum tools (node config, chart, MPC, registry, etc.) are callable immediately.
|
|
58
|
+
- **Search:** `list_tool_groups` and `search_continuum_tools` find tools by keyword; `loaded` is bookkeeping only, not a call gate. Skip `activate_tool_group`.
|
|
59
|
+
- **DeFi (required):** call `load_defi_protocol({ protocolId })` before any `ctm_<protocol>_` tool — they error until loaded. Browse with `list_defi_protocols`. Do not use `activate_tool_group` to load a venue.
|
|
60
|
+
- **Charts / live ticks (this Path A / raw MCP session only):** do **not** render `continuum/chart/v1`, draw overlays in a browser or TradingView, or poll the `live` binding. Tell the operator to use **AI Agent** on the attached node (or Telegram **Open chart** if they already use the bot). Hosted mpc-auth turns — node AI Agent chat **and** Telegram Mini App — still call `prepare_chart*` / `apply_*`; the host renders. Text summaries of `analyze_*` JSON are fine here.
|
|
61
|
+
- **On-node agent only:** mpc-auth uses `activate_tool_group` to expand its LLM filter. That does not change `tools/list`.
|
|
62
|
+
|
|
51
63
|
## Client orchestration guidance
|
|
52
64
|
|
|
53
65
|
- Keep user interaction simple: fetch options first, then ask for concrete selection, then execute.
|
|
@@ -64,3 +76,4 @@ This server helps an MCP client operate a Continuum node through safe, structure
|
|
|
64
76
|
- tokens: `registry/tokens.md`
|
|
65
77
|
- chains: `registry/networks.md`
|
|
66
78
|
- MPC operations: `mpc.md`
|
|
79
|
+
- Path A node config (peers, relay, MQTT, restart, attach): `node-config.md`
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
max_results: 50
|
|
3
|
+
|
|
4
|
+
# Shared across Telegram, Discord, and Reddit
|
|
5
|
+
tickers:
|
|
6
|
+
- ETH
|
|
7
|
+
- UNI
|
|
8
|
+
- BTC
|
|
9
|
+
|
|
10
|
+
ticker_detection:
|
|
11
|
+
min_length: 2
|
|
12
|
+
max_length: 10
|
|
13
|
+
include_bare_caps: true
|
|
14
|
+
exclude:
|
|
15
|
+
- THE
|
|
16
|
+
- AND
|
|
17
|
+
- FOR
|
|
18
|
+
- NOT
|
|
19
|
+
- YOU
|
|
20
|
+
- ALL
|
|
21
|
+
- NEW
|
|
22
|
+
- USD
|
|
23
|
+
- API
|
|
24
|
+
- CEO
|
|
25
|
+
- DAO
|
|
26
|
+
- TVL
|
|
27
|
+
- APR
|
|
28
|
+
- APY
|
|
29
|
+
- EVM
|
|
30
|
+
- NFT
|
|
31
|
+
- UTC
|
|
32
|
+
- GMT
|
|
33
|
+
- AI
|
|
34
|
+
|
|
35
|
+
telegram:
|
|
36
|
+
max_messages_per_channel: 500
|
|
37
|
+
channels:
|
|
38
|
+
- username: defillama
|
|
39
|
+
category: analytics
|
|
40
|
+
notes: DeFi TVL and protocol news
|
|
41
|
+
- username: uniswap
|
|
42
|
+
category: dex
|
|
43
|
+
notes: Uniswap announcements
|
|
44
|
+
- username: ethereum
|
|
45
|
+
category: l1
|
|
46
|
+
notes: Ethereum foundation updates
|
|
47
|
+
|
|
48
|
+
discord:
|
|
49
|
+
max_messages_per_channel: 500
|
|
50
|
+
mention_user_id: ""
|
|
51
|
+
include_nsfw: false
|
|
52
|
+
guilds:
|
|
53
|
+
- guild_id: "000000000000000000"
|
|
54
|
+
name: example-guild
|
|
55
|
+
channels:
|
|
56
|
+
- channel_id: "000000000000000000"
|
|
57
|
+
name: general
|
|
58
|
+
|
|
59
|
+
reddit:
|
|
60
|
+
max_posts_per_subreddit: 100
|
|
61
|
+
sort: new
|
|
62
|
+
time_filter: month
|
|
63
|
+
subreddits:
|
|
64
|
+
- name: ethereum
|
|
65
|
+
category: l1
|
|
66
|
+
sort: new
|
|
67
|
+
- name: defi
|
|
68
|
+
category: general
|
|
69
|
+
- name: CryptoCurrency
|
|
70
|
+
category: general
|
|
71
|
+
sort: top
|
|
72
|
+
time_filter: week
|
|
73
|
+
comments:
|
|
74
|
+
include_on_search: false
|
|
75
|
+
max_per_post: 10
|
|
76
|
+
max_per_thread: 200
|
|
77
|
+
max_depth: 3
|
|
78
|
+
sort: top
|
|
79
|
+
replace_more_limit: 0
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
max_results: 50
|
|
3
|
+
max_messages_per_channel: 500
|
|
4
|
+
|
|
5
|
+
# Optional allowlist — empty [] = return all posts with any detected ticker
|
|
6
|
+
tickers:
|
|
7
|
+
- ETH
|
|
8
|
+
- UNI
|
|
9
|
+
- BTC
|
|
10
|
+
|
|
11
|
+
ticker_detection:
|
|
12
|
+
min_length: 2
|
|
13
|
+
max_length: 10
|
|
14
|
+
include_bare_caps: true
|
|
15
|
+
exclude:
|
|
16
|
+
- THE
|
|
17
|
+
- AND
|
|
18
|
+
- FOR
|
|
19
|
+
- NOT
|
|
20
|
+
- YOU
|
|
21
|
+
- ALL
|
|
22
|
+
- NEW
|
|
23
|
+
- USD
|
|
24
|
+
- API
|
|
25
|
+
- CEO
|
|
26
|
+
- DAO
|
|
27
|
+
- TVL
|
|
28
|
+
- APR
|
|
29
|
+
- APY
|
|
30
|
+
- EVM
|
|
31
|
+
- NFT
|
|
32
|
+
- UTC
|
|
33
|
+
- GMT
|
|
34
|
+
- AI
|
|
35
|
+
|
|
36
|
+
channels:
|
|
37
|
+
- username: defillama
|
|
38
|
+
category: analytics
|
|
39
|
+
notes: DeFi TVL and protocol news
|
|
40
|
+
|
|
41
|
+
- username: uniswap
|
|
42
|
+
category: dex
|
|
43
|
+
notes: Uniswap announcements
|
|
44
|
+
|
|
45
|
+
- username: ethereum
|
|
46
|
+
category: l1
|
|
47
|
+
notes: Ethereum foundation updates
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# User folder (workspace)
|
|
2
|
+
|
|
3
|
+
The node **user_folder** is the agent workspace on disk (container `/app/user_folder`; on the host it is the `user_folder/` directory beside your node config). MCP tools operate on **relative paths** inside that tree — the SDK and node reject absolute paths, `..` traversal, and loose files at the root.
|
|
4
|
+
|
|
5
|
+
## MCP tools
|
|
6
|
+
|
|
7
|
+
### Read (GET)
|
|
8
|
+
|
|
9
|
+
- `list_user_folder` — directory listing; optional **path** (default `.` for root)
|
|
10
|
+
- `get_user_folder_file` — read one file as UTF-8 text by **path**
|
|
11
|
+
|
|
12
|
+
### Write (management-signed POST)
|
|
13
|
+
|
|
14
|
+
- `write_user_folder_file` — upsert one UTF-8 text file (**path**, **content**)
|
|
15
|
+
|
|
16
|
+
## Path rules (SDK + node)
|
|
17
|
+
|
|
18
|
+
| Rule | Detail |
|
|
19
|
+
|------|--------|
|
|
20
|
+
| Relative only | No `/app/...`, drive letters, or `~` |
|
|
21
|
+
| No traversal | Reject `..` segments |
|
|
22
|
+
| Writes need a subtree | Path must include `/` (e.g. `evm/script/Deploy.s.sol`, not `notes.txt` at root) |
|
|
23
|
+
| Browse first | Use `list_user_folder` to confirm directories before writing |
|
|
24
|
+
|
|
25
|
+
The node enforces the same constraints on `/writeUserFolderFile`; SDK validation fails fast with the same messages.
|
|
26
|
+
|
|
27
|
+
## Recommended layout
|
|
28
|
+
|
|
29
|
+
| Subtree | Use |
|
|
30
|
+
|---------|-----|
|
|
31
|
+
| `evm/` | Foundry project (`foundry.toml`, `src/`, `script/`, `lib/`, `broadcast/`) |
|
|
32
|
+
| `data/` | General data, SDK artifact mirrors (`data/artifacts/...`) |
|
|
33
|
+
| `.mcp-foundry-workspace/` | Foundry MCP forge script output |
|
|
34
|
+
|
|
35
|
+
## Suggested workflow
|
|
36
|
+
|
|
37
|
+
1. **`list_user_folder`** — start at `.`, then drill into subdirs (`evm/`, `data/`, …).
|
|
38
|
+
2. **`write_user_folder_file`** — upload or edit a file under an existing subdirectory.
|
|
39
|
+
3. **`get_user_folder_file`** — read back or download content for inspection.
|
|
40
|
+
4. Downstream tools (forge import, join multisign) accept **paths under user_folder** — use the same relative paths returned here.
|
|
41
|
+
|
|
42
|
+
## Operator UI
|
|
43
|
+
|
|
44
|
+
**AI Agent → Workspace** provides the same browse/upload/download experience in the browser. MCP tools are the agent-automation equivalent.
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
# VPN (admin + egress, opt-in MCP)
|
|
2
2
|
|
|
3
|
-
Catalog id **`vpn`**: HTTP endpoint on **continuum-mcp** (`/mcp/vpn`), **`initialLoad: false`** by default — add from the node MCP catalog and enable **Initial load** when you want these tools in a session.
|
|
3
|
+
Catalog id **`vpn`**: HTTP endpoint on **continuum-mcp** (`/mcp/vpn`), **`initialLoad: false`** by default — add from the node MCP catalog and enable **Initial load** when you want these tools in a session.
|
|
4
4
|
|
|
5
5
|
WireGuard admin VPN and peer egress flows on the attached node. Read tools use GET management API routes; write and download tools POST management-signed bodies with the preferred Ed25519 management key (same as agent skills and cron jobs).
|
|
6
6
|
|
|
7
|
+
VPN is a **veCTM privilege**, not a paid month. Before enabling, confirm the node is entitled via `get_node_privilege_status` or `get_ve_ctm_attach_status` on the main **continuum** MCP server (`keygen_billing`). Privileged services require an attached veCTM NFT on the node's withdraw authority whose voting power meets `veCtmThresholdPower`. Node trial does not grant VPN.
|
|
8
|
+
|
|
7
9
|
Prerequisites: local management private key in `added_keys/` (see `management-signer.md`), node attached via SDK config.
|
|
8
10
|
|
|
9
|
-
Download tools write client files to **user_folder
|
|
11
|
+
Download tools write client files to **user_folder/data/vpn/** (default `MPC_AUTH_USER_FOLDER=/app/user_folder`, host bind mount in Docker). Override with optional `userFolder` on download inputs.
|
|
10
12
|
|
|
11
13
|
## Admin VPN
|
|
12
14
|
|
|
13
15
|
- `get_vpn_status`
|
|
14
|
-
- GET `/vpn/status` — availability, active profile, obfuscation,
|
|
16
|
+
- GET `/vpn/status` — availability, active profile, obfuscation, privilege hints (`privileged`, `privilegeSource`).
|
|
15
17
|
- `set_vpn_enabled`
|
|
16
18
|
- POST `/vpn/setEnabled` — `enabled` true/false; when enabling: optional `profile` (`split`|`full`, default `full`), optional `obfuscation`.
|
|
17
|
-
- Triggers host systemd automation via pending VPN file (same as node app Enable/Disable).
|
|
19
|
+
- Requires veCTM privilege. Triggers host systemd automation via pending VPN file (same as node app Enable/Disable).
|
|
18
20
|
- `download_vpn_admin_client_config`
|
|
19
21
|
- POST `/vpn/clientConfig` — optional `profile`, `obfuscation` (when obfuscated), optional `userFolder`.
|
|
20
|
-
- Saves WireGuard `.conf` (and transport proxy file when obfuscated) under user_folder
|
|
22
|
+
- Saves WireGuard `.conf` (and transport proxy file when obfuscated) under `user_folder/data/vpn/`.
|
|
21
23
|
- Returns `wireGuardPath`, optional `transportPath`, and `setupInstructions` when provided.
|
|
22
24
|
|
|
23
25
|
## Egress (provider + consumer)
|
|
@@ -29,14 +31,14 @@ Download tools write client files to **user_folder** (default `MPC_AUTH_USER_FOL
|
|
|
29
31
|
- `revoke_vpn_egress_peer`
|
|
30
32
|
- POST `/vpn/egress/revokePeer` — `consumerNodeKey` (128-char hex, lowercase).
|
|
31
33
|
- `list_vpn_egress_exits`
|
|
32
|
-
- GET `/vpn/egress/availableExits` — exit routes discovered from other nodes (`address`, `publicKey`, country, obfuscation,
|
|
34
|
+
- GET `/vpn/egress/availableExits` — exit routes discovered from other nodes (`address`, `publicKey`, country, obfuscation, privilege fields).
|
|
33
35
|
- `download_vpn_egress_client_config`
|
|
34
36
|
- POST `/vpn/egress/requestClientConfig` — `targetAddress` from an exit row, optional `obfuscation`, optional `userFolder`.
|
|
35
|
-
- Saves `cont-egress.conf` (and transport file when needed) to user_folder
|
|
37
|
+
- Saves `cont-egress.conf` (and transport file when needed) to `user_folder/data/vpn/`.
|
|
36
38
|
|
|
37
39
|
## Typical flows
|
|
38
40
|
|
|
39
|
-
**Admin connect:** `
|
|
41
|
+
**Admin connect:** `get_ve_ctm_attach_status` / `get_node_privilege_status` → `set_vpn_enabled` `{ enabled: true, profile: "full" }` → wait for active status → `download_vpn_admin_client_config`.
|
|
40
42
|
|
|
41
43
|
**Consumer egress:** `list_vpn_egress_exits` → pick `address` → `download_vpn_egress_client_config` `{ targetAddress: "…" }`.
|
|
42
44
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# World Affairs RSS
|
|
2
|
+
|
|
3
|
+
Built-in MCP on **continuum-mcp** at `/mcp/world-affairs`. Catalog id **`world-affairs`**. **`initialLoad: false`**. No API key.
|
|
4
|
+
|
|
5
|
+
Load per chat with **`agent_load_mcp_server({ serverId: "world-affairs" })`** only when the operator chooses it. Tools are **`world-affairs__*`**.
|
|
6
|
+
|
|
7
|
+
When a source has **`biasNote`**, include that warning when citing or summarizing that outlet.
|
|
8
|
+
|
|
9
|
+
## Sources (free RSS)
|
|
10
|
+
|
|
11
|
+
| id | Outlet | Feed | biasNote |
|
|
12
|
+
|----|--------|------|----------|
|
|
13
|
+
| **`bbc-world`** | BBC World | `https://feeds.bbci.co.uk/news/world/rss.xml` | |
|
|
14
|
+
| **`aljazeera`** | Al Jazeera | `https://www.aljazeera.com/xml/rss/all.xml` | |
|
|
15
|
+
| **`guardian-world`** | The Guardian World | `https://www.theguardian.com/world/rss` | **Left wing bias** |
|
|
16
|
+
| **`dw-world`** | DW World | `https://rss.dw.com/xml/rss-en-world` | |
|
|
17
|
+
| **`france24`** | France 24 | `https://www.france24.com/en/rss` | |
|
|
18
|
+
| **`npr`** | NPR News | `https://feeds.npr.org/1001/rss.xml` | **Some political left wing bias** |
|
|
19
|
+
| **`cnn-world`** | CNN World | `http://rss.cnn.com/rss/edition_world.rss` | **Some political left wing bias** |
|
|
20
|
+
| **`rt-news`** | RT News | `https://www.rt.com/rss/news` | **Potential bias** |
|
|
21
|
+
|
|
22
|
+
## Tools
|
|
23
|
+
|
|
24
|
+
1. **`list_world_affairs_sources`** — source ids, feed URLs, and **`biasNote`**
|
|
25
|
+
2. **`get_world_affairs_latest`** — optional **`sourceId`**, **`limit`** (1–25, default 8)
|
|
26
|
+
3. **`search_world_affairs_latest`** — required **`query`**, optional **`sourceId`** / **`limit`**
|
|
27
|
+
|
|
28
|
+
Not an OHLCV source — do not pass results to **`prepare_chart_from_rows`**.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Express } from 'express';
|
|
1
2
|
import { type McpServer } from '@modelcontextprotocol/server';
|
|
2
3
|
export type CreateMcpServer = () => McpServer;
|
|
3
4
|
export type HttpMcpRoute = {
|
|
@@ -7,6 +8,8 @@ export type HttpMcpRoute = {
|
|
|
7
8
|
export type HttpTransportOptions = {
|
|
8
9
|
host?: string;
|
|
9
10
|
port?: number;
|
|
11
|
+
/** Optional Express routes mounted before MCP handlers (e.g. internal operator APIs). */
|
|
12
|
+
mountExtraRoutes?: (app: Express) => void;
|
|
10
13
|
};
|
|
11
14
|
export declare function startHttpTransportServer(routes: HttpMcpRoute | HttpMcpRoute[], options?: HttpTransportOptions): Promise<{
|
|
12
15
|
urls: URL[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../../../src/mcp/server/http-transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../../../src/mcp/server/http-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAKrC,OAAO,EAAmB,KAAK,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAK9E,MAAM,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,eAAe,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AAiDF,wBAAsB,wBAAwB,CAC7C,MAAM,EAAE,YAAY,GAAG,YAAY,EAAE,EACrC,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAC,CAoDpD"}
|