MetaMask Embedded Wallets MCP
MetaMask Embedded Wallets MCPサーバー
AIコーディングアシスタントにドキュメントやSDKの深い知識へのライブアクセスを提供することで、MetaMask Embedded Walletsの統合をより迅速に構築できます。
設定が必要なものは2つあります。
スキル — AIアシスタントにSDKについての「考え方」(アーキテクチャ、フレームワークの癖、鍵導出ルール、一般的な間違い)を教えます。スキル自体にコードは含まれておらず、MCPがそれを提供します。
MCPサーバー — AIアシスタントに、ドキュメントの検索、例の取得、SDK型の参照をリアルタイムで行う機能を提供します。
MCPツール
ツール | 機能 |
| ドキュメントとサンプルプロジェクトの検索 |
| ドキュメントページの全内容を取得 |
| 統合例の完全なソースコードを取得 |
| オープンソースリポジトリからSDKの型やフックを取得 |
| MetaMask Builder Hubで実際のユーザーの問題を検索 |
Related MCP server: Privy MCP Server
スキル
このスキルは、MetaMask Embedded WalletsのメンタルモデルをAIアシスタントに教えます。これには、SDKの選択ロジック、鍵導出ルール、認証の概念、プラットフォームの癖、およびドキュメントだけでは明らかではない一般的な間違いが含まれます。
ヒント: 最適な体験のために、MCPサーバーをスキルと併用してください。これにより、LLMが静的なテキストに頼るのではなく、ライブのドキュメントや例を取得できるようになります。
ユニバーサルインストール(18以上のエージェントで動作)
npx skills add Web3Auth/web3auth-mcp --skill web3auth -yVercelのskills CLIは、アクティブなAIエージェントを検出し、適切なディレクトリ(Cursor、Claude Code、Copilot、Kiro、Cline、Codex、Antigravity、その他40以上)に自動的にインストールします。
グローバルにインストール(すべてのプロジェクトで利用可能)するか、特定のエージェントをターゲットにするには:
npx skills add Web3Auth/web3auth-mcp --skill web3auth -g -y # global
npx skills add Web3Auth/web3auth-mcp --skill web3auth -a cursor -y # Cursor only
npx skills add Web3Auth/web3auth-mcp --skill web3auth -a claude-code -y # Claude Code onlyCursor
npx degit Web3Auth/web3auth-mcp/skills/web3auth .cursor/skills/web3authCursorは.cursor/skills/内のSKILL.mdを自動的に検出し、関連がある場合に有効化します。
または、Cursor Marketplaceから「MetaMask Embedded Wallets」を検索してインストールしてください。
Claude Code CLI
npx degit Web3Auth/web3auth-mcp/skills/web3auth /tmp/web3auth-skill
cat /tmp/web3auth-skill/SKILL.md >> CLAUDE.mdClaude Desktop
Claude Desktop → Settings → Custom Instructionsを開き、skills/web3auth/SKILL.mdの内容を直接貼り付けます。
Antigravity
npx degit Web3Auth/web3auth-mcp/skills/web3auth .agent/skills/web3authAntigravityは.agent/skills/内のスキルを自動的に検出します。すべてのプロジェクトでグローバルにインストールするには、代わりに~/.gemini/antigravity/skills/を使用してください。
Windsurf / Cline / Kiro / Continue
npx degit Web3Auth/web3auth-mcp/skills/web3auth .windsurf/skills/web3authスキルをツール固有のスキルディレクトリに配置します。ほとんどのツールは、SKILL.mdの内容をシステムプロンプトやカスタム指示フィールドに貼り付けることも受け入れます。
その他のツール
システムプロンプトやカスタム指示フィールドを持つLLMツールについては、skills/web3auth/SKILL.mdの内容を直接貼り付けてください。
MCPサーバーのセットアップ
Cursor
ワンクリックで設定するのが最も早いです:
または、Cursor Marketplaceから「MetaMask Embedded Wallets」を検索してインストールしてください。
または、手動で追加します。Cursor Settings → Tools & Integrations → MCPを開き、以下を追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io"
}
}
}VS Code (GitHub Copilot)
Visual Studio Marketplaceからインストールするか、「MetaMask Embedded Wallets」を検索するか、以下を実行します:
code --install-extension Web3Auth.metamask-embedded-walletsまたは、ワンクリックインストールURLを使用します:
vscode:mcp/install?{"name":"web3auth","url":"https://mcp.web3auth.io"}または、ワークスペースの.vscode/mcp.jsonに手動で追加します:
{
"servers": {
"web3auth": {
"type": "http",
"url": "https://mcp.web3auth.io"
}
}
}JetBrains (IntelliJ, PyCharm, WebStorm, Android Studio)
JetBrains Marketplaceからインストールし、「MetaMask Embedded Wallets」を検索します。
または、**Settings → Tools → AI Assistant → Model Context Protocol (MCP)**で手動追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io",
"transport": "http"
}
}
}Claude Code CLI
claude mcp add --transport http web3auth https://mcp.web3auth.ioまたは、プロジェクトのclaude.jsonに手動で追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io"
}
}
}Claude Desktop
Claude Desktopの設定ファイルを開きます:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
mcpServersセクションにサーバーを追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io"
}
}
}Claude Desktopを再起動し、「Search MetaMask Embedded Wallets docs for React quick start」と尋ねて接続を確認してください。
ChatGPT Desktop
ChatGPT Desktop → Settings → Connectionsを開き、新しいMCPサーバーを追加します:
Name: web3auth
URL:
https://mcp.web3auth.io
Windsurf
Windsurf Settings → MCPを開き、以下を追加します:
{
"mcpServers": {
"web3auth": {
"serverUrl": "https://mcp.web3auth.io"
}
}
}または、~/.codeium/windsurf/mcp_config.jsonを直接編集します。
Kiro (AWS)
プロジェクトの.kiro/settings/mcp.jsonに追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io"
}
}
}Warp Terminal
WarpでSettings → AI → MCP Serversを開き、Add Serverをクリックします:
Name: web3auth
URL:
https://mcp.web3auth.io
または、バージョンで利用可能な場合はWarpのワンクリックMCPインストールを使用してください。
Cline (VS Code)
ClineのMCP設定(Ctrl+Shift+P → 「Cline: Open MCP Settings」)に追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io",
"transport": "http"
}
}
}Continue.dev
Continueのconfig.json(Ctrl+Shift+P → 「Continue: Open config.json」で開く)に追加します:
{
"mcpServers": [
{
"name": "web3auth",
"url": "https://mcp.web3auth.io"
}
]
}Zed
Zedのsettings.json(Cmd+,で開く)に追加します:
{
"context_servers": {
"web3auth": {
"command": {
"path": "npx",
"args": ["-y", "mcp-remote", "https://mcp.web3auth.io"]
}
}
}
}または、Zed Extensionsからインストールし、「MetaMask Embedded Wallets」を検索してください。
Antigravity
MCP設定ファイルを開きます:
macOS/Linux:
~/.config/antigravity/mcp.jsonWindows:
%APPDATA%\antigravity\mcp.json
mcpServersセクションにサーバーを追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io"
}
}
}AntigravityはMCP設定の変更をホットリロードするため、再起動は不要です。
Xcode (via GitHub Copilot)
Xcode 26.3以降はGitHub Copilot経由でMCPをサポートしています。サーバーをCopilot MCP設定に追加するか、上記のVS Code拡張機能のセットアップを使用してください(Copilot MCPレジストリは共有されています)。
または、XcodeのAgenticツールがhttps://mcp.web3auth.ioを直接指すように、Settings → Copilot → MCP Serversから設定してください。
Eclipse (via GitHub Copilot)
GitHub Copilotを搭載したEclipseはMCPをサポートしています。Eclipse → Preferences → GitHub Copilot → MCP Servers → Add Serverから追加します:
Name: web3auth
URL:
https://mcp.web3auth.io
Neovim (avante.nvim)
Lua設定でmcphub.nvim経由で追加します:
require("mcphub").setup({
servers = {
web3auth = {
url = "https://mcp.web3auth.io",
transport = "streamable-http",
},
},
})または、互換性のためにmcp-remoteを使用します:
require("avante").setup({
mcp = {
servers = {
web3auth = {
command = "npx",
args = { "-y", "mcp-remote", "https://mcp.web3auth.io" },
},
},
},
})Neovim (codecompanion.nvim)
require("codecompanion").setup({
extensions = {
mcp = {
servers = {
web3auth = {
command = "npx",
args = { "-y", "mcp-remote", "https://mcp.web3auth.io" },
},
},
},
},
})Amp (Sourcegraph)
Amp MCP設定に追加します:
{
"mcpServers": {
"web3auth": {
"url": "https://mcp.web3auth.io"
}
}
}Goose
~/.config/goose/config.yamlに追加します:
extensions:
- name: web3auth
type: http
url: https://mcp.web3auth.io5ire
5ire Settings → MCP Servers → Addで以下を追加します:
Name: web3auth
URL:
https://mcp.web3auth.io
Aider
AiderはLiteLLMブリッジ経由でMCPをサポートしています。Aider設定に追加します:
mcp_servers:
web3auth:
command: npx
args: ["-y", "mcp-remote", "https://mcp.web3auth.io"]Codex CLI
Codex CLIまたはstdioのみのエージェントの場合は、mcp-remoteを使用してHTTPエンドポイントをブリッジします:
npm install -g mcp-remote次に~/.codex/config.tomlに追加します:
[mcp_servers.web3auth]
command = "npx"
args = ["-y", "mcp-remote", "https://mcp.web3auth.io"]または、エージェントのJSON設定に追加します:
{
"mcpServers": {
"web3auth": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.web3auth.io"]
}
}
}静的ドキュメント (llms.txt)
AIツールがまだMCPをサポートしていない場合は、代わりに静的ドキュメントファイルを使用してください:
https://docs.metamask.io/llms-full.txtllms.txt仕様をサポートし、ドキュメントを自動的にインデックス化できるツールの場合:
https://docs.metamask.io/llms.txt警告: 静的ファイルはスナップショットであり、最新の更新が含まれていない可能性があります。常に最新のドキュメントを取得するために、可能な限りMCPサーバーを使用してください。
構築を開始する
スキルとMCPが設定されたら、AIアシスタントに直接尋ねてください。推奨される開始プロンプト:
「Googleログインを使用して、ReactアプリにMetaMask Embedded Walletsを追加して。」
「Wagmiを使用して、Next.jsアプリにソーシャルログインウォレットを設定して。」
「Flutterアプリに埋め込みウォレットを統合して。」
「ログイン方法を変更した後、ユーザーのウォレットアドレスが変わってしまうのはなぜ?」
ヒント: 最初のプロンプトには(利用可能な場合は)プランニングモードを使用してください。コードを生成する前に計画を確認することで、アーキテクチャのミスを早期に発見し、本番環境でウォレットアドレスが変わってしまうような設定エラーを回避できます。
配布
このリポジトリは、主要なすべての開発者プラットフォーム向けのアーティファクトを出荷しています:
プラットフォーム | タイプ | 場所 |
Cursor Marketplace | プラグイン |
|
VS Code Marketplace | 拡張機能 |
|
JetBrains Marketplace | プラグイン |
|
Zed Extensions | 拡張機能 |
|
Claude Agent SDK | プラグイン |
|
Raycast Store | 拡張機能 |
|
ChatGPT GPT Store | カスタムGPT |
|
公式MCPレジストリ |
|
|
Glama |
|
|
Smithery | サーバーカード |
|
Vercel skills.sh | スキル |
|
agentskill.sh | スキル |
|
環境変数
変数 | 必須 | 説明 |
| いいえ | GitHub個人アクセストークン。 |
開発
npm install
npm run build
npm start # Run via stdio
npm run dev # Watch modeコンテンツの更新
製品アップデートが出荷された場合、変更が必要なファイルはわずかです:
変更内容 | 更新するファイル |
SDKアーキテクチャ / 新しい注意点 |
|
新しいドキュメントページまたはURLの変更 |
|
プラットフォーム機能の変更 |
|
SDKリポジトリ構造の変更 |
|
新しいツールカテゴリが必要 |
|
ドキュメントページの内容変更 | なし(ライブ取得) |
ライセンス
MIT
Available Tools
5 toolsget_docARead-onlyIdempotentInspect
Fetch the full content of a MetaMask Embedded Wallets documentation page. Use after search_docs to read the actual doc. Tries Algolia, then llms.txt, then GitHub raw MDX as fallbacks.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A docs.metamask.io URL, e.g. https://docs.metamask.io/embedded-wallets/sdk/react/ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond what annotations provide. While annotations already indicate read-only, idempotent, and open-world characteristics, the description reveals the multi-source fallback strategy ('Tries Algolia, then llms.txt, then GitHub raw MDX as fallbacks'), which helps the agent understand reliability and performance implications. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with three tightly focused sentences. The first states the core purpose, the second provides usage guidance, and the third reveals implementation behavior. Every sentence earns its place with no wasted words, and the information is front-loaded effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, read-only operation with fallback behavior) and comprehensive annotations, the description provides good contextual coverage. It explains the purpose, usage sequencing, and implementation strategy. The main gap is the lack of output information (no output schema), but the description compensates somewhat by indicating it fetches 'full content.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents the single 'url' parameter. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline expectation but doesn't provide additional semantic context about the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch the full content') and resource ('MetaMask Embedded Wallets documentation page'), distinguishing it from sibling tools like search_docs (which finds pages) and get_sdk_reference/get_example (which target different content types). It precisely defines what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Use after search_docs to read the actual doc'), providing clear sequencing guidance. It also distinguishes it from search_docs by indicating this is for reading full content after searching, establishing a clear workflow relationship.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exampleARead-onlyIdempotentInspect
Fetch the complete source code of a Web3Auth integration example from GitHub. Returns all source files needed to understand how the integration works. Examples are the PRIMARY reference for integration patterns — always prefer example code over raw SDK source.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Example name, e.g. 'React Quick Start' or 'Android Firebase' | |
| platform | No | Filter by platform | |
| chain | No | Filter by blockchain family | |
| category | No | Filter by category | |
| auth_method | No | Filter by auth method, e.g. 'auth0', 'firebase', 'google', 'grouped' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering safety and idempotency. The description adds valuable context beyond this: it specifies that the tool fetches from GitHub and returns all source files, and emphasizes the importance of examples as primary references. There is no contradiction with annotations, and the description enhances understanding of the tool's behavior without repeating structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence clearly states the tool's purpose, followed by a sentence on return value, and a final sentence providing usage guidance. Every sentence adds value without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema) and rich annotations (readOnlyHint, idempotentHint, openWorldHint), the description is largely complete. It covers purpose, usage guidelines, and behavioral context. However, it doesn't detail the return format (e.g., file structure or pagination), which could be useful since there's no output schema, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters with descriptions and enums. The description does not add any parameter-specific information beyond what the schema provides, such as syntax or format details. However, it implies filtering capabilities through 'Fetch the complete source code of a Web3Auth integration example,' which aligns with the schema but doesn't offer additional semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('fetch the complete source code'), resource ('Web3Auth integration example from GitHub'), and scope ('all source files needed to understand how the integration works'). It explicitly distinguishes this tool from siblings by stating 'Examples are the PRIMARY reference for integration patterns — always prefer example code over raw SDK source,' which differentiates it from get_sdk_reference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: 'always prefer example code over raw SDK source' directly contrasts with get_sdk_reference. It also implies context by positioning examples as the primary reference for integration patterns, though it doesn't explicitly mention other siblings like get_doc or search_community.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sdk_referenceARead-onlyIdempotentInspect
Fetch SDK source code (type definitions, interfaces, hooks) from the open-source Web3Auth SDK repos. Use for REFERENCE and DEBUGGING only — to verify exact type shapes, constructor signatures, available hooks, and error types. Do NOT use this to discover features; many SDK options are internal or legacy. Always use get_example first for integration patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Target platform SDK to fetch source for | |
| module | No | Specific SDK module to fetch, e.g. 'core-types', 'react-hooks', 'modal-types', 'main-class'. Omit to get default type definitions. Call without module first to see available modules. | |
| focus | No | What kind of source to focus on. 'types' = interfaces/types (default, most useful). 'hooks' = React hooks / Vue composables. 'errors' = error types. 'main-class' = SDK implementation. 'all' = everything. | types |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, indicating safe, repeatable operations. The description adds valuable context beyond this by specifying the tool's purpose for reference/debugging only, warning about internal/legacy SDK options, and recommending get_example for integration patterns. It doesn't contradict annotations, and the added context helps the agent understand behavioral nuances not covered by structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and usage guidelines in the first sentence, followed by specific instructions and warnings. Every sentence adds value—clarifying the tool's scope, restrictions, and alternatives—with no redundant or unnecessary information. It efficiently conveys critical information in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fetching SDK source code with multiple parameters) and rich annotations (readOnlyHint, idempotentHint, openWorldHint), the description is largely complete. It covers purpose, usage guidelines, and behavioral context effectively. However, without an output schema, it doesn't describe return values or format, which is a minor gap. The annotations and schema compensate well, but the description could slightly enhance completeness by hinting at output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds some semantic context by mentioning 'type definitions, interfaces, hooks, and error types,' which aligns with the 'focus' parameter options, but doesn't provide additional syntax or format details beyond what the schema specifies. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch SDK source code') and resource ('from the open-source Web3Auth SDK repos'), distinguishing it from sibling tools like get_doc or get_example. It explicitly mentions fetching type definitions, interfaces, hooks, and error types, providing a precise scope that differentiates it from other tools that might return documentation or examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('for REFERENCE and DEBUGGING only') and when not to use it ('Do NOT use this to discover features'). It also names an alternative tool ('Always use get_example first for integration patterns'), clearly differentiating usage contexts from siblings like get_example, get_doc, search_community, and search_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_communityARead-onlyIdempotentInspect
Search or fetch posts from the MetaMask Embedded Wallets community forum (builder.metamask.io). Use for troubleshooting real user issues, finding workarounds, and checking if an issue is known. Provide a query to search or a topic_id to read the full discussion.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query, e.g. 'popup blocked safari', 'JWT error', 'Android unstable connection' | |
| topic_id | No | Discourse topic ID to fetch the full discussion thread |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a read-only, idempotent, and open-world operation, which the description doesn't contradict. The description adds valuable context beyond annotations by specifying the forum source (builder.metamask.io) and the two distinct behavioral modes (search vs. fetch), though it doesn't mention rate limits or authentication needs. With annotations covering core safety traits, this additional context earns a strong score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by usage context and parameter guidance in just two sentences. Every sentence earns its place by providing essential information without redundancy, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters, 100% schema coverage, and annotations covering key behavioral traits, the description provides sufficient context by clarifying the forum source and use cases. The lack of an output schema is a minor gap, but the description compensates by explaining what the tool returns (search results or full discussions). It's nearly complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for both parameters (query and topic_id). The description adds minimal semantic value beyond the schema by mentioning the two modes ('search or fetch'), but doesn't provide additional details like query syntax examples beyond what's in the schema. Given the high schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search or fetch posts') and target resource ('MetaMask Embedded Wallets community forum'), distinguishing it from sibling tools like search_docs by specifying the forum context. It provides concrete examples of use cases (troubleshooting, finding workarounds, checking known issues), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('for troubleshooting real user issues, finding workarounds, and checking if an issue is known') and provides clear alternatives for the two parameter modes ('Provide a query to search or a topic_id to read the full discussion'). This gives the agent precise guidance on selecting between query-based search and topic fetching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsARead-onlyIdempotentInspect
Search MetaMask Embedded Wallets (Web3Auth) documentation and examples. Use for SDK discovery, feature lookup, and finding relevant examples. Returns doc page links with snippets and matching example projects.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What you are looking for -- e.g. 'React custom auth', 'Android deep linking', 'JWT grouped connections' | |
| platform | No | Filter examples by platform | |
| chain | No | Filter examples by blockchain family | |
| category | No | Filter examples by category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, covering safety and idempotency. The description adds useful context about what gets returned (doc page links with snippets and matching example projects), which isn't covered by annotations. However, it doesn't mention rate limits, authentication needs, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence establishes purpose and scope, while the second describes the return format. No wasted words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, 3 with enums) and rich annotations, the description is mostly complete. It covers purpose, usage context, and return format. However, without an output schema, it could benefit from more detail about the structure of returned results (e.g., pagination, error handling).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema, so it meets the baseline of 3. The description does imply the tool supports filtering (via platform, chain, category), but this is already explicit in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches MetaMask Embedded Wallets documentation and examples, specifying the exact resource (documentation and examples) and purpose (SDK discovery, feature lookup, finding examples). It distinguishes from siblings like get_doc (single document), get_example (single example), get_sdk_reference (reference material), and search_community (community content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (SDK discovery, feature lookup, finding examples), but doesn't explicitly state when NOT to use it or name specific alternatives. The sibling tools suggest different use cases, but the description doesn't contrast them directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v2.0.0- First observed
get_doc - First observed
get_example - First observed
get_sdk_reference - First observed
search_community - First observed
search_docs
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: get_doc retrieves documentation content, get_example fetches example code, get_sdk_reference provides SDK source for debugging, search_community accesses forum discussions, and search_docs performs initial documentation searches. The descriptions explicitly differentiate their roles and use cases, leaving no ambiguity.
All tool names follow a consistent verb_noun pattern using snake_case: get_doc, get_example, get_sdk_reference, search_community, and search_docs. This uniformity makes the tool set predictable and easy to understand at a glance.
With 5 tools, the server is well-scoped for its purpose of providing MetaMask Embedded Wallets resources. Each tool serves a specific function (documentation, examples, SDK reference, community, and search), and none feel redundant or missing given the domain of developer support and integration.
The tool set covers key areas for developer integration: documentation access, example code, SDK reference, community support, and search functionality. A minor gap exists in not having tools for direct wallet operations or API interactions, but this is reasonable as the server focuses on resource retrieval rather than live wallet management.
Maintenance
Related MCP Connectors
Trust signals for AI agents: an open agent-readiness standard and developer tool guide. Read-only.
Pre-flight check for AI coding agents: hallucinated packages + secrets, 6 ecosystems, no account.
Tracea — legal identity (Know Your Agent) for AI agents, on-chain. ERC-8004 compatible.
Pay-per-call safety checks for AI agents: screen a crypto address or URL before you transact.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSelf-custody AI agent wallets with passkeys, gasless transactions & programmable permissions (ERC-4337)4 npmMIT

Privy MCP Serverofficial
AlicenseBqualityDmaintenanceEnables AI agents to create wallets, sign transactions, and manage blockchain operations across multiple chains like Ethereum, Solana, and more via Privy.242MIT
ContextEngineofficial
AlicenseAqualityAmaintenancePersistent memory and mechanical enforcement for AI coding agents — so they stop repeating your mistakes.21272 npm3Business Source 1.1- AlicenseAqualityDmaintenanceNon-custodial agent wallet with a transaction preflight that decodes an unsigned EVM tx and flags drain patterns (unlimited/large approval, approve-all, token & NFT transferFrom, proxy upgrade, on-chain permit, approvals hidden in multicall) before signing.9102 PyPI1MIT