{"apiVersion":"v1","directorySlug":"weavr-mcp-c3a061a8f3","title":"weavr.","description":"Turn a plain-language investment thesis into an on-chain strategy through any MCP-compatible agent.","pageUrl":"https://www.mcpbundles.com/skills/weavr-mcp-c3a061a8f3","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.weavr.sh/mcp","hostedMcpUrl":null,"toolCount":30,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"sh.weavr/weavr-mcp-c3a061a8f3","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"list_assets","description":"Assets Weavr can put in a portfolio, grouped for the thesis the user typed: majors, SOL staking, stablecoins, real-world assets (gold, xStocks, Tessera T-tokens, PreStocks), DeFi and ecosystem. A stocks or equities thesis lists every equity issuer (listed US names and the S&P 500 and Nasdaq-100 trackers from xStocks, pre-IPO names from Tessera and PreStocks); a pre-IPO thesis lists Tessera and PreStocks; an issuer's name (xstocks, tessera, prestocks) lists only that issuer. Call this only after","inputSchema":{"type":"object","required":["thesis"],"properties":{"groups":{"type":"array","items":{"enum":["majors","sol_staking","stablecoins","rwa","other"],"type":"string"}},"thesis":{"type":"string","minLength":3}},"additionalProperties":false},"title":"List Assets","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_assets","displayName":"List Assets"},{"name":"get_asset","description":"One asset: its name, group, chain, status and measured yield.","inputSchema":{"type":"object","required":["asset"],"properties":{"asset":{"type":"string"}},"additionalProperties":false},"title":"Get Asset","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_asset","displayName":"Get Asset"},{"name":"get_asset_history","description":"Price history of one asset as percent change from the first point.","inputSchema":{"type":"object","required":["asset"],"properties":{"asset":{"type":"string"}},"additionalProperties":false},"title":"Asset History","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_asset_history","displayName":"Asset History"},{"name":"suggest_mix","description":"A default weighting for the thesis: equal weights across the assets that fit, capped where an asset has a maximum share. Pass assets to weight a list the user named instead. Next: ask for a name, a ticker and any rules, then simulate_portfolio.","inputSchema":{"type":"object","properties":{"count":{"type":"number","maximum":8,"minimum":2},"assets":{"type":"array","items":{"type":"string"}},"thesis":{"type":"string"}},"additionalProperties":false},"title":"Recommend Mix","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"suggest_mix","displayName":"Recommend Mix"},{"name":"simulate_portfolio","description":"Check a portfolio before creating it: whether it is valid, the fees it will charge, the network cost in SOL, and a 12-month backtest against BTC, SOL, ETH, USDC and the S&P 500 (tokenised SPY, price return). Free, no side effects. Needs the name and ticker the user chose; never invent either. annualReturn carries the backtested annual return (null unless a full year of history) and the projected one from the assets' measured yields. Next: fix any problems and show the result, then create_portfol","inputSchema":{"type":"object","required":["name","ticker","mix"],"properties":{"mix":{"type":"array","items":{"type":"object","required":["ticker","percent"],"properties":{"ticker":{"type":"string"},"percent":{"type":"number","maximum":100,"minimum":0}},"additionalProperties":false},"maxItems":32,"minItems":1},"name":{"type":"string","maxLength":32,"minLength":1},"rules":{"type":"object","properties":{"locked":{"type":"boolean"},"idlePercent":{"type":"number"},"driftPercent":{"type":"number"},"rebalanceDelayMinutes":{"type":"number"}},"additionalProperties":false},"ticker":{"type":"string","pattern":"^[A-Za-z0-9]{1,10}$"},"creator":{"type":"string"}},"additionalProperties":false},"title":"Simulate Portfolio","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"simulate_portfolio","displayName":"Simulate Portfolio"},{"name":"create_portfolio","description":"Prepare the portfolio for the user's wallet. With a wallet tool on this host (wallet \"tool\", the default): returns one walletPayload; hand it to the wallet tool (for example Paybox) to sign, do not print it, and do not ask the user to sign anything themselves. Take creator from the wallet tool; never ask the user for an address. Then call await_portfolio with the deploymentId and, as signed, exactly what the wallet returned. With no wallet tool: pass wallet \"link\" and leave creator out; the resu","inputSchema":{"type":"object","required":["name","ticker","mix"],"properties":{"mix":{"type":"array","items":{"type":"object","required":["ticker","percent"],"properties":{"ticker":{"type":"string"},"percent":{"type":"number","maximum":100,"minimum":0}},"additionalProperties":false},"maxItems":32,"minItems":1},"name":{"type":"string","maxLength":32,"minLength":1},"rules":{"type":"object","properties":{"locked":{"type":"boolean"},"idlePercent":{"type":"number"},"driftPercent":{"type":"number"},"rebalanceDelayMinutes":{"type":"number"}},"additionalProperties":false},"ticker":{"type":"string","pattern":"^[A-Za-z0-9]{1,10}$"},"wallet":{"enum":["tool","link"],"type":"string"},"creator":{"type":"string"}},"additionalProperties":false},"title":"Create Portfolio","logicalName":"create_portfolio","displayName":"Create Portfolio","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"await_portfolio","description":"Wait for the portfolio to go live. Call it right after the wallet signs, passing the signed transaction the wallet returned as signed: wallets such as Paybox sign but do not send, so this tool sends it and then watches the chain. For a sign link (wallet \"link\") call it with only the deploymentId; it watches until the user has signed on the page. Call it again while status is awaiting_wallet, signing or finishing. Never ask the user to confirm, say done, or check again. If status is sign_again, t","inputSchema":{"type":"object","required":["deploymentId"],"properties":{"signed":{"type":"array","items":{"type":"string"},"maxItems":16},"timeoutSecs":{"type":"number","maximum":50,"minimum":1},"deploymentId":{"type":"string"}},"additionalProperties":false},"title":"Await Portfolio","logicalName":"await_portfolio","displayName":"Await Portfolio","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"portfolio_status","description":"One read of a deployment's status. Used by the sign card; in conversation prefer await_portfolio, which waits.","inputSchema":{"type":"object","required":["deploymentId"],"properties":{"deploymentId":{"type":"string"}},"additionalProperties":false},"title":"Portfolio Status","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"portfolio_status","displayName":"Portfolio Status"},{"name":"list_portfolios","description":"Every live portfolio: name, ticker, price, size, targets, holders, volume, 30-day and 1-year returns against BTC and the S&P 500 (tokenised SPY, price return), rank, and annualReturn (backtested and projected). null means there is no history yet: say so, never say zero. Call this rather than reading the website.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"Portfolios","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_portfolios","displayName":"Portfolios"},{"name":"get_portfolio","description":"One portfolio: its state, targets, fees, curator, price, holders, volume, returns against BTC and the S&P 500 (tokenised SPY, price return), rank, and annualReturn. null means there is no history yet: say so, never say zero.","inputSchema":{"type":"object","required":["portfolio"],"properties":{"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Get Portfolio","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_portfolio","displayName":"Get Portfolio"},{"name":"get_portfolio_history","description":"Price, flow and composition history of one portfolio.","inputSchema":{"type":"object","required":["portfolio"],"properties":{"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Portfolio History","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_portfolio_history","displayName":"Portfolio History"},{"name":"list_withdrawals","description":"The exit queue of one portfolio, oldest first; position in the queue is the payout order.","inputSchema":{"type":"object","required":["portfolio"],"properties":{"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Withdrawals","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_withdrawals","displayName":"Withdrawals"},{"name":"get_withdrawal","description":"One withdrawal request by its id.","inputSchema":{"type":"object","required":["request"],"properties":{"request":{"type":"string"}},"additionalProperties":false},"title":"Get Withdrawal","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_withdrawal","displayName":"Get Withdrawal"},{"name":"simulate_rebalance","description":"Check a new mix for an existing portfolio for free: what changes, when it would take effect, and any problems. Next: build_propose_targets.","inputSchema":{"type":"object","required":["portfolio","mix"],"properties":{"mix":{"type":"array","items":{"type":"object","required":["ticker","percent"],"properties":{"ticker":{"type":"string"},"percent":{"type":"number","maximum":100,"minimum":0}},"additionalProperties":false},"maxItems":32,"minItems":1},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Simulate Rebalance","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"simulate_rebalance","displayName":"Simulate Rebalance"},{"name":"build_deposit","description":"Prepare a deposit of USD into a portfolio for the user's wallet. Hand walletPayload to the wallet tool; do not print it. Then send_signed with what the wallet returns.","inputSchema":{"type":"object","required":["portfolio","user","amountUsd"],"properties":{"user":{"type":"string"},"amountUsd":{"type":"number","exclusiveMinimum":0},"minShares":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Deposit","logicalName":"build_deposit","displayName":"Deposit","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_withdraw","description":"Prepare a withdrawal request for the user's wallet, sized in dollars. The whole position is taken if this is all of it or would leave a leftover too small to exit. Requests are queued and paid in order as funds free up; legs on another chain take longer. Hand walletPayload to the wallet tool, then send_signed with what it returns.","inputSchema":{"type":"object","required":["portfolio","user"],"properties":{"user":{"type":"string"},"shares":{"type":"string"},"amountUsd":{"type":"number","exclusiveMinimum":0},"portfolio":{"type":"string"},"minAmountOut":{"type":"string"}},"additionalProperties":false},"title":"Withdraw","logicalName":"build_withdraw","displayName":"Withdraw","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"send_signed","description":"Send transactions the wallet tool signed but did not send (Paybox and most agent wallets stop at signing). Pass exactly what the wallet returned; Weavr sends each one and waits for it to confirm. For a new portfolio use await_portfolio instead, which sends and watches in one step.","inputSchema":{"type":"object","required":["signed"],"properties":{"signed":{"type":"array","items":{"type":"string"},"maxItems":16,"minItems":1}},"additionalProperties":false},"title":"Send Signed","logicalName":"send_signed","displayName":"Send Signed","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_refresh_nav","description":"Prepare a valuation refresh anyone can sign. Hand walletPayload to the wallet tool, then send_signed with what it returns.","inputSchema":{"type":"object","required":["portfolio","payer"],"properties":{"payer":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Refresh Valuation","logicalName":"build_refresh_nav","displayName":"Refresh Valuation","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_revive","description":"A quiet portfolio needs a small SOL payment to the operator to resume. Prepare it; hand walletPayload to the wallet tool, then call confirm_revive with the signature.","inputSchema":{"type":"object","required":["portfolio","payer"],"properties":{"payer":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Revive Portfolio","logicalName":"build_revive","displayName":"Revive Portfolio","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"confirm_revive","description":"After the revive payment lands: confirm it so the operator resumes. Submits nothing.","inputSchema":{"type":"object","required":["portfolio","payer","signature"],"properties":{"payer":{"type":"string"},"portfolio":{"type":"string"},"signature":{"type":"string"}},"additionalProperties":false},"title":"Confirm Revive","logicalName":"confirm_revive","displayName":"Confirm Revive","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_propose_targets","description":"Prepare a curator proposal for a new mix. It takes effect after the notice period. Hand walletPayload to the wallet tool, then send_signed with what it returns.","inputSchema":{"type":"object","required":["portfolio","curator","mix"],"properties":{"mix":{"type":"array","items":{"type":"object","required":["ticker","percent"],"properties":{"ticker":{"type":"string"},"percent":{"type":"number","maximum":100,"minimum":0}},"additionalProperties":false},"maxItems":32,"minItems":1},"curator":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Propose Rebalance","logicalName":"build_propose_targets","displayName":"Propose Rebalance","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_apply_targets","description":"Prepare the apply step once a proposal's notice period has passed. Anyone can sign it.","inputSchema":{"type":"object","required":["portfolio","caller"],"properties":{"caller":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Apply Rebalance","logicalName":"build_apply_targets","displayName":"Apply Rebalance","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_cancel_targets","description":"Prepare the cancellation of a pending proposal.","inputSchema":{"type":"object","required":["portfolio","signer"],"properties":{"signer":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Cancel Rebalance","logicalName":"build_cancel_targets","displayName":"Cancel Rebalance","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_transfer_curator","description":"Prepare a curator transfer proposal. The new curator accepts with build_accept_curator.","inputSchema":{"type":"object","required":["portfolio","signer","newCurator"],"properties":{"signer":{"type":"string"},"portfolio":{"type":"string"},"newCurator":{"type":"string"}},"additionalProperties":false},"title":"Transfer Curator","logicalName":"build_transfer_curator","displayName":"Transfer Curator","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_accept_curator","description":"Prepare the acceptance of a curator transfer.","inputSchema":{"type":"object","required":["portfolio","signer"],"properties":{"signer":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Accept Curator","logicalName":"build_accept_curator","displayName":"Accept Curator","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_cancel_curator","description":"Prepare the cancellation of a pending curator transfer.","inputSchema":{"type":"object","required":["portfolio","signer"],"properties":{"signer":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Cancel Curator Transfer","logicalName":"build_cancel_curator","displayName":"Cancel Curator Transfer","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_propose_fee_recipient","description":"Prepare a change of who receives the creator's share of fees. The new recipient accepts with build_accept_fee_recipient.","inputSchema":{"type":"object","required":["portfolio","currentRecipient","newRecipient"],"properties":{"portfolio":{"type":"string"},"newRecipient":{"type":"string"},"currentRecipient":{"type":"string"}},"additionalProperties":false},"title":"Propose Fee Recipient","logicalName":"build_propose_fee_recipient","displayName":"Propose Fee Recipient","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_accept_fee_recipient","description":"Prepare the acceptance of a fee recipient change. The proposed recipient must sign.","inputSchema":{"type":"object","required":["portfolio","caller"],"properties":{"caller":{"type":"string"},"portfolio":{"type":"string"}},"additionalProperties":false},"title":"Accept Fee Recipient","logicalName":"build_accept_fee_recipient","displayName":"Accept Fee Recipient","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_set_portfolio_metadata","description":"Prepare a curator update of the portfolio's metadata link.","inputSchema":{"type":"object","required":["portfolio","signer","metadataUri"],"properties":{"signer":{"type":"string"},"portfolio":{"type":"string"},"metadataUri":{"type":"string"}},"additionalProperties":false},"title":"Set Portfolio Metadata","logicalName":"build_set_portfolio_metadata","displayName":"Set Portfolio Metadata","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"build_update_rebalance_delay","description":"Prepare a curator update of the notice period before a rebalance takes effect.","inputSchema":{"type":"object","required":["portfolio","curator","rebalanceDelayMinutes"],"properties":{"curator":{"type":"string"},"portfolio":{"type":"string"},"rebalanceDelayMinutes":{"type":"number","minimum":0}},"additionalProperties":false},"title":"Update Rebalance Notice","logicalName":"build_update_rebalance_delay","displayName":"Update Rebalance Notice","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=weavr-&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3Aud2VhdnIuc2gvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22weavr-%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.weavr.sh%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22weavr-%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.weavr.sh%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=weavr.&connectorUrl=https%3A%2F%2Fmcp.weavr.sh%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"weavr-\" --url \"https://mcp.weavr.sh/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/weavr-mcp-c3a061a8f3","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/weavr-mcp-c3a061a8f3/tools/{tool}","mcpServerUrl":"https://mcp.weavr.sh/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/weavr-mcp-c3a061a8f3?live=1"}