Skip to main content
Glama

Save a VPN profile

save_profile

Saves a local OpenVPN or WireGuard profile into the encrypted keyhop vault with Touch ID confirmation, inlining referenced certificate, key, and auth files without revealing their contents.

Instructions

Saves a VPN profile from a file on this machine (.ovpn or WireGuard .conf) into the encrypted keyhop vault; the user confirms with Touch ID. Referenced cert/key files and an auth-user-pass file are inlined. You never see the contents. Profiles that need a password not in the file, or OpenConnect/IPsec profiles, must be added by the user in a terminal: vpnhop add.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "name": "<name>",
      "file": "<file>"
    },
    "name": "save_profile"
  }
}

Input Schema

NameRequiredDescriptionDefault
fileYesAbsolute path to the .ovpn or WireGuard .conf file.
nameYesProfile name: lowercase letters, digits, - and _.
typeNo
allowHostsNoHosts http_request may reach through this profile.
descriptionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which only say openWorldHint=false, destructiveHint=false), the description discloses that the user must confirm via Touch ID, that referenced cert/key and auth-user-pass files are inlined, that contents are encrypted into the vault, and that the agent never sees file contents. That is exactly the behavioral context a calling agent needs and cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the core action and format constraints, then behavior, then the exclusion/redirect. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, this covers confirmation flow, data handling, and unsupported cases well. It stops short of describing failure behavior (e.g. bad path, name collision with an existing profile) or the meaning of allowHosts, which leaves minor gaps for a five-parameter write operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%; the description clarifies the 'file' parameter's accepted formats and the implicit inlining of referenced cert/key files, and 'type' is enum-constrained in schema. However, it says nothing about 'allowHosts' — the parameter with the most consequential agent-facing effect (which hosts http_request may reach) — nor about 'description', so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (saves), resource (VPN profile), accepted formats (.ovpn, WireGuard .conf), source (a file on this machine) and destination (encrypted keyhop vault). An agent can distinguish this from remove_profile and list_profiles without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-not conditions — profiles needing a password not in the file, or OpenConnect/IPsec profiles — and routes those cases to the terminal command 'vpnhop add'. It does not name any sibling tool as an alternative, but no sibling performs profile import, so the routing guidance is clear rather than ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.