Skip to main content
Glama

expose_service

Destructive

Expose a Docker container by checking it runs, optionally adding a Cloudflare CNAME, and creating an Nginx Proxy Manager host that forwards a domain to a host and port; shows the plan before changes.

Instructions

Expose a container: check it runs, add a Cloudflare CNAME to tunnel_hostname (only if given), and add an Nginx Proxy Manager host that forwards domain to forward_host:forward_port. The plan is shown to the person before anything changes.

Input Schema

NameRequiredDescriptionDefault
domainYes
dry_runNo
dns_zone_idNo
forward_hostNohost.docker.internal
forward_portYes
container_nameYes
tunnel_hostnameNo

Output Schema

NameRequiredDescriptionDefault
noteNo
errorsNo
dry_runNo
plannedNo
successNo
approved_byNo
steps_completedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the destructiveHint/openWorldHint annotations, the description discloses the pre-flight container check, the conditional CNAME only when tunnel_hostname is supplied, and that a plan is presented before any change is applied. It still omits whether an existing proxy host is overwritten or how DNS records are reconciled, which matters for a destructive, open-world mutation.

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?

Two sentences, zero waste, with the effect chain and the plan-preview guarantee front-loaded. Every clause adds information an agent cannot get from the schema.

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?

An output schema exists and the annotations carry the safety profile, so the description does not need to describe return values. It is nearly complete for a multi-step, multi-system mutation, with only idempotency/existing-resource behavior and dry_run semantics left open.

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 0%, so the description must carry parameter meaning. It usefully explains that tunnel_hostname is optional/conditional and that forward_host:forward_port form the forwarding target, but dry_run, dns_zone_id, and container_name's role are left unexplained.

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

Purpose4/5

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

Starts with a specific verb+resource ('Expose a container') and enumerates the three concrete side effects: container check, Cloudflare CNAME, Nginx Proxy Manager host. It is clearly distinguishable from the opposite-number sibling teardown_service, though it does not explicitly contrast with proxy_hosts or dns_records.

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

Usage Guidelines3/5

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

Usage is implied by the effects described (use when you want a container reachable at a domain), but there is no explicit when-to-use vs. alternatives guidance. The dry_run parameter exists in the schema yet the description never says when to prefer a dry run over a live apply.

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