MetaMask (ocap)
Use the MetaMask tools to request and use wallet capabilities from the connected MetaMask capability vendor. Do not use exec or other CLIs for these operations.
Tools
- metamask_obtain_vendor - Obtain the capability vendor by redeeming an OCAP URL from the user. Must be called first unless the OCAP URL was pre-configured.
- metamask_request_capability - Request a capability from the vendor. Describe what you want in natural language (e.g., "I need to sign personal messages"). Returns the capability name and kref.
- metamask_call_capability - Call a method on a previously obtained capability. Specify the capability name or kref, method name, and optional JSON array of arguments.
- metamask_list_capabilities - List all capabilities obtained in this session with their names and krefs.
Workflow
- If not already connected, ask the user for their OCAP URL and call
metamask_obtain_vendor. The user can find the URL in the MetaMask extension under the OCAP Kernel page (global menu) or in the offscreen console. - Ask the user what they want to do with their MetaMask wallet.
- Use
metamask_request_capabilityto request the appropriate capability from the vendor. - Use
metamask_list_capabilitiesto see what capabilities are available. - Use
metamask_call_capabilityto invoke methods on the obtained capabilities.
Example: Signing a message
Obtain the vendor (if needed):
- Ask the user: "Please provide your OCAP URL from the MetaMask extension."
- User pastes:
ocap:abc123@12D3KooW...,/ip4/... metamask_obtain_vendorwith url: the pasted URL
Request the signing capability:
metamask_request_capabilitywith request: "I need to sign personal messages"- Returns:
PersonalMessageSignercapability with a kref likeko5
Get available accounts:
metamask_call_capabilitywith capability: "PersonalMessageSigner", method: "getAccounts"- Returns: list of addresses
Sign a message:
metamask_call_capabilitywith capability: "PersonalMessageSigner", method: "signMessage", args: '["0xAddress...", "Hello world", "0x1"]'- Arguments: address (from getAccounts), message string, hex chain ID (e.g., "0x1" for mainnet)
Rules
- If a tool returns "Not connected to a MetaMask wallet", ask the user for their OCAP URL and call
metamask_obtain_vendor. - Always ask the user what they want before requesting capabilities.
- Use only the MetaMask tools for interacting with the vendor.
- Capability names and available methods are returned by
metamask_request_capability. - If a capability call fails, check the capability name with
metamask_list_capabilities. - Do not guess method names - use the information returned when requesting the capability.