Skip to main content
Glama

Add a Domain Port Listener

add_domain_port
Idempotent

Add a new port listener to a domain. Minimal port is {number, protocol}; routes, cors, and tls are optional. Errors if a listener for that port number already exists — use the route/CORS/TLS tools to modify an existing listener instead. Recommended reading before first use: get_cpln_skill("domain") — the runbook for this tool family (read once per session).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
portYesComplete port listener definition. Minimal valid listener: { "number": 443, "protocol": "http" }; routes, cors, and tls are optional.
domainYesFully qualified domain name.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.

TDQS

A3.8/5.0
Behavior1/5

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

The description states 'Errors if a listener for that port number already exists', which implies a non-idempotent create operation (a second identical call fails). This directly contradicts the annotation idempotentHint=true. Aside from this error condition, no further behavioral traits (e.g., effects on domain status, LB requirements) are disclosed in the description itself.

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?

The description is three sentences, front-loaded with the primary action, and each sentence earns its place: minimal payload, duplicate-port error with alternative, and recommended reading. No redundancy or filler.

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?

Given the tool's complexity (nested objects, optional routes/cors/tls) and the presence of a rich output schema, the description covers key context: duplicate error handling, alternative tool usage, and a runbook pointer. The port-number caveat (only 443/80 without LB) is left to the schema, which is acceptable. However, the idempotency contradiction prevents a perfect score.

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 100%, so parameters are already thoroughly documented. The description adds only 'Minimal port is {number, protocol}; routes, cors, and tls are optional', which repeats what the schema's port.description already states. No new parameter-level insight is provided, so baseline 3 is appropriate.

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?

The description states a specific action ('Add a new port listener to a domain') and distinguishes from siblings like add_domain_route and remove_domain_port. It also clarifies the minimal required port structure, 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.

Usage Guidelines5/5

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

Explicitly tells the agent when NOT to use this tool: if a listener for that port number already exists, use route/CORS/TLS tools instead. It also recommends reading the domain runbook via get_cpln_skill('domain') before first use, providing clear alternative paths and prerequisites.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation5/5

Every tool targets a distinct resource/action pair (e.g., get_resource vs get_resource_schema, list_deployments vs list_workload_replicas) and descriptions clearly differentiate purposes. No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a verb_noun snake_case pattern (create_gvc, update_workload, list_resources, query_metrics) with consistent verbs. The few imperative verbs (browse, build, mount) still maintain the same verb-first structure.

Tool Count1/5

With 55 tools, this server far exceeds the typical well-scoped 3-15 tool range. While each tool appears purposeful, the sheer number creates selection overhead and falls into the extreme 50+ category on the rubric.

Completeness4/5

The surface covers nearly the full Control Plane lifecycle: CRUD for GVC, workload, identity, policy, volumeset, and domain, plus observability, templates, image builds, and Terraform. Minor gaps include referenced but missing configure_workload_* tools and no secret creation/deletion (by design).