Veeam AIops
The Veeam AIops server provides an AI-powered interface for managing Veeam Backup & Replication, offering comprehensive backup operations, diagnostics, and monitoring with built-in governance, audit logging, and safety guardrails.
Backup & Job Management
List, inspect, start, stop, retry, enable, and disable backup jobs (all write operations support dry-run preview)
List stored backups and inspect the protected VMs/agents within them
Repository Management
List and inspect backup repositories with capacity details
Get a capacity summary across all repositories and flag low-space repos (<15% warn, <10% critical)
Restore Operations
List restore points (optionally filtered by backup) and initiate VM restores from a restore point
VM restore is irreversible/high-risk; dry-run preview is available
Session Management
List, poll, and view logs for active or recent sessions; stop running sessions
Diagnostics & Health
overview: one-shot health summary of job results, repository status, and running sessionsjob_failure_rca: triage recent failures and categorize root causes (e.g., repository full, unreachable source)repository_capacity_rca: flag critically low repositories
Infrastructure Monitoring
List managed servers and backup proxies
Undo / Reversibility
Many write operations record an inverse undo token; list and apply tokens to reverse prior actions (each token usable once)
Governance & Safety
Every operation is audited to a local SQLite database
Write tools declare a risk level; destructive commands require double confirmation
Credentials are encrypted at rest and never stored in plaintext
Provides tools for managing Veeam Backup & Replication operations, including listing, starting, stopping, enabling, and disabling jobs; managing restore points and initiating restores; listing repositories and backups; monitoring sessions; and running diagnostics.
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., "@Veeam AIopslist all backup jobs"
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.
Veeam AIops
Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by Veeam Software. "Veeam" is a trademark of its owner. MIT licensed.
AI-powered Veeam Backup & Replication operations with a built-in governance
harness — unified audit log, policy engine, token/runaway budget guard,
undo-token recording, and descriptive risk tiers. Self-contained: no
external dependencies beyond httpx and the MCP SDK. Coverage is not yet full
coverage of every Veeam operation.
Verification status: the test suite is mock-based; this package has not yet been validated against a live Veeam B&R server. See docs/VERIFICATION.md.
What works
CLI (
veeam-aiops ...):init,overview,job list/get/start/stop/retry/enable/disable,restore list-points/start,repository list/get/state,session list/get/log/stop,backup list/objects,diagnose job-failures/repo-capacity,infra servers/proxies,secret set/list/rm/migrate/rotate-password,doctor,mcp.MCP server (
veeam-aiops mcporveeam-aiops-mcp): 25 tools (17 read, 8 write), every one wrapped with the bundled@governed_toolharness.Diagnostics / RCA (read-only):
diagnose job-failurestriages recent job sessions — flags every Failed/Warning run and categorizes the likely cause (repository full, source/guest unreachable, credential/VSS failure, retry exhaustion), citing the session result + matched error substring;diagnose repo-capacityflags repositories under the free-space thresholds (<15% warn, <10% critical). Both cite the measured number that tripped each finding, worst-first.Encrypted credentials: passwords live in an encrypted store
~/.veeam-aiops/secrets.enc(Fernet + scrypt) — never plaintext on disk. Unlock with a master password fromVEEAM_AIOPS_MASTER_PASSWORD(MCP/CI) or an interactive prompt (CLI).Reversibility: write ops with a clean inverse (job start/stop/retry, enable/disable) record an inverse undo descriptor; the irreversible VM restore declares none and is tagged
highrisk.Async sessions: Veeam jobs and restores run as sessions — poll progress with
session list/session get/session log(the runaway budget guard prevents poll loops from running away).
Related MCP server: spanning-mcp
What this tool does, and does not, decide
It delivers Veeam Backup & Replication operations — reads and writes — accurately and efficiently, and records every one of them. It does not decide whether a write is allowed to happen. That is the agent's judgement, or the permission of the Veeam account you connect it with: give that account a read-only or restricted role on the VBR server and the writes fail at the server — the place that actually owns the permission.
So there is no read-only switch, no policy file, no approval gate to configure.
The one thing the tool guarantees is that nothing is silent: every call, over
MCP and over the CLI alike, lands an audit row in ~/.veeam-aiops/audit.db,
and reversible writes still capture their before-state and record an inverse.
Each tool declares a
risk_level, kept in agreement with its[READ]/[WRITE]documentation tag by a test, and carried into the audit row as a descriptive tier — so a reviewer can see at a glance that a row was a high-risk restore. It is a label, not a gate.
Running a smaller / local model? See agent-guardrails.md — it lists the guardrails this tool now enforces for you (so you don't spend prompt budget restating them) and gives a ready-made system prompt for what's left.
Quick start
As a Claude Code plugin
One install gives an agent both the skill and the MCP server:
/plugin marketplace add AIops-tools/marketplace
/plugin install veeam-aiops@aiops-toolsThe MCP server is fetched with uv and pinned to the
package version this plugin declares, so an audit row can be traced back to the
code that wrote it. Credentials are still configured with veeam-aiops init — see below.
As a CLI or standalone MCP server
uv tool install veeam-aiops
veeam-aiops init # interactive wizard: connection details + encrypted password
veeam-aiops doctor # verify config, encrypted store, connectivityinit writes ~/.veeam-aiops/config.yaml (non-secret connection details) and
stores the login password encrypted in ~/.veeam-aiops/secrets.enc. Example
config it produces:
targets:
- name: vbr-lab
host: 10.0.0.20
username: "DOMAIN\\backup-admin"
port: 9419
verify_ssl: false # self-signed lab certs onlyFor non-interactive use (MCP server, CI, cron) export the master password so the store can be unlocked without a prompt:
export VEEAM_AIOPS_MASTER_PASSWORD='your-master-password'Managing secrets
veeam-aiops secret set vbr-lab # prompts hidden for the password
veeam-aiops secret list # names only, values never shown
veeam-aiops secret rm vbr-lab
veeam-aiops secret rotate-password # re-encrypt under a new master password
veeam-aiops secret migrate # import a legacy plaintext .env, then deletes itMigrating from an old ~/.veeam-aiops/.env (legacy VEEAM_<TARGET>_PASSWORD
vars)? Run veeam-aiops secret migrate; the old .env is renamed to
.env.migrated. The plaintext env var is still honoured as a fallback (with a
deprecation warning) for a smooth transition.
Audit & safety
All operations are logged to a local SQLite audit DB under ~/.veeam-aiops/
(relocatable via VEEAM_AIOPS_HOME) — the harness records, it does not
authorize. Every call, over MCP and the CLI alike, lands an audit row; the
token/runaway budget guard is a safety backstop (not an authorization gate) that
stops a stuck agent from burning unbounded calls, and each row carries a
descriptive risk tier that gates nothing. Destructive CLI commands (job stop,
restore start) require double confirmation and support --dry-run.
API-returned text is run through a prompt-injection sanitizer.
Contributing & feature requests
Coverage is intentionally focused. Missing a device, action, or feature you need? Open an issue or pull request at github.com/AIops-tools/Veeam-AIops — feature requests, contributions, and comments are all welcome.
License: MIT.
Available Tools
25 toolsbackup_listA
[READ] List stored backups with id, name, type, creationTime.
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The '[READ]' prefix is a good explicit cue that this is safe and non-destructive, and the note about target being optional/defaulted adds some behavioral context. However, it does not disclose pagination, error handling, permissions, or the exact structure of the response, which is a notable gap for a list operation.
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 highly concise, consisting of two short sections. It front-loads the purpose in the first sentence and immediately follows with an Args block that explains the parameter. Every word earns its place, and it maintains a clean, scannable structure without redundancy.
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 simple tool with one optional parameter and no output schema, the description covers the essentials: what it lists, the returned fields, and how to use the optional target. It stops short of explicitly stating the return format (e.g., an array of objects) or pagination, but given the low complexity, the information provided is sufficient for an agent to select and invoke the tool correctly. A little more detail would make it comprehensive.
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 schema provides no description for the 'target' parameter (0% coverage), but the description compensates by explaining it as 'Veeam target name from config; omit to use the default.' This adds meaning beyond the schema's bare title and type, making the single parameter fully understandable. The description effectively bridges the schema 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 clearly states the action ('List'), the resource ('stored backups'), and the returned fields (id, name, type, creationTime). The '[READ]' prefix reinforces its non-mutating nature, distinguishing it from sibling tools like backup_object_list or restore_list_points that operate on different scopes.
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 through its explicit purpose and explains the optional target parameter, but it does not explicitly compare this tool with alternatives or state when not to use it. For example, it does not mention backup_object_list as a more detailed option or restore_list_points for restore-specific views. This reliance on inference for tool selection results in a mid-range score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backup_object_listA
[READ] List the protected objects (VMs/agents) inside a stored backup.
Args: backup_id: Veeam backup id (see backup_list). target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| backup_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that this is a READ operation, which is a key behavioral trait. However, it does not mention potential errors, permissions, or any side effects. For a read-only list, this level of transparency is adequate but not exceptional.
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 and front-loaded with '[READ]' and a single clear sentence describing the tool's purpose. The Args section is broken down neatly, and every line earns its place without unnecessary verbiage.
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 read-only list tool with two parameters and no output schema, the description covers the purpose and parameter meanings. It does not describe the return format or behavior on invalid input, but that is acceptable for a simple list operation. The description is self-contained and sufficient for selecting and invoking the 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 does so effectively: 'backup_id: Veeam backup id (see backup_list)' and 'target: Veeam target name from config.' Both parameters are explained beyond their names, and the reference to backup_list adds useful context.
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's function: 'List the protected objects (VMs/agents) inside a stored backup.' This uses a specific verb ('List') and resource ('protected objects inside a stored backup'), distinguishing it from sibling tools like backup_list (which lists backups) and restore_list_points (which lists restore points).
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 a cross-reference for the backup_id parameter ('see backup_list'), implying that users must first obtain a backup id from backup_list. This gives contextual usage guidance. However, it does not explicitly state when to choose this tool over alternatives or when not to use it, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_disableA
[WRITE] Disable a backup job (skips scheduled runs). Inverse: job_enable.
Pass dry_run=True to preview.
Args: job_id: Veeam job id. dry_run: If True, preview without disabling. target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| target | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the write nature via '[WRITE]', the effect on scheduled runs, and the dry_run preview option. It does not mention permissions, reversibility beyond the inverse hint, or side effects on currently running jobs, leaving some gaps.
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 compact and well-structured: action, inverse, dry_run tip, then a parameter list. Every sentence adds value, with no redundancy or filler.
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 simple tool with no annotations and no output schema, the description covers the essential purpose and parameters. It lacks return value details and error conditions, which are relevant but not critical for a disable action.
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%, but the description explains each parameter: job_id as Veeam job id, dry_run as preview behavior, and target as Veeam target name from config. This adds meaningful value beyond the schema, though target could be more precise.
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 'Disable a backup job' with the effect 'skips scheduled runs', and differentiates from sibling tools by noting 'Inverse: job_enable'. This provides a specific verb+resource+outcome.
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 gives clear context for use (disabling scheduled runs) and references the inverse tool job_enable, which helps distinguish from alternatives. However, it does not explicitly exclude job_stop or other related tools, so it falls short of a full when-to-use/not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_enableA
[WRITE] Enable a backup job (clears the disabled flag). Inverse: job_disable.
Pass dry_run=True to preview.
Args: job_id: Veeam job id. dry_run: If True, preview without enabling. target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| target | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It explains the core action (clears the disabled flag) and dry_run preview mode, but omits details such as idempotency, error handling, or required permissions, which would be useful for an agent to fully understand the tool's behavior.
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 compact and well-structured: a [WRITE] marker, a one-sentence purpose, an inverse note, a dry_run tip, and a clean Args list. Every sentence adds value with no redundancy.
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 relatively simple tool, the description covers purpose, parameters, and a preview mode effectively. It could be more complete by addressing edge cases like what happens if the job is already enabled or is not found, but given the basic nature of the operation and no output schema, the essential context is present.
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 Args section provides meaningful explanations for all three parameters (job_id, dry_run, target), going beyond the schema's type/default information. This is especially valuable given that the schema description coverage is 0% and the tool relies entirely on the description for parameter semantics.
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 'Enable a backup job (clears the disabled flag)', using a specific verb and resource. It also distinguishes itself from the sibling tool job_disable by explicitly labeling it as the inverse, removing ambiguity about its function.
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 clear context for when to use this tool (to enable a disabled job) and mentions the inverse relationship with job_disable. However, it does not explicitly contrast with job_start or job_stop, which could be relevant alternatives depending on the user's intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_failure_rcaA
[READ] Triage recent backup-job sessions: flag every Failed/Warning run.
Pulls the recent sessions, fetches the failing log records for each bad run, and categorizes the likely cause (repository full, source/guest unreachable, credential/VSS failure, retry exhaustion) worst-first, citing the session result and the matched error substring for every finding.
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses the read-only nature (via '[READ]'), the steps involved (pulling sessions, fetching log records), and the output behavior (categorizing worst-first with cited reasons). It doesn't mention potential side effects (none expected) or prerequisites, but those are less critical 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 well-structured and efficient: it opens with the core purpose, then outlines the process and output, and ends with an Args section. Every sentence adds value, with no filler.
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?
Even without an output schema, the description explains what the tool returns: categorized findings with session results and matched error substrings. It could be slightly more explicit about the exact return structure (e.g., a list of findings), but overall it's complete for the tool's 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 description coverage is 0%, but the description fully explains the only parameter 'target': 'Veeam target name from config; omit to use the default.' This adds meaningful semantics beyond the schema, which only shows nullable string with default null.
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's purpose with a specific verb and resource: 'Triage recent backup-job sessions: flag every Failed/Warning run.' It also details the RCA categorization, distinguishing it from sibling tools like session_list and session_log.
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 clear context for when to use the tool (investigating failed/warning backup jobs) and implies it is read-only with the '[READ]' prefix. However, it does not explicitly mention alternatives or when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_getA
[READ] Return detail for a single backup job by id.
Args: job_id: Veeam job id (see job_list). target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes a '[READ]' prefix indicating read-only behavior, which is behavioral context. However, with no annotations provided, it lacks details on permissions, rate limits, or side effects. The description adds value beyond the schema but could be more comprehensive.
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 highly concise with two lines of purpose and a brief args list. It is well-structured with a clear [READ] prefix and front-loads the essential purpose. Every sentence is necessary and efficient.
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 output schema, no annotations), the description adequately covers purpose and parameter sources. It is missing details about return value structure, but that is acceptable for a straightforward retrieval 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 compensates by providing meaningful explanations for parameters: job_id is described as 'Veeam job id (see job_list)' and target as 'Veeam target name from config'. This adds context beyond the schema's type-only definitions.
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 'Return detail for a single backup job by id', specifying the verb (return detail), resource (single backup job), and identifier (by id). It distinguishes from sibling tools like job_list which returns a list.
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 clear context by referencing job_list for obtaining job_id and config for target name. It implies usage context but does not include explicit when-not-to-use or alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_listA
[READ] List backup jobs with id, name, type, status, lastResult.
Use job_get for full detail of a single job.
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the [READ] tag explicitly signals a read-only operation, compensating for the lack of annotations. However, it does not disclose possible performance implications or authentication requirements, but for a list tool this is acceptable.
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 extremely concise—two sentences plus a parameter list—with no fluff. The [READ] tag is front-loaded, and every sentence 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?
For a simple list tool with one optional parameter and no output schema, the description covers the returned fields and provides a link to a more detailed tool. It does not mention pagination or ordering, but that is acceptable for this tool's 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?
The schema provides only the parameter name and type with no description. The description explains target as 'Veeam target name from config; omit to use the default', adding essential meaning beyond the schema.
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 backup jobs with specific fields (id, name, type, status, lastResult) and distinguishes itself from job_get for full detail. This provides a specific verb and resource, with clear differentiation from a sibling tool.
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 explicitly tells when to use job_get instead for full detail, but does not cover other usage exclusions or alternatives like filtering. It gives clear context for the target parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_retryA
[WRITE] Retry a failed backup job (re-runs failed objects only).
Runs as an async session — poll with session_list / session_get. Inverse: job_stop (cancels the in-flight retry). Pass dry_run=True to preview.
Args: job_id: Veeam job id. dry_run: If True, preview without retrying. target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| target | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description discloses it's a write operation, async behavior, dry_run preview, and that it only retries failed objects. This is good coverage, though it could mention idempotency or side effects.
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 very concise yet informative, with a clear structure: purpose line, async note, inverse mention, dry_run hint, and parameter list. 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?
While it explains async behavior and polling, it does not explicitly state what the tool returns (e.g., session ID, status). The mention of polling with session_list/session_get implies no direct result, but the return format is 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?
With 0% schema description coverage, the description adds meaning for all three parameters: job_id (Veeam job id), dry_run (preview), target (Veeam target from config). This compensates well for the lack of schema descriptions.
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 'Retry a failed backup job (re-runs failed objects only)', which specifies the action and scope. It also distinguishes from sibling tools by mentioning 'Inverse: job_stop'.
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 explains async nature with polling instructions and provides a dry_run option. It mentions the inverse tool job_stop, offering guidance on when to use each. However, it does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_startA
[WRITE] Start a backup job. Runs as an async session. Inverse: job_stop.
Poll progress with session_list / session_get; do not re-issue. Pass dry_run=True to preview.
Args: job_id: Veeam job id. dry_run: If True, preview without starting. target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| target | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool runs as an async session, has an inverse relation, and supports dry-run preview. It doesn't cover failure modes or return values, but the async and polling notes are significant 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?
The description is concise and well-structured, front-loaded with the core action. Every sentence earns its place: async note, inverse, polling guidance, and dry-run preview. The Args section is clean and directly follows the behavioral notes.
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 mutation tool with no output schema and no annotations, the description covers the essential context: start behavior, async execution, polling with session tools, and dry-run. It could mention what a successful start returns, but the session polling reference implies session handling, which is sufficient.
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%, so the description compensates by giving one-line semantics for each parameter: job_id as 'Veeam job id', dry_run as 'preview without starting', and target as 'Veeam target name from config'. This adds meaning beyond the schema's bare type definitions.
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 immediately states '[WRITE] Start a backup job' with a specific verb and resource. It distinguishes from sibling tools by noting 'Inverse: job_stop' and mentions async session, which differentiates from other job-related commands.
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 gives explicit guidance: 'Inverse: job_stop' names an alternative, and 'Poll progress with session_list / session_get; do not re-issue' provides a clear exclusion (don't re-issue). It also explains the dry_run preview option as a conditional usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_stopA
[WRITE] Stop a running backup job. Inverse: job_start.
Pass dry_run=True to preview.
Args: job_id: Veeam job id. dry_run: If True, preview without stopping. target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| target | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. Indicates write operation via '[WRITE]' and describes dry-run preview, but omits consequences of stopping a job (e.g., incomplete state, reversibility, or side effects).
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?
Extremely concise: three-line summary plus Args list. Every sentence adds value, no fluff. Front-loaded with main purpose and usage hint.
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?
Covers essential information for a simple tool with 3 parameters and no output schema. Lacks details on return values or behavior after stopping but sufficient for basic usage.
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%, but the description fully documents all three parameters (job_id, dry_run, target) with clear, meaningful explanations beyond type and title.
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 ('Stop a running backup job') and resource, and distinguishes from sibling tool job_start by noting it is the inverse. No ambiguity.
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 guidance on using dry_run parameter and mentions inverse operation, but lacks explicit when-to-use or when-not-to-use context relative to other siblings like job_retry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
managed_server_listA
[READ] List managed servers (id, name, type, description).
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly labels the tool as '[READ]' and lists the returned fields, indicating a read-only operation. However, it does not disclose pagination, authentication needs, or rate limits, which are typical behavioral traits. The disclosure is adequate but not comprehensive.
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 extremely concise: two lines with no wasted words. The '[READ]' prefix efficiently sets expectations, and the parameter guidance is front-loaded. 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 the tool's simplicity (one optional parameter, no output schema), the description covers the essential elements: the action, resource, returned fields, and parameter usage. It omits details like sorting or filtering, but for a straightforward list tool this is largely sufficient.
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 schema coverage is 0%, so the description is the sole source of parameter meaning. It explains 'target' as 'Veeam target name from config; omit to use the default', which adds valuable context beyond the schema's type definition. This clearly guides the agent on valid values and default behavior.
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 'List managed servers' with the specific fields (id, name, type, description). The '[READ]' prefix further clarifies the action. This distinguishes it from sibling tools like backup_list or job_list.
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 guidance on the 'target' parameter, but it does not explicitly state when to use this tool versus alternatives like backup_list or repoistory_list. No when-not or exclusion criteria are given, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overviewA
[READ] One-shot health summary: jobs by last result, repos near full, running sessions.
Call this first to triage a Veeam environment before drilling into a specific job, repository, or session.
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. It correctly marks the tool as READ-only and lightweight ('one-shot'), but does not disclose other behaviors like potential resource usage or rate limiting.
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 plus a concise Args section. Front-loaded with purpose and usage. Every sentence is essential, no redundancy.
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 no output schema and one optional param, the description adequately covers purpose, usage, and parameter. Could elaborate on response structure, but not critical for a health summary 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 has 0% description coverage, but the description adds meaning to the single 'target' parameter: explains it's a Veeam target name from config and that omitting uses default. Adds value beyond schema.
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 explicitly states it's a READ operation providing a health summary of jobs, repos, and sessions. Differentiates from sibling tools by positioning as a first triage step before drilling into specific entities.
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?
Clear guidance: 'Call this first to triage a Veeam environment before drilling into a specific job, repository, or session.' Implicitly suggests not to use when detailed info is needed, but lacks explicit when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proxy_listA
[READ] List backup proxies (id, name, type, server).
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It includes a [READ] hint and lists returned fields, but does not disclose authorization needs, rate limits, or potential side effects.
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 only: one for purpose, one for the parameter. No fluff, front-loaded with the action and resource.
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 simple list tool, the description is reasonably complete—states data returned and parameter meaning. Missing any filtering options or return format details, but not critical.
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 schema has no descriptions (0% coverage), so the description compensates by explaining the target parameter as a Veeam target name from config and noting the default behavior.
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 lists backup proxies with specific fields (id, name, type, server), distinguishing it from sibling tools that list backups, jobs, etc.
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 when needing a proxy list and explains the optional target parameter, but lacks explicit guidance on when to use vs alternatives or 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.
repository_capacity_rcaA
[READ] Flag backup repositories running low on free space.
Pulls per-repository capacity state and reports worst-first findings for any repository under the free-space thresholds (<15% warn, <10% critical), each citing the measured free% and free bytes plus an extend/offload/retention action.
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It states it pulls per-repository capacity state, reports worst-first, cites free% and free bytes, and suggests an action. The [READ] prefix and 'Pulls' imply read-only. It could add details on permissions or empty-result behavior, but it covers the core behavior 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?
The description is concise and front-loaded with the main purpose. The three sections (summary, details, args) are each useful with no filler. 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?
With no output schema, the description explains what the output contains (per-repo worst-first findings with free%, free bytes, and action). It is complete for a simple one-param tool, though it doesn't mention edge cases like no repositories under threshold or invalid target.
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 one parameter exists with 0% schema coverage, but the description fully explains it: 'Veeam target name from config; omit to use the default.' This adds meaning beyond the schema's title/default and makes the optional behavior explicit.
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 a specific verb ('Flag') and resource ('backup repositories running low on free space'), clearly distinguishing it from siblings like repository_list, repository_get, and repository_state. It also states the exact purpose with thresholds and ordering.
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 context is clear: this is a capacity RCA tool that reports worst-first findings. It doesn't explicitly name alternatives or when not to use, but the [READ] marker and specific thresholds imply a monitoring use case that differentiates it from simple listing or state tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repository_getA
[READ] Detail for one repository incl. capacity/free/used when known.
Args: repository_id: Veeam repository id (see repository_list). target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| repository_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the safety burden. The '[READ]' tag explicitly signals a non-destructive operation, and 'when known' discloses that capacity/free/used data may be absent or incomplete. This is valuable transparency, though it stops short of detailing response errors or authorization needs.
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 extremely concise, starting with the [READ] flag and then providing a single-sentence summary plus an argument list. Every word earns its place 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?
For a simple tool with 2 parameters and no output schema, the description is largely sufficient. It explains the purpose, the key data returned (capacity/free/used), and parameter guidance. The lack of an explicit return format or error handling is a minor gap, but overall it is complete enough for an agent to select and invoke correctly.
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 does explain both parameters: repository_id as 'Veeam repository id (see repository_list)' and target as 'Veeam target name from config.' This adds meaning beyond titles, but lacks specifics like value formats or constraints, keeping it at moderate usefulness.
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 states 'Detail for one repository incl. capacity/free/used when known' with a '[READ]' prefix, clearly indicating a read operation for a specific repository. This distinguishes it from sibling tools like repository_list (list all) and repository_state (state-specific).
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 clear context by mentioning 'Veeam repository id (see repository_list)', implying the user should first list repositories to obtain the ID. However, it does not explicitly state when not to use this tool or name alternative tools beyond the hint to repository_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repository_listA
[READ] List backup repositories with id, name, type, path.
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavioral traits. It includes the '[READ]' prefix, signaling a non-mutating operation, and lists expected output fields. However, it lacks details about authentication requirements, error handling, or pagination, which would enhance 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 two sentences long, front-loaded with the tool's purpose, and each sentence provides necessary information. There is no redundancy or 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?
For a simple list tool with one optional parameter and no output schema, the description sufficiently covers purpose, output fields, and parameter behavior. It lacks explicit sibling differentiation or caveats, but is otherwise complete for its scope.
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 only notes that 'target' is an optional string with a null default, but the description explains it as a 'Veeam target name from config' and that omitting it uses the default. This adds meaningful context beyond the schema.
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 'List backup repositories' and specifies the output fields (id, name, type, path). This distinguishes it from sibling tools like repository_get and repository_state, which imply single-repository details or 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?
The description provides no guidance on when to use this tool versus alternatives such as repository_get or repository_state. It only explains the target parameter, not the selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repository_stateA
[READ] Capacity summary for every repository (capacity/free/used/used%).
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description labels it as [READ], indicating a read-only operation, and specifies the output fields. However, it lacks details on error behavior, authentication requirements, or any side effects. Since no annotations exist, the description carries the full burden but does not fully address these aspects.
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, front-loaded with the [READ] tag and the core purpose. The Args section is structured and provides necessary parameter info without redundancy. Every sentence contributes 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 tool's simplicity (one optional parameter, no output schema), the description covers the essential aspects: purpose and parameter meaning. It mentions the returned fields, though it could be improved by clarifying whether the output is a list or a single object. Overall, it is fairly complete.
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 description explains the 'target' parameter as a Veeam target name from config, with a clear usage instruction to omit for default. This adds significant meaning beyond the schema, which only provides type information. Schema coverage is 0%, so the description compensates well.
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 a capacity summary for every repository, with specific fields (capacity/free/used/used%). This distinguishes it from sibling tools like repository_get and repository_list, though not explicitly.
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. The description implies usage for capacity summaries but does not provide context for exclusion or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_list_pointsA
[READ] List restore points (id, name, creationTime, type).
Pass backup_id to filter to one backup's restore points (preview — server filter support varies by Veeam version).
Args: backup_id: Optional Veeam backup id (see backup_list) to filter by. target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| backup_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly labels the operation as a read ('[READ]'), which is a key behavioral trait. It also discloses a limitation: server-side filtering via backup_id varies by Veeam version. Since there are no annotations, the description carries the full burden and does a good job at conveying read-only nature and caveats.
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 and well-structured. It leads with a clear purpose sentence, then provides parameter documentation in a compact Args block. Every sentence earns its place with no waste or redundancy.
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 optional parameters, no output schema), the description is complete. It specifies the output fields, parameter behavior, and default target usage. The mention of backup_list provides helpful cross-context. No critical information is missing for an agent to invoke the tool correctly.
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 fully compensates by explaining both parameters: backup_id (optional filter, cross-referenced to backup_list) and target (Veeam target name from config, default behavior). This adds meaning well beyond the schema's bare property definitions.
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's function: 'List restore points (id, name, creationTime, type).' The verb 'List' is specific, the resource is unambiguous, and the included fields add precision. There are no sibling tools that overlap with this function, so it effectively differentiates itself.
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 context for use: it explains when to pass backup_id to filter, notes the preview feature and server support variability, and clarifies the target parameter's default behavior. It does not explicitly mention when not to use the tool or direct alternatives, but the usage context is clear and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_getA
[READ] Poll one session by id to check job/restore progress.
Use after job_start or start_vm_restore to follow the operation instead of re-issuing it.
Args: session_id: Veeam session id (see session_list). target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description indicates a read-only polling operation. It does not mention potential side effects or rate limits, but for a simple poll, the description is adequate. Slight room for more explicit safety assurances.
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?
Concise and front-loaded with purpose. Uses a clear 'Args' section. Every sentence is necessary and informative, with 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?
Lacks output schema and does not describe the response format. However, for a polling tool, the purpose is clear. Could benefit from mentioning what fields are returned, but overall sufficient given sibling tools and parameter guidance.
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 adds crucial meaning: 'session_id: Veeam session id (see session_list). target: Veeam target name from config.' This tells the agent where to obtain values and the nature of each parameter.
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 starts with '[READ] Poll one session by id to check job/restore progress.' This clearly specifies the action (poll, check) and the resource (session by id), distinguishing it from siblings like session_list and session_log.
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: 'Use after job_start or start_vm_restore to follow the operation instead of re-issuing it.' This provides clear usage context and excludes misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_listA
[READ] List recent sessions with id, name, type, state, result.
Args: target: Veeam target name from config; omit to use the default.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes a '[READ]' prefix, explicitly indicating this is a safe, read-only operation. It also discloses that it returns recent sessions and lists the output fields. Since there are no annotations to convey safety, this is valuable. However, it does not mention potential caveats like pagination, ordering, or limits, which would be useful but not critical for a simple list operation.
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 extremely concise, with no redundant words. It front-loads the core purpose in the first line and then provides the parameter details in a clear, structured format. Every sentence earns its place.
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 optional parameter, no output schema, no annotations), the description is largely sufficient. It states what is listed and the available fields. It stops short of mentioning whether there is a limit on the number of sessions or any ordering, but these are not essential for a basic list operation.
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 description fully explains the only parameter: 'target: Veeam target name from config; omit to use the default.' This adds meaning beyond the bare schema, which only defines type (string/null) and default. It clarifies the source of the value and the behavior when omitted, which is essential for correct usage.
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's function: 'List recent sessions' with specific fields (id, name, type, state, result). This verb+resource combination is unambiguous and distinguishes it from sibling tools like session_get (retrieves a single session) or session_log (retrieves logs).
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 no guidance on when to use this tool versus alternatives like session_get or session_log. It neither mentions exclusions, prerequisites, nor scenarios where this tool is preferred. The reader must infer usage solely from the tool name and the generic 'List' action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_logA
[READ] Return the log records (events) of one session.
Use to see why a session failed instead of re-running the job blind.
Args: session_id: Veeam session id (see session_list). target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only marks '[READ]' and says 'return the log records', but omits important details such as output format, pagination, potential size/volume of logs, or whether any side effects occur. This is insufficient for a tool with no structured 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 compact and front-loaded with '[READ]' and a clear purpose. It avoids filler, with two sentences plus a concise args list. Every sentence contributes to understanding the tool's purpose or usage, making it highly efficient.
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 simple tool with only two parameters and no output schema, the description covers purpose, use case, and parameter meaning. However, it does not describe the return value's structure or any limitations, which could leave an agent uncertain about how to interpret the result. Given the absence of an output schema, a bit more detail on return format would be beneficial, but the tool is simple enough that this is 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?
The schema provides only titles ('Session Id', 'Target') with no descriptions, so the documentation coverage is 0%. The description compensates by explaining both parameters: session_id is a 'Veeam session id (see session_list)' and target is a 'Veeam target name from config'. This adds meaningful context beyond the schema, though it could be more detailed about allowed values or formats.
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 states 'Return the log records (events) of one session' with a clear verb and resource, explicitly scoped to a single session. This distinguishes it from siblings like session_list (lists sessions) and session_get (presumably returns session details), making the tool's purpose unambiguous.
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?
It gives an explicit use case ('see why a session failed instead of re-running the job blind') and even suggests an alternative (re-running) to avoid. However, it does not explicitly mention when not to use it or reference sibling tools like job_failure_rca that might also diagnose failures, so it falls short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_stopA
[WRITE] Stop a running session (cancels the underlying operation).
No undo token — a stopped session must be re-issued via the originating job/restore. Pass dry_run=True to preview.
Args: session_id: Veeam session id (see session_list). dry_run: If True, preview without stopping. target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No | ||
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses the write/destructive nature ([WRITE]), irreversibility (no undo token, must re-issue), and dry-run option. It does not cover permissions or error handling but covers the critical consequences.
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 well-structured with a front-loaded first sentence, followed by critical notes and a clear Args list. No filler; 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?
Covers purpose, side effects, and parameters adequately for a stop operation. With no output schema, return details are not explained, but behavior and consequences are sufficiently complete for an agent.
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%, so descriptions carry full burden. All three parameters are explained with context: session_id sourced from session_list, dry_run for preview, target from config. This exceeds basic schema 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?
States clearly it stops a running session and cancels the underlying operation, with a specific verb and resource. It is distinct from siblings like session_list/get/log and job_stop.
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 clear context for use (stopping a running session) and mentions dry-run preview, but does not explicitly name alternatives or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_vm_restoreA
[WRITE] Start a VM restore from a restore point. IRREVERSIBLE — no undo token.
Overwrites or creates a VM; confirm with the user before calling. Runs as an async session — poll with session_list / session_get. Pass dry_run=True to preview: the preview resolves the opaque restore-point id to the VM name and creation time it would restore, so there is something real to confirm.
Refuses when that VM name matches the configured VBR host — with no target mapping this is a restore-to-original, so it would overwrite the Veeam server serving this API. The name check is a safety net, not a proof (a VM display name is not a hostname) and it fails open when the restore point cannot be resolved; read the preview before approving.
Args: restore_point_id: Restore point id (see restore_list_points). dry_run: If True, preview without restoring. target: Veeam target name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No | ||
| restore_point_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses that the operation is a write, irreversible, runs as an async session, and may refuse to overwrite the VBR host. Also explains the dry_run preview behavior.
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?
Long but well-structured with a clear opening warning, logical flow, and minimal redundancy. Could be slightly tighter but 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?
Covers the operation well: mentions async polling, irreversibility, and parameter semantics. No output schema, but the description indicates how to check results via session tools, which is sufficient.
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 0% description coverage, but the description explains all three parameters: restore_point_id (referenced to restore_list_points), dry_run (detailed preview behavior), and target (Veeam target name).
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?
Specifically states 'start a VM restore from a restore point', uses a clear verb-resource pair, and distinguishes from sibling tools by focusing on restore operations and async sessions.
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 directs to confirm with user due to irreversibility, explains use of dry_run for preview, and provides a safety warning about the VBR host overwrite check. No when-not-to-use stated, but the guidance is comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_applyA
[WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool.
The inverse runs through its own governed tool, so it is audited under its own risk tier. Pass dry_run=True to preview the inverse call without executing it. A token can only be applied once.
Args:
undo_id: The undoId from undo_list (or an _undo_id in a write result).
dry_run: If True, preview the inverse tool + params without running it.
target: Passed through to the inverse tool when it accepts a target.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No | ||
| undo_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In the absence of annotations, the description discloses important behavioral traits: it is a write operation ([WRITE][risk=medium]), the inverse runs under its own risk tier, dry_run preview is available, and a token can only be applied once. This provides good 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 concise at 5 sentences plus an Args list, well-structured with a header and parameter explanations. It earns its place without verbosity, though could be slightly more streamlined.
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 no annotations or output schema, the description covers the tool's function, parameters, behavior, and safety notes. It lacks explicit return value details and error conditions, but is largely complete for typical usage.
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 fully compensates by explaining each parameter in the Args block: undo_id sourced from undo_list, dry_run for preview, and target passed through. This adds significant meaning beyond the bare schema.
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's purpose: 'Apply a recorded undo by dispatching its inverse tool.' It uses specific verb 'apply' and resource 'undo', and distinguishes from sibling undo_list by referencing undo_id from undo_list.
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 explains the mechanism and parameters but does not explicitly state when to use this tool versus alternatives like undo_list. It implies usage context by mentioning the inverse tool and dry_run, but lacks direct comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_listA
[READ] List recorded, not-yet-applied undo tokens (most recent first).
Each entry names the original tool, the inverse tool that undo_apply
would run, and a human note. Use the undoId with undo_apply.
Returns an envelope rather than a bare list::
{"undos": [...], "returned": 50, "limit": 50, "truncated": true}so a truncated read announces itself. A bare list cannot say "there is
more" — the consumer has to infer it from the length happening to equal the
limit, and a smaller local model faced with a capped result tends to report
that it has seen every token. One extra row is requested so truncated
is measured rather than guessed from a length coincidence.
Each entry carries effectVerified. False means the original write
lost its response, so the change it reverses is PROBABLE, not confirmed —
check the live state before applying, and do not report the result as a
restore of a state that may never have been reached.
Args: limit: Max rows to return (default 50, capped at 500). target: Unused (undo state is host-local); accepted for CLI uniformity.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the behavioral disclosure burden. It details the return envelope (including truncated field), explains that one extra row is requested to measure truncation, and describes the effectVerified field and its implications. This goes beyond a simple read declaration to cover edge cases and behavioral nuances.
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 relatively long but well-structured. It front-loads the purpose, then explains the envelope, a specific field, and finally the parameters. Each sentence adds value; however, some repetition or extraneous detail could be trimmed while retaining clarity.
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 absence of an output schema, the description thoroughly explains the return format and key fields (truncated, effectVerified). It also covers parameter behaviors and edge cases (capped limit, truncated reads). This makes the tool self-contained and complete for agent 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?
The input schema is minimal (limit and target with defaults). The description adds critical meaning: limit is capped at 500 and has a default of 50, and target is unused (accepted for CLI uniformity). Since schema description coverage is 0%, the description completely compensates, providing constraints and context for each parameter.
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 begins with '[READ] List recorded, not-yet-applied undo tokens (most recent first).' This clearly identifies the tool as a read operation listing undo tokens, with a distinct verb and resource. The sibling tools include 'undo_apply', which is complementary, and the description explicitly mentions using the undoId with undo_apply, differentiating the two.
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 explains that the tool provides undoId for use with undo_apply, implying it is a prerequisite. It also discusses the envelope format and why truncation is important, guiding the agent on when the tool is needed. However, it does not explicitly state when not to use it or compare to other sibling list tools like job_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v0.10.0- Added
backup_list - Added
backup_object_list - Added
job_disable - Added
job_enable - Added
job_failure_rca - Added
job_start - Added
repository_capacity_rca - Added
repository_get - Added
repository_list - Added
restore_list_points - Added
session_list - Added
session_log - Added
session_stop
16 tool updates
v0.8.0- Removed
backup_list - Removed
backup_object_list - Removed
job_disable - Removed
job_enable - Changed
job_retry1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "default": false, + "title": "Dry Run", + "type": "boolean" +}
- Removed
job_start - Changed
job_stop1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "default": false, + "title": "Dry Run", + "type": "boolean" +}
- Removed
repository_get - Removed
repository_list - Removed
restore_list_points - Removed
session_list - Removed
session_log - Removed
session_stop - Changed
start_vm_restore1 field changed- added
Input schema / properties / dry_runAdded value: +{ + "default": false, + "title": "Dry Run", + "type": "boolean" +}
- Added
undo_apply - Added
undo_list
21 tool updates
v0.2.0- First observed
backup_list - First observed
backup_object_list - First observed
job_disable - First observed
job_enable - First observed
job_get - First observed
job_list - First observed
job_retry - First observed
job_start - First observed
job_stop - First observed
managed_server_list - First observed
overview - First observed
proxy_list - First observed
repository_get - First observed
repository_list - First observed
repository_state - First observed
restore_list_points - First observed
session_get - First observed
session_list - First observed
session_log - First observed
session_stop - First observed
start_vm_restore
TDQS
Each tool has a clear and distinct purpose: job_get vs job_list, job_retry vs job_stop, dedicated tools for servers, proxies, repositories, sessions, restore, and undo. No overlapping functionality.
All tools follow a consistent verb_noun pattern with underscores (e.g., job_get, managed_server_list, start_vm_restore). 'overview' is a single verb but fits the imperative style. No naming convention conflicts.
12 tools cover the core operations for Veeam backup monitoring and management: listing, detail, retry, stop, restore, undo. Neither too many nor too few for the domain.
Several referenced tools are missing: restore_list_points and session_list are mentioned in descriptions but absent, and job_start is referenced as inverse of job_stop. These gaps force agents to work around missing operations, likely causing failures.
Maintenance
Related MCP Connectors
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
AI governance MCP server for EU AI Act compliance and jurisdiction verification
Let AI agents query data and act across all your business apps via MCP.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for Kaseya VSA — endpoints, patches, procedures, alarms, and tickets. Enables AI assistants to manage and monitor devices via the Kaseya VSA RMM platform.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server for Spanning Cloud Backup — M365/GWS/Salesforce SaaS backup, restore, and audit. Enables AI assistants to manage and monitor cloud backup protection via the Spanning API.Apache 2.0

Keepit MCPofficial
AlicenseNot gradedqualityBmaintenanceMCP server for interacting with Keepit backup and data protection services. Enables monitoring, management, and security operations through natural language.4MIT- AlicenseNot gradedqualityFmaintenanceExtends Veeam Intelligence to MCP-compatible clients, enabling secure, real-time operational insight across Veeam Backup & Replication, Veeam ONE, and VSPC via natural language or AI workflows.14MIT
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/AIops-tools/Veeam-AIops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server