[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-metamask-discovery":3,"mdc-lmweu7-key":30,"related-repo-metamask-discovery":468,"related-org-metamask-discovery":501},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":19,"repoUrl":20,"updatedAt":21,"license":22,"forks":23,"topics":24,"repo":25,"sourceUrl":28,"mdContent":29},"discovery","discover and use services","Use the discovery tools to find and use services through a service matcher. Do not rely on prior knowledge of services, providers, or APIs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"metamask","MetaMask","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmetamask.png",[12,16],{"name":13,"slug":14,"type":15},"Search","search","tag",{"name":17,"slug":18,"type":15},"API Development","api-development",9,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Focap-kernel","2026-07-13T06:12:37.024095",null,8,[],{"repoUrl":20,"stars":19,"forks":23,"topics":26,"description":27},[],"The MetaMask Ocap Kernel monorepo.","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Focap-kernel\u002Ftree\u002FHEAD\u002Fpackages\u002Fagentmask\u002Fopenclaw-plugin-discovery\u002Fskills\u002Fdiscovery","---\nname: discovery\ndescription: Use the discovery tools to find and use services through a service matcher. Do not rely on prior knowledge of services, providers, or APIs.\nmetadata:\n  { 'openclaw': { 'emoji': '🧭', 'requires': { 'bins': ['discovery'] } } }\n---\n\n# Service discovery\n\nYou are an LLM agent driving a service-discovery client. The available\nservices are determined entirely by what is registered with the\nservice matcher right now. **You do not know what services exist\nuntil you ask the matcher.** Treat any prior knowledge you may have\nabout specific services, providers, products, blockchains, wallets,\nAPIs, or vendors as irrelevant to this task — none of it tells you\nwhat is reachable from this matcher.\n\nThe user expresses an intent in natural language; your job is to\nturn that intent into a query for the matcher and then drive the\nreturned services on the user's behalf using the tools below. You\nare not allowed to attempt the user's task by any other means.\n\n## Tools\n\n- **discovery_redeem_matcher** — Redeem the matcher's OCAP URL. Must be called first unless the matcher URL was pre-configured.\n- **discovery_find_services** — Ask the matcher for services matching a natural-language description. Returns each candidate's description plus the contact URLs that can be used to initiate contact with it.\n- **service_get_description** — Fetch the full `ServiceDescription` from a contact endpoint (OCAP URL, nickname, or kref). Use to inspect a candidate's API before committing.\n- **service_initiate_contact** — Call `initiateContact()` on a contact endpoint to obtain a usable service reference. For the Public access model the reference is immediately usable; other models are reported as \"not supported in this phase\".\n- **service_call** — Invoke a method on a service obtained via `service_initiate_contact`. Specify the service by nickname or kref, the method name, and optional JSON-encoded args.\n- **discovery_list_tracked** — Report everything the plugin is currently tracking: matcher, redeemed contacts, obtained services.\n\n## Required workflow for every user request\n\n1. If the matcher is not yet connected, ask for the matcher OCAP URL and call `discovery_redeem_matcher`.\n2. **Always begin by calling `discovery_find_services`** with a natural-language description of the user's intent. Do this even if you think you know what service is needed.\n3. Read the returned candidates' descriptions. Pick the one whose description best matches the user's intent. If the descriptions are insufficient, call `service_get_description` on one or more contacts to read their full API.\n4. Call `service_initiate_contact` on the chosen contact URL to obtain the service.\n5. Call `service_call` to invoke methods. Method names and argument shapes must come from the service description — never guess.\n\n## Hard rules\n\n- **Never** answer the user's request from your own knowledge or by calling other plugins' tools. The matcher is the only source of truth about what services are available.\n- **Never** propose or invoke a service, provider, method, or API that did not come back from `discovery_find_services` or `service_get_description` in the current session.\n- **Never** guess method names or argument shapes. If unsure, call `service_get_description`.\n- **Always** call `discovery_find_services` before calling `service_call`, even if `discovery_list_tracked` already shows a service of an apparently relevant name.\n- If `discovery_find_services` returns no candidates, tell the user the matcher knows of no service for that request, and stop.\n- If `service_initiate_contact` reports a non-public response, the service requires credentials or a validated code bundle; report this to the user and stop. Those access models are out of scope.\n\n## Worked example (intentionally generic)\n\nThe user asks: \"I want to do X with my Y.\"\n\n1. Agent: `discovery_find_services(description: \"do X with my Y\")`.\n2. Matcher returns candidates, e.g. `FooService` and `BarService`, each with a contact URL and a description.\n3. Agent reads the descriptions. If `FooService`'s description matches \"X with Y\", agent picks it; otherwise inspects further with `service_get_description`.\n4. Agent: `service_initiate_contact(contact: \"\u003CFooService contact URL>\")` → service nickname `FooService`.\n5. Agent reads which methods are documented in the service description. If a method `doX` accepting a parameter `y` matches, agent calls `service_call(service: \"FooService\", method: \"doX\", args: '[\"…\"]')`.\n6. Agent reports the result to the user.\n\nIf the user's intent involves something the matcher has no service for (e.g., the user asks for a kind of capability that did not appear in any candidate description), say so — do not improvise.\n",{"data":31,"body":37},{"name":4,"description":6,"metadata":32},{"openclaw":33},{"emoji":34,"requires":35},"🧭",{"bins":36},[4],{"type":38,"children":39},"root",[40,49,63,68,75,164,170,236,242,347,353,358,463],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"service-discovery",[46],{"type":47,"value":48},"text","Service discovery",{"type":41,"tag":50,"props":51,"children":52},"p",{},[53,55,61],{"type":47,"value":54},"You are an LLM agent driving a service-discovery client. The available\nservices are determined entirely by what is registered with the\nservice matcher right now. ",{"type":41,"tag":56,"props":57,"children":58},"strong",{},[59],{"type":47,"value":60},"You do not know what services exist\nuntil you ask the matcher.",{"type":47,"value":62}," Treat any prior knowledge you may have\nabout specific services, providers, products, blockchains, wallets,\nAPIs, or vendors as irrelevant to this task — none of it tells you\nwhat is reachable from this matcher.",{"type":41,"tag":50,"props":64,"children":65},{},[66],{"type":47,"value":67},"The user expresses an intent in natural language; your job is to\nturn that intent into a query for the matcher and then drive the\nreturned services on the user's behalf using the tools below. You\nare not allowed to attempt the user's task by any other means.",{"type":41,"tag":69,"props":70,"children":72},"h2",{"id":71},"tools",[73],{"type":47,"value":74},"Tools",{"type":41,"tag":76,"props":77,"children":78},"ul",{},[79,90,100,119,137,154],{"type":41,"tag":80,"props":81,"children":82},"li",{},[83,88],{"type":41,"tag":56,"props":84,"children":85},{},[86],{"type":47,"value":87},"discovery_redeem_matcher",{"type":47,"value":89}," — Redeem the matcher's OCAP URL. Must be called first unless the matcher URL was pre-configured.",{"type":41,"tag":80,"props":91,"children":92},{},[93,98],{"type":41,"tag":56,"props":94,"children":95},{},[96],{"type":47,"value":97},"discovery_find_services",{"type":47,"value":99}," — Ask the matcher for services matching a natural-language description. Returns each candidate's description plus the contact URLs that can be used to initiate contact with it.",{"type":41,"tag":80,"props":101,"children":102},{},[103,108,110,117],{"type":41,"tag":56,"props":104,"children":105},{},[106],{"type":47,"value":107},"service_get_description",{"type":47,"value":109}," — Fetch the full ",{"type":41,"tag":111,"props":112,"children":114},"code",{"className":113},[],[115],{"type":47,"value":116},"ServiceDescription",{"type":47,"value":118}," from a contact endpoint (OCAP URL, nickname, or kref). Use to inspect a candidate's API before committing.",{"type":41,"tag":80,"props":120,"children":121},{},[122,127,129,135],{"type":41,"tag":56,"props":123,"children":124},{},[125],{"type":47,"value":126},"service_initiate_contact",{"type":47,"value":128}," — Call ",{"type":41,"tag":111,"props":130,"children":132},{"className":131},[],[133],{"type":47,"value":134},"initiateContact()",{"type":47,"value":136}," on a contact endpoint to obtain a usable service reference. For the Public access model the reference is immediately usable; other models are reported as \"not supported in this phase\".",{"type":41,"tag":80,"props":138,"children":139},{},[140,145,147,152],{"type":41,"tag":56,"props":141,"children":142},{},[143],{"type":47,"value":144},"service_call",{"type":47,"value":146}," — Invoke a method on a service obtained via ",{"type":41,"tag":111,"props":148,"children":150},{"className":149},[],[151],{"type":47,"value":126},{"type":47,"value":153},". Specify the service by nickname or kref, the method name, and optional JSON-encoded args.",{"type":41,"tag":80,"props":155,"children":156},{},[157,162],{"type":41,"tag":56,"props":158,"children":159},{},[160],{"type":47,"value":161},"discovery_list_tracked",{"type":47,"value":163}," — Report everything the plugin is currently tracking: matcher, redeemed contacts, obtained services.",{"type":41,"tag":69,"props":165,"children":167},{"id":166},"required-workflow-for-every-user-request",[168],{"type":47,"value":169},"Required workflow for every user request",{"type":41,"tag":171,"props":172,"children":173},"ol",{},[174,186,201,213,225],{"type":41,"tag":80,"props":175,"children":176},{},[177,179,184],{"type":47,"value":178},"If the matcher is not yet connected, ask for the matcher OCAP URL and call ",{"type":41,"tag":111,"props":180,"children":182},{"className":181},[],[183],{"type":47,"value":87},{"type":47,"value":185},".",{"type":41,"tag":80,"props":187,"children":188},{},[189,199],{"type":41,"tag":56,"props":190,"children":191},{},[192,194],{"type":47,"value":193},"Always begin by calling ",{"type":41,"tag":111,"props":195,"children":197},{"className":196},[],[198],{"type":47,"value":97},{"type":47,"value":200}," with a natural-language description of the user's intent. Do this even if you think you know what service is needed.",{"type":41,"tag":80,"props":202,"children":203},{},[204,206,211],{"type":47,"value":205},"Read the returned candidates' descriptions. Pick the one whose description best matches the user's intent. If the descriptions are insufficient, call ",{"type":41,"tag":111,"props":207,"children":209},{"className":208},[],[210],{"type":47,"value":107},{"type":47,"value":212}," on one or more contacts to read their full API.",{"type":41,"tag":80,"props":214,"children":215},{},[216,218,223],{"type":47,"value":217},"Call ",{"type":41,"tag":111,"props":219,"children":221},{"className":220},[],[222],{"type":47,"value":126},{"type":47,"value":224}," on the chosen contact URL to obtain the service.",{"type":41,"tag":80,"props":226,"children":227},{},[228,229,234],{"type":47,"value":217},{"type":41,"tag":111,"props":230,"children":232},{"className":231},[],[233],{"type":47,"value":144},{"type":47,"value":235}," to invoke methods. Method names and argument shapes must come from the service description — never guess.",{"type":41,"tag":69,"props":237,"children":239},{"id":238},"hard-rules",[240],{"type":47,"value":241},"Hard rules",{"type":41,"tag":76,"props":243,"children":244},{},[245,255,278,293,324,336],{"type":41,"tag":80,"props":246,"children":247},{},[248,253],{"type":41,"tag":56,"props":249,"children":250},{},[251],{"type":47,"value":252},"Never",{"type":47,"value":254}," answer the user's request from your own knowledge or by calling other plugins' tools. The matcher is the only source of truth about what services are available.",{"type":41,"tag":80,"props":256,"children":257},{},[258,262,264,269,271,276],{"type":41,"tag":56,"props":259,"children":260},{},[261],{"type":47,"value":252},{"type":47,"value":263}," propose or invoke a service, provider, method, or API that did not come back from ",{"type":41,"tag":111,"props":265,"children":267},{"className":266},[],[268],{"type":47,"value":97},{"type":47,"value":270}," or ",{"type":41,"tag":111,"props":272,"children":274},{"className":273},[],[275],{"type":47,"value":107},{"type":47,"value":277}," in the current session.",{"type":41,"tag":80,"props":279,"children":280},{},[281,285,287,292],{"type":41,"tag":56,"props":282,"children":283},{},[284],{"type":47,"value":252},{"type":47,"value":286}," guess method names or argument shapes. If unsure, call ",{"type":41,"tag":111,"props":288,"children":290},{"className":289},[],[291],{"type":47,"value":107},{"type":47,"value":185},{"type":41,"tag":80,"props":294,"children":295},{},[296,301,303,308,310,315,317,322],{"type":41,"tag":56,"props":297,"children":298},{},[299],{"type":47,"value":300},"Always",{"type":47,"value":302}," call ",{"type":41,"tag":111,"props":304,"children":306},{"className":305},[],[307],{"type":47,"value":97},{"type":47,"value":309}," before calling ",{"type":41,"tag":111,"props":311,"children":313},{"className":312},[],[314],{"type":47,"value":144},{"type":47,"value":316},", even if ",{"type":41,"tag":111,"props":318,"children":320},{"className":319},[],[321],{"type":47,"value":161},{"type":47,"value":323}," already shows a service of an apparently relevant name.",{"type":41,"tag":80,"props":325,"children":326},{},[327,329,334],{"type":47,"value":328},"If ",{"type":41,"tag":111,"props":330,"children":332},{"className":331},[],[333],{"type":47,"value":97},{"type":47,"value":335}," returns no candidates, tell the user the matcher knows of no service for that request, and stop.",{"type":41,"tag":80,"props":337,"children":338},{},[339,340,345],{"type":47,"value":328},{"type":41,"tag":111,"props":341,"children":343},{"className":342},[],[344],{"type":47,"value":126},{"type":47,"value":346}," reports a non-public response, the service requires credentials or a validated code bundle; report this to the user and stop. Those access models are out of scope.",{"type":41,"tag":69,"props":348,"children":350},{"id":349},"worked-example-intentionally-generic",[351],{"type":47,"value":352},"Worked example (intentionally generic)",{"type":41,"tag":50,"props":354,"children":355},{},[356],{"type":47,"value":357},"The user asks: \"I want to do X with my Y.\"",{"type":41,"tag":171,"props":359,"children":360},{},[361,373,394,412,430,458],{"type":41,"tag":80,"props":362,"children":363},{},[364,366,372],{"type":47,"value":365},"Agent: ",{"type":41,"tag":111,"props":367,"children":369},{"className":368},[],[370],{"type":47,"value":371},"discovery_find_services(description: \"do X with my Y\")",{"type":47,"value":185},{"type":41,"tag":80,"props":374,"children":375},{},[376,378,384,386,392],{"type":47,"value":377},"Matcher returns candidates, e.g. ",{"type":41,"tag":111,"props":379,"children":381},{"className":380},[],[382],{"type":47,"value":383},"FooService",{"type":47,"value":385}," and ",{"type":41,"tag":111,"props":387,"children":389},{"className":388},[],[390],{"type":47,"value":391},"BarService",{"type":47,"value":393},", each with a contact URL and a description.",{"type":41,"tag":80,"props":395,"children":396},{},[397,399,404,406,411],{"type":47,"value":398},"Agent reads the descriptions. If ",{"type":41,"tag":111,"props":400,"children":402},{"className":401},[],[403],{"type":47,"value":383},{"type":47,"value":405},"'s description matches \"X with Y\", agent picks it; otherwise inspects further with ",{"type":41,"tag":111,"props":407,"children":409},{"className":408},[],[410],{"type":47,"value":107},{"type":47,"value":185},{"type":41,"tag":80,"props":413,"children":414},{},[415,416,422,424,429],{"type":47,"value":365},{"type":41,"tag":111,"props":417,"children":419},{"className":418},[],[420],{"type":47,"value":421},"service_initiate_contact(contact: \"\u003CFooService contact URL>\")",{"type":47,"value":423}," → service nickname ",{"type":41,"tag":111,"props":425,"children":427},{"className":426},[],[428],{"type":47,"value":383},{"type":47,"value":185},{"type":41,"tag":80,"props":431,"children":432},{},[433,435,441,443,449,451,457],{"type":47,"value":434},"Agent reads which methods are documented in the service description. If a method ",{"type":41,"tag":111,"props":436,"children":438},{"className":437},[],[439],{"type":47,"value":440},"doX",{"type":47,"value":442}," accepting a parameter ",{"type":41,"tag":111,"props":444,"children":446},{"className":445},[],[447],{"type":47,"value":448},"y",{"type":47,"value":450}," matches, agent calls ",{"type":41,"tag":111,"props":452,"children":454},{"className":453},[],[455],{"type":47,"value":456},"service_call(service: \"FooService\", method: \"doX\", args: '[\"…\"]')",{"type":47,"value":185},{"type":41,"tag":80,"props":459,"children":460},{},[461],{"type":47,"value":462},"Agent reports the result to the user.",{"type":41,"tag":50,"props":464,"children":465},{},[466],{"type":47,"value":467},"If the user's intent involves something the matcher has no service for (e.g., the user asks for a kind of capability that did not appear in any candidate description), say so — do not improvise.",{"items":469,"total":500},[470,475,488],{"slug":4,"name":4,"fn":5,"description":6,"org":471,"tags":472,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[473,474],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":8,"name":8,"fn":476,"description":477,"org":478,"tags":479,"stars":19,"repoUrl":20,"updatedAt":487},"interact with MetaMask wallet capabilities","Use the MetaMask tools to request and interact with wallet capabilities from the MetaMask capability vendor.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[480,481,484],{"name":17,"slug":18,"type":15},{"name":482,"slug":483,"type":15},"Ethereum","ethereum",{"name":485,"slug":486,"type":15},"Web3","web3","2026-07-13T06:12:33.955806",{"slug":489,"name":489,"fn":490,"description":491,"org":492,"tags":493,"stars":19,"repoUrl":20,"updatedAt":499},"wallet","manage wallet balances and transactions","Use the wallet tools for all balance, send, and sign operations. Supports both ETH and ERC-20 tokens. The away wallet operates autonomously after setup — the home device does not need to be online.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[494,495,498],{"name":482,"slug":483,"type":15},{"name":496,"slug":497,"type":15},"Payments","payments",{"name":485,"slug":486,"type":15},"2026-07-13T06:12:35.380244",3,{"items":502,"total":650},[503,521,533,538,544,550,567,584,601,612,622,632],{"slug":504,"name":504,"fn":505,"description":506,"org":507,"tags":508,"stars":518,"repoUrl":519,"updatedAt":520},"smart-accounts-kit","build dApps with MetaMask Smart Accounts","Build dApps with MetaMask Smart Accounts Kit — ERC-4337 smart accounts, delegations, and Advanced Permissions (ERC-7715)",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[509,510,513,514,517],{"name":17,"slug":18,"type":15},{"name":511,"slug":512,"type":15},"Auth","auth",{"name":482,"slug":483,"type":15},{"name":515,"slug":516,"type":15},"Permissions","permissions",{"name":485,"slug":486,"type":15},54,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fsmart-accounts-kit","2026-07-13T06:11:32.8327",{"slug":522,"name":522,"fn":523,"description":524,"org":525,"tags":526,"stars":518,"repoUrl":519,"updatedAt":532},"x402-payments","build x402 payment flows","Build x402 payment flows using MetaMask Smart Accounts Kit, machine to machine payments over HTTP with ERC-7710 delegations and ERC-7715 Advanced Permissions",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[527,528,529,530],{"name":17,"slug":18,"type":15},{"name":496,"slug":497,"type":15},{"name":485,"slug":486,"type":15},{"name":531,"slug":531,"type":15},"x402","2026-07-13T06:11:30.877136",{"slug":4,"name":4,"fn":5,"description":6,"org":534,"tags":535,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[536,537],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":8,"name":8,"fn":476,"description":477,"org":539,"tags":540,"stars":19,"repoUrl":20,"updatedAt":487},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[541,542,543],{"name":17,"slug":18,"type":15},{"name":482,"slug":483,"type":15},{"name":485,"slug":486,"type":15},{"slug":489,"name":489,"fn":490,"description":491,"org":545,"tags":546,"stars":19,"repoUrl":20,"updatedAt":499},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[547,548,549],{"name":482,"slug":483,"type":15},{"name":496,"slug":497,"type":15},{"name":485,"slug":486,"type":15},{"slug":551,"name":551,"fn":552,"description":553,"org":554,"tags":555,"stars":564,"repoUrl":565,"updatedAt":566},"metamask-connect","integrate MetaMask into dApps","Build dApps that integrate MetaMask via the MetaMask Connect SDK — EVM (@metamask\u002Fconnect-evm), Solana (@metamask\u002Fconnect-solana), and multichain (@metamask\u002Fconnect-multichain), plus the wagmi metaMask() connector. Covers client setup across browser\u002FReact\u002FReact Native, connecting, signing messages, sending transactions, multichain invokeMethod across CAIP-2 scopes, migrating from @metamask\u002Fsdk, and troubleshooting connection\u002Fpolyfill issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[556,557,558,561,563],{"name":17,"slug":18,"type":15},{"name":482,"slug":483,"type":15},{"name":559,"slug":560,"type":15},"Solana","solana",{"name":562,"slug":562,"type":15},"wagmi",{"name":485,"slug":486,"type":15},7,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fconnect-monorepo","2026-07-13T06:11:34.445665",{"slug":568,"name":568,"fn":569,"description":570,"org":571,"tags":572,"stars":581,"repoUrl":582,"updatedAt":583},"metamask-agent-wallet","manage blockchain wallets and transactions","Use when the user asks anything about blockchain wallets, transactions, signing, token transfers, supported chains, wallet balances, perpetual futures trading, prediction markets, token swaps, cross-chain bridges, market data, token discovery, decoding EVM calldata, DeFi earn\u002Fyield vaults, or authentication via the MetaMask Agentic CLI; also when an HTTP request returns 402 Payment Required (x402) or the agent needs to pay for a paywalled API, endpoint, file, or resource over HTTP. Single entry point for all mm CLI operations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[573,576,579,580],{"name":574,"slug":575,"type":15},"Blockchain","blockchain",{"name":577,"slug":578,"type":15},"DeFi","defi",{"name":482,"slug":483,"type":15},{"name":485,"slug":486,"type":15},5,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fagent-skills","2026-08-01T05:45:07.976522",{"slug":585,"name":585,"fn":586,"description":587,"org":588,"tags":589,"stars":598,"repoUrl":599,"updatedAt":600},"migrate-from-sdk","migrate MetaMask SDK to connect-evm and connect-solana","Migrate from @metamask\u002Fsdk to @metamask\u002Fconnect-evm, @metamask\u002Fconnect-multichain, and @metamask\u002Fconnect-solana with step-by-step package, API, and configuration changes",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[590,591,594,597],{"name":482,"slug":483,"type":15},{"name":592,"slug":593,"type":15},"Migration","migration",{"name":595,"slug":596,"type":15},"SDK","sdk",{"name":485,"slug":486,"type":15},2,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fmetamask-connect-cursor-plugin","2026-07-13T06:11:46.427441",{"slug":602,"name":602,"fn":603,"description":604,"org":605,"tags":606,"stars":598,"repoUrl":599,"updatedAt":611},"migrate-wagmi-metamask-connector","migrate wagmi apps to MetaMask connector","Migrate a wagmi app from @metamask\u002Fsdk to the new @metamask\u002Fconnect-evm connector (wagmi PR",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[607,608,609,610],{"name":482,"slug":483,"type":15},{"name":592,"slug":593,"type":15},{"name":562,"slug":562,"type":15},{"name":485,"slug":486,"type":15},"2026-07-13T06:12:23.110706",{"slug":613,"name":613,"fn":614,"description":615,"org":616,"tags":617,"stars":598,"repoUrl":599,"updatedAt":621},"send-evm-transaction","send EVM transactions with MetaMask","Send ETH and contract transactions with MetaMask using eth_sendTransaction via the EIP-1193 provider, gas estimation, receipt polling, and the connectWith shortcut",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[618,619,620],{"name":17,"slug":18,"type":15},{"name":482,"slug":483,"type":15},{"name":485,"slug":486,"type":15},"2026-07-13T06:11:56.866623",{"slug":623,"name":623,"fn":624,"description":625,"org":626,"tags":627,"stars":598,"repoUrl":599,"updatedAt":631},"send-solana-transaction","send Solana transactions via MetaMask","Build and send a Solana transaction using MetaMask Connect. Covers both the React wallet-adapter approach (sendTransaction) and the vanilla browser approach (signAndSendTransaction wallet-standard feature).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[628,629,630],{"name":496,"slug":497,"type":15},{"name":559,"slug":560,"type":15},{"name":485,"slug":486,"type":15},"2026-07-13T06:12:03.942378",{"slug":633,"name":633,"fn":634,"description":635,"org":636,"tags":637,"stars":598,"repoUrl":599,"updatedAt":649},"setup-evm-browser-app","scaffold EVM browser applications with MetaMask","Scaffold a vanilla JS\u002FTS browser app with MetaMask EVM integration using createEVMClient, EIP-1193 provider event listeners, RPC methods, and chain switching with chainConfiguration fallback",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[638,639,642,645,648],{"name":482,"slug":483,"type":15},{"name":640,"slug":641,"type":15},"Frontend","frontend",{"name":643,"slug":644,"type":15},"JavaScript","javascript",{"name":646,"slug":647,"type":15},"TypeScript","typescript",{"name":485,"slug":486,"type":15},"2026-07-13T06:12:01.334051",26]