0.0 / 30
What changed in the harness
Selection accuracy 98→98, token cost up 18%, unconfirmed writes 0%→0%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
25.3 / 30
03Economics
19.4 / 20
04Discoverability
10.3 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
11 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
sites_list |
no_return_description |
List all sites (properties) you have access to in Google Search Console. Returns the list of accessible sites, each with its site URL (e.g. 'https://example.com/' or 'sc-domain:example.com') and your permission level, so you can discover which siteUrls to use with other tools. |
sites_get |
no_return_description |
Retrieve information about a specific site (property) in Google Search Console, identified by its siteUrl (e.g. 'https://example.com/' or 'sc-domain:example.com'). Returns the site's permission level and verification state, which is useful for checking whether a site is verified and accessible before querying its data. |
sites_add |
no_return_description |
Add a new site (property) to Google Search Console using its site URL (e.g. 'https://example.com/' or 'sc-domain:example.com'). Verification may still be required. Returns the newly added site's URL and permission level; the site may remain unverified until ownership is confirmed. |
sites_delete |
no_return_description |
Remove a site (property) from Google Search Console by its site URL (e.g. 'https://example.com/' or 'sc-domain:example.com'). Returns a success response confirming removal; the site will no longer appear in sites_list and subsequent requests targeting it will fail until it is re-added. |
sitemaps_list |
params_unexplained no_return_description |
List all sitemaps submitted for a site (property), identified by siteUrl (e.g. 'https://example.com/' or 'sc-domain:example.com'), in Google Search Console. Optionally pass sitemapIndex to list only the sitemaps contained within that sitemap index. Returns each sitemap's content, submission state, and last submission status. |
sitemaps_get |
params_unexplained no_return_description |
Retrieve information about a specific sitemap (feedpath, e.g. 'https://example.com/sitemap.xml') for the site identified by siteUrl (e.g. 'https://example.com/' or 'sc-domain:example.com'). Returns the sitemap's submission status, the date it was last downloaded, and content details including any errors. |
sitemaps_submit |
params_unexplained no_return_description |
Submit a sitemap (feedpath, e.g. 'https://example.com/sitemap.xml') for the site identified by siteUrl (e.g. 'https://example.com/' or 'sc-domain:example.com') to Google Search Console. Returns an empty success response; the submitted sitemap will then appear in sitemaps_list results once accepted. |
sitemaps_delete |
params_unexplained no_return_description |
Delete a sitemap (feedpath) for the site identified by siteUrl (e.g. 'https://example.com/' or 'sc-domain:example.com') from Google Search Console. Returns a success response confirming removal; the sitemap no longer appears in sitemaps_list and Google stops processing it. |
search_analytics_query |
params_unexplained |
Query search traffic data from Google Search Console for the site identified by siteUrl (e.g. 'https://example.com/' or 'sc-domain:example.com'). Returns clicks, impressions, CTR, and position data with flexible filtering (dimensionFilterGroups) and grouping by dimensions, aggregation control, and rowLimit/startRow pagination. |
indexing_publish |
no_return_description |
Notify Google about a URL update or removal via the Indexing API. Use URL_UPDATED when a page is created or updated, URL_DELETED when a page is removed. Returns the notification metadata, including the notification type and the timestamp Google recorded for it, matching what indexing_get_metadata later retrieves. |
indexing_batch_publish |
no_return_description |
Batch notify Google about multiple URL updates or removals via the Indexing API. Combines up to 100 notifications into a single HTTP request for efficiency. Returns the notification metadata (type and recorded timestamp) for each submitted URL, mirroring the response format of indexing_get_metadata. |
Selection evidence
Confusable tool pairs.
3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
indexing_publish |
indexing_batch_publish |
medium | Both notify Google about URL updates/removals and differ only in single-vs-batch. A task like 'notify Google about my page updates' without a stated URL count, or 'update indexing for all these pages', could plausibly pick the wrong one (single publish for many URLs, or batch for one). |
sites_get |
sitemaps_get |
low | Both are described as 'retrieve information about a specific ...' (site/property vs sitemap) and take URL-like inputs. A vague task like 'get info about example.com' offers no explicit sitemap keyword, but mentioning 'site' or 'sitemap' normally disambiguates, so confusion is only marginal. |
sitemaps_list |
sitemaps_get |
low | Both operate on a site's sitemaps with overlapping wording ('list ... sitemaps' vs 'retrieve information about a specific sitemap'). A task like 'show me my sitemap for example.com' could be read as listing all sitemaps or fetching one specific sitemap's details, especially when the agent lacks a concrete feedpath; still, the list/get verb distinction usually resolves it. |
Compare the field