Vultr Codex MCP
Manages Vultr cloud resources, including listing account info, instances, plans, regions, OS images, SSH keys, firewall groups; previewing and creating instances with safety limits and confirmation; rebooting, snapshotting, and deleting instances.
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., "@Vultr Codex MCPlist my Vultr instances"
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.
Vultr Codex Plugin
A Codex plugin for managing Vultr with explicit safety guards. The first version focuses on small VPS workflows: inspect account state, preview instance creation, then perform selected mutations only after exact confirmation.
The plugin's tools are implemented through a local MCP server, but the user-facing product is a Codex plugin.
Features
List Vultr account, instances, plans, regions, OS images, SSH keys, and firewall groups.
Check whether
vultr-cliis available locally for optional manual workflows.Preview instance creation before spending money.
Restrict instance creation by plan, region, and monthly cost.
Require exact confirmation strings for create, reboot, snapshot, and delete.
Read the Vultr token only from
VULTR_API_KEY.
Related MCP server: SSH Linux Control
Quick Start
npm install
npm run verify
export VULTR_API_KEY="your-vultr-api-key"The Codex plugin manifest is in .codex-plugin/plugin.json; the MCP
configuration is in .mcp.json. The bundled server entrypoint is
mcp/server.mjs.
Codex Plugin Install
During local development, keep the repository under:
/Users/zeyuwang/Documents/project/vultr-codex-pluginThen install the plugin from a local marketplace entry or copy/symlink the
repository into your personal plugin marketplace. The plugin does not need the
Vultr token at install time, but Vultr API tools require VULTR_API_KEY in the
environment where Codex launches the MCP server.
If you only want to smoke-test the MCP server without installing the plugin:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.0.0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
| node ./mcp/server.mjsSafety Policy
By default, create operations are limited to:
Plans:
vc2-1c-1gb,vc2-1c-2gb,vc2-2c-2gbRegions:
nrt,itm,sgp,icn,lax,sjc,seaMaximum monthly cost:
$20
Override these with environment variables:
VULTR_ALLOWED_PLANS=vc2-1c-1gb,vc2-1c-2gb
VULTR_ALLOWED_REGIONS=nrt,sgp,lax
VULTR_MAX_MONTHLY_COST_USD=10Confirmation Strings
Mutation tools reject calls unless the confirm field exactly matches the
expected string returned by preview or described by the tool:
create:<label>:<plan>:<region>
reboot:<instance_id>
snapshot:<instance_id>
delete:<instance_id>:<label>For deletion, the server first fetches the instance and checks that the Vultr
label matches the provided label.
Tools
get_policyget_accountget_vultr_cli_statuslist_instancesget_instancelist_regionslist_planslist_oslist_ssh_keyslist_firewall_groupscreate_instance_previewcreate_instancereboot_instancecreate_snapshotdelete_instance
Development
npm install
npm run check
npm test
npm run buildThe source lives under src/. npm run build bundles it into
mcp/server.mjs, which is what Codex launches.
Local Context
For this machine, the preferred code repository root is:
/Users/zeyuwang/Documents/projectAvailable Tools
15 toolscreate_instanceCreate Vultr instanceA
Create a Vultr instance after policy validation and exact confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | Vultr plan id, for example vc2-1c-1gb. | |
| tags | No | ||
| label | Yes | Human-readable instance label. | |
| os_id | No | ||
| app_id | No | ||
| region | Yes | Vultr region id, for example nrt or sgp. | |
| backups | No | ||
| confirm | Yes | Must equal create:<label>:<plan>:<region>. | |
| hostname | No | ||
| image_id | No | ||
| user_data | No | ||
| sshkey_ids | No | ||
| enable_ipv6 | No | ||
| snapshot_id | No | ||
| firewall_group_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation and non-idempotency. The description adds that the creation is conditional on policy validation and confirmation, which provides useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it omits important parameter information that could be included without much verbosity.
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 high number of parameters (15) and no output schema, the description is insufficient. It does not guide the agent on required parameters, the exact format of the confirm field, or how to use the validation step.
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 very low (27%) and the description does not explain any parameters. It fails to compensate for the lack of schema documentation on many parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a Vultr instance, which is the core purpose. It also adds context about policy validation and exact confirmation, distinguishing it from siblings like delete_instance or create_instance_preview.
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 that tool should be used after policy validation and with a confirmation step. It hints at a mechanism distinct from create_instance_preview, but does not explicitly state when to use it or exclude other contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_instance_previewcreate_instance_previewARead-onlyIdempotent
Validate and preview a Vultr instance creation request without charging money.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | Vultr plan id, for example vc2-1c-1gb. | |
| tags | No | ||
| label | Yes | Human-readable instance label. | |
| os_id | No | ||
| app_id | No | ||
| region | Yes | Vultr region id, for example nrt or sgp. | |
| backups | No | ||
| hostname | No | ||
| image_id | No | ||
| user_data | No | ||
| sshkey_ids | No | ||
| enable_ipv6 | No | ||
| snapshot_id | No | ||
| firewall_group_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only, idempotent, and non-destructive. The description adds that it previews without charging, aligning with annotations and providing extra 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?
Single sentence front-loads the tool's purpose without any fluff or redundancy, making it highly concise and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 14 parameters, low schema coverage, and no output schema, the description is too brief. It omits what the preview returns (e.g., validation errors, cost estimates) and usage context.
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 only 21% schema coverage, the description does not compensate for the 11 undocumented parameters. It offers no parameter-level guidance beyond the tool's purpose.
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 validates and previews an instance creation request without charging, using specific verbs 'validate' and 'preview', and distinguishes it from the sibling create_instance 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 implies this tool is for testing validation before actual creation (no charge), but does not explicitly state when not to use it or list alternatives beyond the sibling name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snapshotCreate Vultr snapshotC
Create a Vultr snapshot after exact confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must equal snapshot:<instance_id>. | |
| description | Yes | ||
| instance_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false. The description adds 'after exact confirmation', hinting at a safety mechanism not present in annotations. However, it lacks details on side effects, success/failure behavior, or error states.
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?
A single sentence that is front-loaded and concise. Every word adds value, though it could be slightly more informative without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 required parameters and no output schema, the description is insufficient. It does not explain what a snapshot is, return values, or potential side effects. Sibling tools list indicates creation context, but more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33% (only 'confirm' has a description). The tool description adds no parameter-specific meaning. 'instance_id' and 'description' remain unexplained, failing to compensate for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('Vultr snapshot'), and adds a condition ('after exact confirmation'). It distinguishes from sibling tools like 'create_instance' by specifying snapshot creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., when to create a snapshot vs. using other instance tools). Prerequisites or context of use are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_instanceDelete Vultr instanceADestructive
Delete a Vultr instance after fetching it, checking its label, and exact confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| confirm | Yes | Must equal delete:<instance_id>:<label>. | |
| instance_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description adds procedural context beyond annotations: that the agent should fetch the instance first, check its label, and require exact confirmation. This is valuable additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It efficiently conveys the purpose and required verification steps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature (3 required params, no output schema), the description adequately explains the verification workflow. It does not mention return values or prerequisites like authentication, but the step guidance is sufficient for an agent to understand the expected 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 coverage is low (33%), and the description does not individually describe each parameter. However, it provides context (e.g., label is checked, confirm must be exact) that adds meaning beyond the schema. More explicit parameter descriptions would improve this score.
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 'Delete a Vultr instance', specifying the verb and resource, and distinguishes it from siblings like reboot_instance and create_instance by mentioning the prerequisite steps of fetching, label checking, and exact confirmation.
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 when to use the tool (after fetching, checking label, and having exact confirmation) but does not explicitly state when not to use it or mention alternative tools like reboot_instance. The step-by-step guidance is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountget_accountARead-onlyIdempotent
Show Vultr account metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already fully declare the tool as read-only, non-destructive, and idempotent. The description adds no behavioral details beyond 'Show', so it does not contribute extra transparency but is consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no extraneous information. Front-loaded with the core action. Perfectly concise for a simple read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, comprehensive annotations, and no output schema, the description sufficiently conveys the tool's function. It could list the types of metadata returned, but not necessary with annotations.
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?
Tool has zero parameters, meeting the baseline of 4 per guidelines. Description does not need to clarify parameters since there are none.
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 'Show Vultr account metadata', a specific verb-resource pair. It distinguishes from sibling tools like 'create_instance' or 'get_instance' which deal with instances, making the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives, but the tool's simplicity (no parameters) and unique resource (account metadata) make its usage implicitly clear. Sibling tools target different resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instanceget_instanceARead-onlyIdempotent
Fetch one Vultr instance by id.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description's word 'Fetch' aligns with these annotations but adds no new behavioral insights (e.g., rate limits, auth needs, or error conditions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 6-word sentence with no extraneous information. It is front-loaded and 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 has one parameter, no output schema, and rich annotations, the description is minimally viable. It does not mention return value or error scenarios, which could be helpful but are not required for a simple read fetch.
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%. The description only states 'by id', which adds minimal meaning beyond the parameter name 'instance_id'. No format, example, or constraints are provided for the single 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 clearly states the action ('Fetch') and resource ('one Vultr instance') along with the required lookup key ('by id'). This distinguishes it from siblings like 'list_instances' (multiple) and 'create_instance' (write).
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 for fetching a single instance by ID, but does not explicitly guide when to use this tool versus alternatives (e.g., 'list_instances' for multiple instances). No exclusion or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_policyget_policyARead-onlyIdempotent
Show the local safety policy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral context beyond what annotations already provide (readOnlyHint, destructiveHint). It simply restates the purpose without detailing effects 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?
A single, front-loaded sentence with no wasted words; every word is necessary and precise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, no parameters, and annotations present, the description is adequate. However, it lacks any mention of the return value, though this is partially excused by the absence of an output schema.
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 no parameters and 100% schema coverage, the description adds meaning by specifying 'local safety policy', which clarifies the resource type beyond the empty 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 shows the local safety policy, specifying a unique verb and resource that distinguishes it from siblings like get_account or get_instance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives is provided; however, the tool's simplicity (no parameters) implies straightforward usage without need for complex decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vultr_cli_statusget_vultr_cli_statusARead-onlyIdempotent
Check whether a local vultr-cli binary is available. API tools do not require it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds minimal extra behavioral insight. It confirms the tool only checks availability, consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the main purpose. Every sentence is necessary and concise.
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 simple tool (no params, no output schema, rich annotations), the description is fully adequate. It tells what it does and provides relevant context regarding API tools.
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?
No parameters, and schema coverage is 100%. The description adds no parameter info, which is appropriate since there are none to explain.
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: 'Check whether a local vultr-cli binary is available.' This is a specific verb+resource, and it distinguishes from sibling tools that manage Vultr cloud resources.
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 notes 'API tools do not require it,' which implies this tool is for checking CLI availability when using CLI-specific features. It provides clear context but does not explicitly state when to use or avoid this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_firewall_groupslist_firewall_groupsARead-onlyIdempotent
List Vultr firewall groups.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, and idempotent behavior. The description is consistent but adds no new behavioral context; it does not contradict 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?
Extremely concise: a single sentence with no extraneous information. Perfectly sized for its simplicity.
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 parameters, output schema, or nested objects, the description is nearly complete. However, it could hint at the structure of the returned data (e.g., list of group objects).
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?
No parameters exist, so the description need not explain them. The schema coverage is 100%, and the description adds no param info, which is acceptable.
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 ('List') and resource ('Vultr firewall groups'), clearly distinguishing it from sibling tools like 'list_instances' or 'list_os'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., when to list firewall groups vs. list instances). The description simply states what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_instanceslist_instancesCRead-onlyIdempotent
List Vultr instances in the account.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| region | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, openWorldHint, and idempotentHint, providing safety and idempotency guarantees. The description adds no additional behavioral context (e.g., pagination, rate limits, result set nature).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and very concise, but it omits important information about parameters and usage context, making it under-specified.
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 lack of output schema and zero parameter documentation, the description is incomplete. It does not explain the filtering capability or the nature of the returned list.
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% and the description does not mention the two parameters (tag, region) or explain their purpose as filters. The description fails to add any meaning beyond the bare schema names.
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 Vultr instances in the account.' It specifies the action (list) and the resource (instances), distinguishing it from sibling tools like create_instance, delete_instance, and other list tools (list_os, list_plans).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_instance for a single instance). No when-not-to-use or context for filtering by tag or region.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_oslist_osARead-onlyIdempotent
List Vultr operating system ids.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint; the description adds no further behavioral context such as pagination or data format, barely meeting the minimal bar.
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?
A single, front-loaded sentence with zero wasted words—tight 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?
For a zero-parameter, read-only tool, the description is adequate but could mention the return format (e.g., 'returns a list of OS IDs') for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description correctly omits parameter details (baseline 4 per rules).
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 'List Vultr operating system ids' clearly specifies the action (list) and the resource (operating system IDs), making the tool's purpose immediately obvious.
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 siblings like list_plans or list_regions, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_planslist_plansBRead-onlyIdempotent
List Vultr plans. Set allowed_only to true to see plans permitted by policy.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| allowed_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is clear. The description adds that listing can be filtered by allowed_only, which provides behavioral context beyond annotations. It does not contradict 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 extremely concise at two sentences with no redundant words. The purpose is front-loaded in the first sentence, and the additional parameter guidance is placed immediately after.
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 simplicity of the tool (no output schema, two optional parameters, and clear annotations), the description covers the main action and one filter. However, the missing explanation of the type parameter and lack of alternative tool guidance make it somewhat incomplete for an agent to use confidently.
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 explains the allowed_only parameter ('to see plans permitted by policy') but completely omits the type parameter. This leaves one parameter undocumented, which is a significant gap for a two-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List Vultr plans' which is a clear verb+resource pair. The resource 'plans' is distinct from sibling tools like list_instances or list_regions, providing implicit differentiation. However, it does not explicitly state that this tool is for listing available subscription plans, which might assume domain knowledge.
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 mentions setting allowed_only to true for policy-permitted plans, giving some usage context. However, it lacks explicit guidance on when to use this tool versus alternatives, such as list_os or list_regions, and does not include any 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.
list_regionslist_regionsARead-onlyIdempotent
List Vultr regions. Set allowed_only to true to see the policy allowlist.
| Name | Required | Description | Default |
|---|---|---|---|
| allowed_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds minimal context about the parameter's effect but does not disclose additional behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero wasted words. Efficiently conveys the tool's purpose and a key usage detail.
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 read-only tool with one optional boolean parameter and no output schema, the description is sufficient. It covers the essential information needed to use 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?
The parameter 'allowed_only' has no schema description (0% coverage). The description compensates by explaining its usage: 'Set allowed_only to true to see the policy allowlist.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Vultr regions'. It is distinct from sibling tools like list_instances or list_plans.
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 a specific usage tip for the allowed_only parameter but does not explicitly state when to use this tool versus alternatives; however, the name and context make it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ssh_keyslist_ssh_keysARead-onlyIdempotent
List Vultr SSH keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no behavioral details beyond the annotations, such as pagination, ordering, or response format. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It conveys the core purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description adequately states its purpose. More detail about the returned data could be helpful but is not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% coverage, so the description is not required to add parameter information. Baseline score of 4 is appropriate per guidelines.
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' and resource 'Vultr SSH keys', which matches the tool name. While it does not explicitly distinguish from sibling list tools, the name itself is sufficiently distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives (e.g., list_instances) or any prerequisites. The description simply restates the action without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reboot_instanceReboot Vultr instanceA
Queue a Vultr instance reboot after exact confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must equal reboot:<instance_id>. | |
| instance_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide write behavior (readOnlyHint=false) and non-destructive hint. The description adds queuing semantics and the requirement for exact confirmation, which is valuable beyond annotations. However, it does not disclose whether multiple calls are safe or what happens to running operations.
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?
A single sentence is highly concise but lacks important details such as asynchronous behavior or state requirements. It is front-loaded with the core action, making it efficient for quick reading.
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), the description covers the core purpose and the confirmation requirement. However, it omits operational details like asynchronicity and instance existence prerequisites, leaving moderate gaps.
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 50% with only confirm parameter described. The description adds no new semantic information about parameters beyond what the schema provides. For an agent, this offers little added value.
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 specific verb 'Queue...reboot' and resource 'Vultr instance', clearly distinguishing from sibling tools like delete_instance or create_snapshot. It also includes the condition 'after exact confirmation', which clarifies the required input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when or when not to use this tool. It does not mention alternatives or prerequisites, leaving the agent to infer context from the tool name alone.
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.
15 tool updates
v0.1.0- First observed
create_instance - First observed
create_instance_preview - First observed
create_snapshot - First observed
delete_instance - First observed
get_account - First observed
get_instance - First observed
get_policy - First observed
get_vultr_cli_status - First observed
list_firewall_groups - First observed
list_instances - First observed
list_os - First observed
list_plans - First observed
list_regions - First observed
list_ssh_keys - First observed
reboot_instance
TDQS
Each tool targets a distinct action on a specific resource (e.g., create_instance vs. create_snapshot, list_instances vs. list_os). No two tools have overlapping purposes, and even closely related tools like create_instance and create_instance_preview are clearly differentiated by the preview aspect.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., create_instance, list_firewall_groups). The naming is predictable and uniform across the entire set, with no mixing of conventions.
With 15 tools, the server covers core Vultr management operations without being bloated. Each tool serves a clear purpose, and the count feels well-scoped for the domain.
The tool set covers instance creation, reading, deletion, reboot, and preview, plus listing of resources like SSH keys, OS, plans, and regions. However, there are notable gaps: no instance update or resize, no snapshot listing or deletion, no SSH key creation/deletion, and no firewall rule management. This leaves several common workflows incomplete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
- emisarOAuthdev.emisar
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Read GPU instances, types, images, filesystems and firewall rules; launch and terminate instances.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables complete Vultr cloud infrastructure management through natural language commands, providing 335+ tools across 27 services including compute, DNS, Kubernetes, databases, and networking. Features smart identifier resolution allowing users to reference resources by human-readable names instead of UUIDs.10021MIT
- AlicenseNot gradedqualityDmaintenanceEnables remote Linux VM management via SSH with automatic safety checks for destructive commands, supporting password authentication and sudo operations.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage VMware vSphere virtual infrastructure through comprehensive operations including VM power control, snapshot management, resource monitoring, performance analytics, and bulk operations with built-in safety confirmations for destructive actions.-
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to securely manage Virtual Private Servers via SSH, with features including command execution, file operations, system monitoring, and service management.1MIT
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/heyzeyu/vultr-codex-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server