Use the discovery tools to find and use services through a service matcher. Do not rely on prior knowledge of services, providers, or APIs.
59
70%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./packages/agentmask/openclaw-plugin-discovery/skills/discovery/SKILL.mdYou 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.
3d5aea9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.