원클릭으로
discovery
// Use the discovery tools to find and use services through a service matcher. Do not rely on prior knowledge of services, providers, or APIs.
// Use the discovery tools to find and use services through a service matcher. Do not rely on prior knowledge of services, providers, or APIs.
Use the MetaMask tools to request and interact with wallet capabilities from the MetaMask capability vendor.
Run the evm-wallet Docker e2e tests (build, start stack, wait for healthy, test, diagnose failures).
Creates a pull request for the current branch.
Updates changelogs for all packages with consumer-facing changes.
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.
Optionally checks, then commits code to the current or a new feature branch.
| name | discovery |
| description | Use the discovery tools to find and use services through a service matcher. Do not rely on prior knowledge of services, providers, or APIs. |
| metadata | {"openclaw":{"emoji":"🧭","requires":{"bins":["discovery"]}}} |
You are an LLM agent driving a service-discovery client. The available services are determined entirely by what is registered with the service matcher right now. You do not know what services exist until you ask the matcher. Treat any prior knowledge you may have about specific services, providers, products, blockchains, wallets, APIs, or vendors as irrelevant to this task — none of it tells you what is reachable from this matcher.
The user expresses an intent in natural language; your job is to turn that intent into a query for the matcher and then drive the returned services on the user's behalf using the tools below. You are not allowed to attempt the user's task by any other means.
ServiceDescription from a contact endpoint (OCAP URL, nickname, or kref). Use to inspect a candidate's API before committing.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".service_initiate_contact. Specify the service by nickname or kref, the method name, and optional JSON-encoded args.discovery_redeem_matcher.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.service_get_description on one or more contacts to read their full API.service_initiate_contact on the chosen contact URL to obtain the service.service_call to invoke methods. Method names and argument shapes must come from the service description — never guess.discovery_find_services or service_get_description in the current session.service_get_description.discovery_find_services before calling service_call, even if discovery_list_tracked already shows a service of an apparently relevant name.discovery_find_services returns no candidates, tell the user the matcher knows of no service for that request, and stop.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.The user asks: "I want to do X with my Y."
discovery_find_services(description: "do X with my Y").FooService and BarService, each with a contact URL and a description.FooService's description matches "X with Y", agent picks it; otherwise inspects further with service_get_description.service_initiate_contact(contact: "<FooService contact URL>") → service nickname FooService.doX accepting a parameter y matches, agent calls service_call(service: "FooService", method: "doX", args: '["…"]').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.