Visible to real users: tools are registered through the native, flag-free WebMCP API. Any capable agent visiting this page today can see and call them.
security grade from deterministic rules only
| kind | feature | origin | expiry | subdomain | origin matches | status |
|---|---|---|---|---|---|---|
| meta | WebMCP | https://example.by:443 | 2026-11-17T00:00:00.000Z | no | no | valid |
| name | title | description | origin | source | annotations | schema props |
|---|---|---|---|---|---|---|
| list-tools | List the tools and apps published on the Services Hub, with category, description, URL and capability metadata. Optional filters narrow the list. | https://example.by | native | 5 | ||
| list-categories | List the categories the Services Hub tools are grouped into, with how many tools sit in each. | https://example.by | native | 0 | ||
| get-tool | Return the full record for one Services Hub tool: description, every domain it answers on, where the processing happens, accepted and produced formats, interfac… | https://example.by | native | 1 | ||
| search-tools | Find Services Hub tools by keyword. Searches names, descriptions, categories, domains, file formats and the task phrasings each tool is indexed under. | https://example.by | native | 1 | ||
| recommend-tool | Describe a task in plain language and get the Services Hub tools that fit it, best first, with the reason each one matched. Use this when you know what the user… | https://example.by | native | 2 | ||
| find-tool-for-file | Given a filename, extension or MIME type, return the Services Hub tools that accept it, and the tools that produce it. | https://example.by | native | 1 | ||
| list-formats | List every file format the Services Hub handles, mapping each input format to the tools that read it and each output format to the tools that write it. | https://example.by | native | 0 | ||
| open-tool | Open one of the Services Hub tools in a new browser tab, by its name. This navigates the user, so only call it once they have chosen a tool. | https://example.by | native | 1 | ||
| set-theme | Switch the Services Hub between the light and dark colour themes. | https://example.by | native | 1 |
Tool "list-formats" looks state-changing but declares no readOnlyHint. Agents use that flag to gate risky calls; without it they cannot tell this tool apart from a safe read.
list-formats · field annotations{}
Tool "set-theme" looks state-changing but declares no readOnlyHint. Agents use that flag to gate risky calls; without it they cannot tell this tool apart from a safe read.
set-theme · field annotations{}
Parameter "query" of tool "search-tools" accepts a free-form string with no enum/pattern/format. If it reaches a shell, filesystem, or outbound request, it is an injection/SSRF surface.
search-tools · field inputSchema.properties.query{"type":"string","description":"Keyword to search for, e.g. \"pdf\", \"watermark
Parameter "file" of tool "find-tool-for-file" accepts a free-form string with no enum/pattern/format. If it reaches a shell, filesystem, or outbound request, it is an injection/SSRF surface.
find-tool-for-file · field inputSchema.properties.file{"type":"string","description":"A filename, extension or MIME type, e.g. \"repor
Tool "list-tools" reads as choice/filter-like but parameter "category" has no enum/pattern/format/maxLength. A prior measurement round found enum-vs-free-text tool-call accuracy significantly different (p=0.0079); constrain the value set if the domain is bounded.
list-tools · field inputSchema.properties.category{"type":"string","description":"Category filter, e.g. \"Converters\" or \"Games\
Tool "list-tools" reads as choice/filter-like but parameter "platform" has no enum/pattern/format/maxLength. A prior measurement round found enum-vs-free-text tool-call accuracy significantly different (p=0.0079); constrain the value set if the domain is bounded.
list-tools · field inputSchema.properties.platform{"type":"string","description":"Platform filter, e.g. \"web\" or \"macOS\"."}
Tool "list-tools" reads as choice/filter-like but parameter "language" has no enum/pattern/format/maxLength. A prior measurement round found enum-vs-free-text tool-call accuracy significantly different (p=0.0079); constrain the value set if the domain is bounded.
list-tools · field inputSchema.properties.language{"type":"string","description":"Interface language filter, e.g. \"en\" or \"ru\"
Tool "find-tool-for-file" reads as choice/filter-like but parameter "file" has no enum/pattern/format/maxLength. A prior measurement round found enum-vs-free-text tool-call accuracy significantly different (p=0.0079); constrain the value set if the domain is bounded.
find-tool-for-file · field inputSchema.properties.file{"type":"string","description":"A filename, extension or MIME type, e.g. \"repor
Tool "list-tools"'s inputSchema declares properties but no `required` array. Opinion: most tools have at least one mandatory argument; an empty required list often just means the author never filled it in.
list-tools · field inputSchema.required(absent)
Start from a config the checks above already pass.
Build your own WebMCP configThis is an automated, point-in-time report from a static read of this page's WebMCP tool registrations (document.modelContext / navigator.modelContext). No tool was executed. The grade, when shown, reflects deterministic checks only. Job 1bd12bfb059ed795. Rulepack rulepack-2026.09.1.