Bob Ross
Manages a Canonical Landscape estate, providing inventory, alerts, activities, patching, and script execution with a safety layer including blast-radius preview, dry-run confirmation handshake, and full audit logging.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bob Rossshow computers with pending security updates"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bob Ross ๐จ
"We don't make mistakes, just happy little servers."
An MCP server for managing a Canonical Landscape estate from an AI agent (Claude Code / Desktop). Bob Ross wraps the Landscape API as calm, friendly MCP tools โ inventory, alerts, activities, patching, script execution, reboots โ with a safety layer built right in, so your agent can tend a whole fleet of happy little servers without ever beating the devil out of the wrong one.
Everybody needs a friend. Even your Ubuntu estate.
๐๏ธ Why it's not just a dumb API wrapper
A blank canvas is a beautiful thing โ and so is a fleet that's still standing. Bob Ross paints carefully:
Blast-radius preview โ before you touch anything,
resolve_querysteps back from the easel and shows you how many machines a query matches (and a sample). Always know how big the canvas is.Dry-run โ confirm handshake โ every destructive tool returns a short-lived
confirm_tokenon the first call. You have to call again with the token to actually do it. If the set of matched machines drifts in between, the token is refused. No happy little accident reboots 500 boxes.Secure by default โ read-only mode is on out of the box (we all start with a clean canvas). Writes need two switches flipped on purpose. TLS is verified. Secrets never touch the logs.
Full audit log โ every stroke (dry runs, executes, denials) is appended to a redacted JSONL trail. You can always see what the brush did.
Activity-aware โ write actions in Landscape run later, asynchronously. Pass
wait=trueand Bob Ross watches the paint dry, then tells you succeeded / failed / still-going per machine โ not just "queued."Dual auth โ legacy HMAC query API or REST bearer token, auto-detected.
Related MCP server: Cloud Pilot MCP
๐จ Get the paints out (install)
From PyPI โ the whole studio in one command:
pip install bob-ross-landscapeThat gives you the bob-ross command (the import package is bob_ross).
git clone https://github.com/just-an-oldsalt/bob-ross
cd bob-ross
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest # unit tests (safety / signing / config / health / ...)
python scripts/smoke.py # safe live smoke test vs your instance (read-only, no writes)๐ผ๏ธ Set up your palette (configuration)
Everything is BOBROSS_* env vars (or a .env file โ see .env.example):
Var | Default | Meaning |
| โ | Landscape base URL (no trailing |
| โ | Legacy HMAC keys (mode A) |
| โ | REST bearer token (mode B) |
|
| Blocks all writes โ the safe blank canvas |
|
| The second switch needed to enable writes |
|
| Verify TLS certs (set |
To let Bob Ross pick up a brush, flip both
BOBROSS_READ_ONLY=falseandBOBROSS_ALLOW_WRITES=true. Even then, every destructive action still needs the dry-run โ confirm handshake. Belt and suspenders. Happy and safe.
๐ช Add it to Claude Code
pip install bob-ross-landscape
claude mcp add bob-ross --scope user \
--env BOBROSS_LANDSCAPE_URL=https://landscape.example.com \
--env BOBROSS_ACCESS_KEY=YOUR_KEY \
--env BOBROSS_SECRET_KEY=YOUR_SECRET \
-- bob-rossPrefer to keep secrets out of Claude's config? Put them in a .env file and run
from that directory instead:
claude mcp add bob-ross --scope user -- \
bash -lc 'cd /path/to/your/bobross-env && exec bob-ross'Claude Desktop (stdio)
{
"mcpServers": {
"bob-ross": {
"command": "bob-ross",
"env": {
"BOBROSS_LANDSCAPE_URL": "https://landscape.example.com",
"BOBROSS_ACCESS_KEY": "YOUR_KEY",
"BOBROSS_SECRET_KEY": "YOUR_SECRET"
}
}
}
}Bob Ross always wakes up in read-only mode. Start there. Get comfortable. Then, when you're ready, let's get a little crazy.
๐ฒ The brushes (tools)
Read (always safe โ look all you like):
ping ยท estate_health ยท list_computers ยท get_computer ยท resolve_query ยท
pending_updates ยท list_alerts ยท list_activities ยท get_activity ยท
wait_for_activity ยท list_scripts
Write (gated โ dry-run โ confirm every time):
execute_script ยท reboot_computers ยท apply_security_upgrades ยท
upgrade_packages ยท install_packages ยท remove_packages ยท add_tags ยท
remove_tags
Activity-creating write tools take
wait=trueto poll the resulting Landscape activity to a terminal status and hand back acompletionsummary (succeeded / failed / still-incomplete) โ so your agent knows the real outcome, not just "queued."
Resources: landscape://computers ยท landscape://alerts ยท
landscape://health ยท landscape://computer/{computer_id} (template)
Prompts: patch_security_updates ยท triage_estate ยท
reboot_reboot_required ยท patch_machine
๐๏ธ A happy little workflow
You have unlimited power here. Move mountains โ one confirmed step at a time:
you: "what needs my attention across the fleet?"
โ estate_health โ "kaylee-mc: 138 pending upgrades, 3 boxes need reboots"
you: "what would patching kaylee-mc actually change?"
โ pending_updates title:kaylee-mc โ the list, per package
you: "apply the security upgrades there"
โ apply_security_upgrades โ dry-run shows blast radius + a confirm_token
โ (you approve) โ re-run with the token + wait=true
โ completion: succeeded โ
no failed patches, just happy little servers๐ฆ Publishing & links
Releases: tag
vX.Y.Z,gh release createโ GitHub Actions publishes to PyPI via OIDC (no tokens). SeePUBLISHING.md.MCP Registry manifest:
server.json
"Talent is a pursued interest. Anything you're willing to practice, you can do."
Now go tend some happy little servers. ๐จ
Available Tools
19 toolsadd_tagsB
Add tags to matched machines (non-destructive, but still write-gated).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | ||
| query | Yes | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false; description adds that it is non-destructive but write-gated, confirming safety profile. Yet it omits details like whether tags are appended or overwritten, or behavior on existing tags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence with no unnecessary words, efficiently conveying the core purpose and a key behavioral trait.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (including an unusual confirm_token) and no parameter descriptions, the description is insufficient. Agent would likely need to guess token purpose. Output schema exists but is not described, which is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description provides no explanation for any of the 3 parameters (tags, query, confirm_token). The agent gains no additional insight beyond the schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (add tags) and target (matched machines), but does not explicitly clarify that 'matched machines' are those returned by a query parameter, though it is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides some guidance by stating the operation is non-destructive and write-gated, which helps distinguish from read-only tools. However, it does not specify when to use this tool versus removing tags or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_security_upgradesBDestructive
Apply pending security (USN) upgrades to matched machines. Dry run first. Set wait=true to poll the upgrade activity to completion.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| query | Yes | ||
| wait_timeout | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior. The description adds that a dry run occurs first, and that the wait parameter controls polling, but fails to mention the need for confirm_token to actually apply changes, leaving a gap in understanding the full flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, no redundancy, and the key action is front-loaded. It could be more structured but achieves brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature and multiple parameters, the description is incomplete. It does not explain the dry run output, the role of confirm_token, or the return behavior, forcing reliance on an output schema that is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description only explains the wait parameter. The required query, wait_timeout, and confirm_token parameters are not addressed, leaving agents to infer their meaning from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies pending security upgrades to matched machines, with a specific verb and resource. It distinguishes itself from sibling tools like 'upgrade_packages' by focusing on security upgrades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises a dry run first and mentions the wait parameter for polling, but does not provide explicit when-to-use or when-not-to-use guidance compared to alternatives. It lacks explanation of the confirmation token flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estate_healthARead-only
One-shot situational awareness across the whole estate: totals, machines
needing reboots, stale/offline machines, distribution breakdown, alert counts,
recent failed activities, and a ranked attention list of what to act on.
| Name | Required | Description | Default |
|---|---|---|---|
| stale_after_hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description's job is lighter. It adds value by listing the output components, which are not in annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and then enumerates outputs efficiently. It is dense but not overly long; every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return values may be defined there, but the description still misses explaining the parameter's effect. Given the tool's simplicity and one param, this is a notable gap, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description completely omits the only parameter 'stale_after_hours'. This is a critical gap: the agent cannot understand how to adjust the staleness threshold or that a default exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'one-shot situational awareness across the whole estate' and lists specific outputs (totals, reboots, stale machines, etc.), distinguishing it from sibling tools like list_computers or list_alerts which focus on individual aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for quick overview ('one-shot') and decision-making ('what to act on'), providing clear context. However, it does not explicitly state when not to use or name alternative tools, missing the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_scriptADestructive
Run a stored script on matched machines. Dry run first (omit confirm_token). Set wait=true to poll the resulting activity to completion and report pass/fail.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| query | Yes | ||
| username | No | root | |
| script_id | Yes | ||
| wait_timeout | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true. The description adds context by explaining the dry run capability (omit confirm_token) and polling behavior (wait=true). This goes beyond the annotations by detailing how to safely execute and monitor. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous words. The first sentence states the main action, and the second covers the two key usage patterns. It is efficiently front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core workflow (dry run and polling) but lacks explanations for required parameters like query (what machines?) and script_id (from list_scripts?). With 6 parameters and destructive potential, more detail on parameter usage is needed. However, the output schema exists, reducing the need to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It explains confirm_token (omit for dry run) and wait (set true for polling), but does not describe query, script_id, username, or wait_timeout. These are critical, especially the required query and script_id. The description adds limited meaning for only 2 of 6 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run a stored script on matched machines', specifying the verb, resource, and scope. This uniquely distinguishes it from sibling tools like list_scripts, and there is no ambiguity about its primary action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Dry run first (omit confirm_token)' and 'Set wait=true to poll the resulting activity to completion'. This clearly indicates when to use dry runs and how to wait for results. It does not explicitly state when not to use, but the advice is practical and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activityARead-only
Status/detail of one activity by id (e.g. to see if a reboot finished).
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=true, covering safety and openness. The description adds minimal behavioral context (returns status/detail) beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste, front-loaded with key information. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 param, output schema exists), the description is complete. It explains purpose and a typical use case. The output schema handles return value documentation, so no need for description to cover that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter (activity_id) has 0% schema description coverage. The description says 'by id' which adds minimal meaning, but for a simple integer ID, the schema name and tool name provide sufficient context. Does not fully compensate for missing schema description but adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets status/detail of one activity by id, with an example of checking if a reboot finished. This verb+resource combination is specific and distinguishes it from siblings like list_activities (list) and wait_for_activity (wait).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a use case ('e.g. to see if a reboot finished'), implying when to use it. However, it does not explicitly exclude alternatives or state when not to use it, lacking full contrast with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_computerBRead-only
Full detail for a single computer by id.
| Name | Required | Description | Default |
|---|---|---|---|
| computer_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral context beyond the annotations (readOnlyHint, openWorldHint). It states 'full detail' but no specifics about permissions or limitations. Since annotations cover the read-only and open-world aspects, no contradiction; the description simply lacks additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-front-loaded sentence that conveys the core purpose without unnecessary words. It is appropriately concise for a simple lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema present), the description is mostly complete. It could mention the relationship to list_computers or the nature of 'full detail', but for a basic getter, it suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and only one parameter (computer_id). The description merely says 'by id' without adding type, format, or source suggestions (e.g., from list_computers). For a tool with no schema descriptions, this is inadequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns full detail for a single computer by id. It specifies the verb ('get'), resource ('computer'), and qualifier ('by id'). However, it does not differentiate from sibling tools like 'list_computers' which might return similar but summarized data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need detail for a specific computer, but it provides no explicit guidance on when to use this tool versus alternatives, such as using 'list_computers' first to obtain an ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_packagesADestructive
Install packages on matched machines. Dry run first (omit confirm_token). Set wait=true to poll to completion.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| query | Yes | ||
| packages | Yes | ||
| wait_timeout | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: destructive operation (with destructiveHint annotation), requires confirm_token for actual installation, and supports synchronous polling via wait. Adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the action and include critical usage details. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a package installation tool, but lacks explanation of return values (output schema exists) and does not warn about potential side effects of destructive action beyond the annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description only partially compensates by explaining confirm_token and wait. It does not explain query or packages, leaving ambiguity about the matching mechanism and package format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool installs packages on matched machines, with specific instructions for dry run and polling. This effectively distinguishes it from siblings like upgrade_packages and remove_packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: perform a dry run first by omitting confirm_token, and set wait=true for polling. However, it does not differentiate when to use this tool over alternatives like upgrade_packages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_activitiesCRead-only
Recent activities (async jobs) and their status. Use to track prior actions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=true, so the bar is lower. Description adds 'Recent activities... status' but does not disclose ordering, pagination, or the open-world nature beyond what annotations hint. Minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but omits important information about parameters and usage nuances. It is front-loaded with the core purpose, but brevity comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 undocumented parameters, no output schema shown, and only minimal context, the description is incomplete. It mentions status but lacks parameter semantics, result details, and guidance on how 'recent' is defined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema provides no parameter descriptions. The description does not mention or explain the 'limit' and 'query' parameters at all, failing to compensate. No meaning added beyond raw schema properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'list recent activities (async jobs) and their status', identifying the resource and action. Distinguishes from siblings like get_activity (single) and wait_for_activity (polling) by focusing on listing all recent items with status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Says 'Use to track prior actions', giving a usage context. But does not explicitly state when not to use or mention alternatives like get_activity for details or list_alerts for alerts. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alertsARead-only
Active alerts across the estate (pending security upgrades, offline, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and openWorldHint=true. The description adds specific behavior by listing the types of alerts (pending security upgrades, offline) without contradicting annotations. It discloses no side effects, which is appropriate for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and contains no unnecessary words. It efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, annotations, and an output schema, the description is complete enough. It clarifies the scope of alerts, and the output schema handles return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema covers all. Per guidelines, baseline is 4 for zero parameters. The description does not need to add parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists active alerts across the estate with examples like pending security upgrades and offline. The name 'list_alerts' reinforces the purpose, and it distinguishes from sibling tools like list_computers and estate_health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It explains what alerts are included, but lacks guidance on when to use it over related tools like estate_health or pending_updates. Usage is implied from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_computersARead-only
List computers in the estate. query uses Landscape's query language
(e.g. 'tag:web', 'os:noble', 'alert:security-upgrades').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true (safe) and openWorldHint=true. Description adds behavioral context about Landscape query language, which is useful beyond annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with essential information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, return values are covered. Description explains the query language and usage. Could mention pagination behavior, but sufficient for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only the 'query' parameter is explained with examples. 'limit' and 'offset' are not described beyond their names and defaults. Schema has 0% coverage, so description partly compensates but is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List computers in the estate', using a specific verb and resource. It distinguishes from siblings like 'get_computer' (singular) and 'resolve_query' (query-only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides query language examples ('tag:web', etc.), implying usage for filtering. No explicit when-not-to-use or alternatives, but context is clear for a list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scriptsARead-only
Stored scripts available to run via execute_script.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description adds minimal new behavioral info beyond stating that it lists scripts. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is fully front-loaded. Every word is essential, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only, open world), the description sufficiently covers its purpose. An output schema exists, so return format details are not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100%. The description does not need to add parameter details, meeting expectations for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists stored scripts for execution via execute_script. It uses specific verb 'list' and resource 'scripts,' and the sibling execute_script is mentioned, aiding differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage before running scripts with execute_script. While it does not explicitly mention when not to use, the context of listing available scripts is clear for the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pending_updatesARead-only
List packages with pending upgrades on matched machines โ what would actually change if you patched. Returns totals, a per-machine upgrade count, and a sample of packages. Preview this before apply_security_upgrades / upgrade_packages.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| sample | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds behavioral context beyond annotations by detailing the return structure: 'totals, a per-machine upgrade count, and a sample of packages.' No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action and returns. No superfluous text; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, annotations, and sibling tools, the description covers all essential aspects: purpose, usage guidance, return structure, and relation to other tools. It is complete for this type of tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides some meaning: 'on matched machines' relates to the query parameter, and 'a sample of packages' relates to the sample parameter. However, it lacks explicit details on the query syntax or the exact interpretation of the sample count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'packages with pending upgrades', and the scope 'on matched machines'. It also mentions what is returned (totals, per-machine count, sample) and distinguishes from siblings by naming related tools like apply_security_upgrades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'Preview this before apply_security_upgrades / upgrade_packages.' This provides clear context for use and suggests it as a prerequisite step, differentiating it from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingARead-only
Check connectivity and that credentials work against Landscape.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint. The description adds context about what is checked (connectivity and credentials), which is useful but does not go significantly beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the purpose without any unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, clear purpose, and an existing output schema), the description is adequate. It could mention the return value, but the output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema description coverage, the description needs no parameter details. The baseline for no-parameter tools is 4, and the description satisfies this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks connectivity and credential validity against Landscape. It uses a specific verb-resource pair and is distinct from sibling tools that perform more complex management tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. However, its nature as a basic connectivity check implies it should be used before operations that depend on active credentials, but the description does not state this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reboot_computersADestructive
Reboot matched machines. Dry run first (omit confirm_token). Set wait=true to poll until the reboot activity finishes.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| query | Yes | ||
| wait_timeout | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive. The description adds the dry-run mode (non-destructive without confirm_token) and polling behavior via wait. It does not detail all side effects but adds significant context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, and front-loaded with the verb and object. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and output schema exist, the description adequately covers key behaviors (dry run, confirmation, polling). However, it lacks details on query syntax and error handling, which could be important for safe use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must explain parameters. It covers query (matched machines), confirm_token (dry run), and wait (polling), but does not mention wait_timeout. This leaves a notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Reboot' and specifies 'matched machines', clearly indicating the action and target. Among siblings, no other tool has a rebooting verb, making it distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to dry run first by omitting confirm_token, and suggests setting wait=true to poll until completion. This provides a clear sequence and hints for safe usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_packagesADestructive
Remove packages from matched machines. Dry run first (omit confirm_token). Set wait=true to poll to completion.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| query | Yes | ||
| packages | Yes | ||
| wait_timeout | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint true, but the description adds critical context: dry run safety mechanism and polling behavior. No contradiction; supplements annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with the core action. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, required fields, and output schema, the description covers the main workflow (dry run then confirm, polling). Leaves out parameter details but overall adequate for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and description only adds meaning for confirm_token (dry run) and wait (polling). The other three parameters (query, packages, wait_timeout) remain unexplained, failing to compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes packages from matched machines, with a specific verb ('remove') and resource ('packages'), distinguishing it from sibling tools like install_packages and upgrade_packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: dry run first by omitting confirm_token, and set wait=true to poll. This is clear context but doesn't explicitly exclude when not to use, which is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tagsC
Remove tags from matched machines (write-gated).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | ||
| query | Yes | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds 'write-gated' which hints at permission requirements but does not disclose other behaviors like whether removal is reversible or what happens if tags don't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (one sentence) but sacrifices necessary parameter details. It could be restructured to include parameter semantics without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, 2 required, no parameter descriptions, and is a write operation, the description lacks completeness. The existence of an output schema reduces need to explain return values, but parameter usage is critically missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description provides no explanation of the three parameters (tags, query, confirm_token). The agent must infer their meaning solely from names and the schema, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove) and the resource (tags from matched machines), but does not explicitly differentiate from sibling tools like 'add_tags'. The phrase 'write-gated' adds some context about permissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., add_tags, modify_tags). The description implies it's for writing operations but lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_queryARead-only
Preview the BLAST RADIUS of a query: how many machines it matches and a sample of them. Always run this before a destructive action.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. Description adds that it returns match count and a sample, and positions it as a pre-destructive preview, which is valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no waste. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with output schema and annotations, description covers purpose, sample output, and usage. Lacks details on pagination or query semantics, but otherwise adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one required string parameter 'query' with 0% description coverage. Description does not specify query format, syntax, or examples, failing to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool previews the blast radius, giving count and sample. Uses specific verb 'preview' and distinguishes from destructive siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Always run this before a destructive action', providing clear context. Does not detail when not to use or list alternatives, but sibling tools imply destructive alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_packagesADestructive
Upgrade packages on matched machines (omit packages to upgrade all). Dry run first.
Set wait=true to poll to completion.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| query | Yes | ||
| packages | No | ||
| wait_timeout | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Addes behavioral context beyond annotations: omitting packages upgrades all, and dry run is implied. The destructiveHint annotation is confirmed, and description provides additional constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose. Every phrase adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too brief for a destructive 5-parameter tool. Missing explanations for query matching, confirm token, and wait timeout reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only two of five parameters (packages and wait) are explained. Critical parameters like query, wait_timeout, confirm_token are ignored, and schema descriptions are absent. This leaves significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Upgrade' and resource 'packages on matched machines', and distinguishes from sibling tools like install_packages and remove_packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes a workflow instruction ('Dry run first') and a polling option ('Set wait=true to poll to completion'). However, it does not explicitly compare with alternatives or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_activityARead-only
Poll an activity (e.g. a reboot or patch job) until it finishes or times out, then report its final status. Use after a write action to confirm success.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint, which are consistent with polling behavior. The description adds that it polls until finish or timeout and reports final status, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each adding value: the first defines purpose and behavior, the second provides usage guidance. No unnecessary words, front-loaded key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no nested objects, output schema present), the description covers core purpose and usage. However, parameter descriptions are missing, and timeout behavior details are absent, which holds it back from a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. However, it does not mention activity_id or timeout_seconds explicitly. The example 'activity (e.g. a reboot or patch job)' hints at activity_id, but no details on parameter types, defaults, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it polls an activity until completion or timeout and reports final status. This distinguishes it from siblings like get_activity (one-shot status) and list_activities (listing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use after a write action to confirm success,' providing clear context. It does not explicitly state when not to use or list alternatives, but the intended use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose, from package management to query resolution and system health. Even similar operations like apply_security_upgrades and upgrade_packages are differentiated by description and scope, leaving no ambiguity for an agent.
Most tool names follow a verb_noun pattern (e.g., install_packages, list_computers), with a few exceptions like pending_updates (adjective_noun) and estate_health (noun_noun). The pattern is largely consistent, aiding predictability.
With 19 tools covering a broad IT estate management domain, the count is slightly above the ideal range but justified by the need for granular operations (e.g., separate security upgrades, pending updates, scripts). No tool feels superfluous.
The tool surface covers core CRUD and lifecycle operations for computers, packages, tags, scripts, and activities. Minor gaps exist, such as lack of computer creation/deletion or patch scheduling, but the set is sufficient for common management tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect, monitor, and control AI agents โ tasks, approvals, schedules, and governance.
Give your AI agents the tools to build, manage, and run automation workflows.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Agent-native security, trust, reliability, data and procurement tools for AI workflows.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to launch and manage system processes with strict security controls through executable allowlists, resource monitoring, and output capture capabilities.891MIT
- AlicenseNot gradedqualityCmaintenanceProvides AI agents with natural language control over AWS, Azure, GCP, and Alibaba Cloud infrastructure through dynamic API discovery and execution. Supports 51,900+ cloud operations and includes OpenTofu integration for complete infrastructure lifecycle management.3MIT
- FlicenseCqualityBmaintenanceEnables AI assistants to manage Ansible infrastructure, including inventories, playbooks, roles, and advanced troubleshooting with self-healing capabilities.39
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to securely manage Linux, Docker, Kubernetes, and SSH infrastructure through MCP with permission control, audit logging, and dangerous command filtering.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/just-an-oldsalt/bob-ross'
If you have feedback or need assistance with the MCP directory API, please join our Discord server