Northflank MCP by usefulapi
Server Details
Inspect and control your Northflank projects, services, jobs, and builds from your AI assistant.
- Status
- Healthy
- Uptime
- 76.8% over 73 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 17 tools
Every tool pairs a distinct resource with a distinct action (get_service vs get_service_metrics vs list_service_builds vs trigger_service_build), and the service-lifecycle verbs (pause/resume/restart/scale) are clearly differentiated.
All 17 tools follow a uniform northflank_verb_noun snake_case pattern with consistent verb choices (get_/list_/pause_/resume_/restart_/scale_/trigger_).
17 tools is slightly heavy but justified by the broad PaaS domain (projects, services, jobs, addons, domains, secrets), and each tool targets a distinct resource rather than redundant variants.
Read coverage is broad, but the set is nearly read-only plus a handful of service mutations; there is no create/update/delete for projects, services, jobs, or addons, and secret/domain operations are list-only, leaving notable provisioning and teardown gaps.
Available Tools
17 toolsnorthflank_get_addonGet addonBRead-onlyInspect
Get details and status of a single addon. GET /v1/projects/{projectId}/addons/{addonId}.
| Name | Required | Description | Default |
|---|---|---|---|
| addonId | Yes | Addon id (from northflank_list_addons). | |
| projectId | Yes | Project id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe, non-mutating read, and the description adds no behavioral context beyond restating that it fetches one resource. No mention of permissions, error behavior when the addon is missing, or what 'status' entails. It at least does not contradict 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?
Two sentences, zero filler, with the purpose stated first and the endpoint path appended as a secondary detail. Nothing needs trimming.
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 two-parameter read tool with full schema coverage this is close to adequate, but with no output schema the description should say more about what 'details and status' returns. As written, an agent knows what it fetches but not what shape to expect.
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 100%: addonId documents its source (northflank_list_addons) and projectId is described. The description adds no format or constraint detail beyond the schema, so the baseline 3 applies.
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 a specific verb ('Get') and resource ('addon') with scope narrowed to a single item, which separates it from the list-style siblings such as northflank_list_addons. It does not explicitly contrast itself with the other northflank_get_* tools, but the resource noun is distinctive enough that an agent can route correctly.
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 no when-to-use guidance, no prerequisites, and never names an alternative tool. The most useful hint, that addonId comes from northflank_list_addons, lives only in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_get_jobGet jobARead-onlyInspect
Get details of a single job, including build/deploy config and cron schedule. GET /v1/projects/{projectId}/jobs/{jobId}.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job id (from northflank_list_jobs). | |
| projectId | Yes | Project id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds useful context that the response covers build/deploy config and cron schedule, but says nothing about auth, error behavior for missing jobs, or response shape beyond that summary.
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 tight sentences with the core purpose front-loaded and no filler; the endpoint is appended as supporting detail rather than padding.
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 two-param read-only fetch with full schema coverage and readOnlyHint, the description is nearly complete; calling out the returned fields partially compensates for the missing output schema. Only error/not-found behavior is unaddressed.
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 100% and the schema already ties jobId back to northflank_list_jobs. The description adds no parameter-level meaning beyond the REST path template GET /v1/projects/{projectId}/jobs/{jobId}, which merely restates the two required params. Baseline 3 applies.
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 a specific verb and resource ('Get details of a single job') and enumerates the payload contents (build/deploy config, cron schedule). It implicitly contrasts with northflank_list_jobs via 'single job', but never names the alternative 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?
Usage is implied: fetch details for one job once you have a jobId, as referenced by the parameter description. There is no explicit when-to-use versus northflank_list_jobs or when-not guidance, nor any note about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_get_projectGet projectBRead-onlyInspect
Get details of a single project, including region, cluster and associated services/jobs/addons. GET /v1/projects/{projectId}.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id (from northflank_list_projects). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this as a safe read, so the description's main added value is enumerating the returned content. It says nothing about permissions required, error behavior for an unknown projectId, or the exact shape/richness of the nested response.
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 compact sentences with the resource and its contents front-loaded. The trailing REST endpoint is marginally useful for callers who think in terms of the API, but it is the least valuable part of the definition.
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 carries the burden of describing returns, and it does so by listing region, cluster, and associated services/jobs/addons. That is adequate for a single-parameter read tool, though the nesting and depth of those associated resources is left unspecified.
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 100%, and the projectId schema description already points back to northflank_list_projects as the source of the id. The description adds the REST path (GET /v1/projects/{projectId}) but no extra semantics for the parameter, so the baseline 3 applies.
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 a specific verb (get) and resource (a single project) and enumerates what the result contains (region, cluster, associated services/jobs/addons). The word 'single' implicitly separates it from northflank_list_projects, but no sibling is named explicitly, so differentiation is left to inference.
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?
There is no when-to-use guidance, no exclusion of alternatives, and no mention of when to prefer sibling tools like northflank_get_service or northflank_get_addon instead. The intended scenario is only weakly implied by 'a single project'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_get_serviceGet serviceARead-onlyInspect
Get details and current status of a single service. GET /v1/projects/{projectId}/services/{serviceId}.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id. | |
| serviceId | Yes | Service id (from northflank_list_services). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe read. The description adds a little value by noting the return includes 'current status' and by disclosing the underlying REST path, but says nothing about permissions, error cases, or freshness of the status.
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, purpose first, endpoint second — zero padding and well front-loaded.
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 two-parameter read tool with full schema coverage and a readOnlyHint, nothing critical is missing; the description plus schema is sufficient to call it correctly. It only lacks guidance on where the ids come from and what the response contains.
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 100%, so both parameters are already documented, including the pointer that serviceId comes from northflank_list_services. The REST path in the description restates the parameter positions but adds no new semantic detail.
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 a specific verb ('Get') and resource ('details and current status of a single service'), which cleanly separates it from the list_services sibling by scope. It does not name the sibling explicitly, but 'single service' does the disambiguation work.
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?
Usage is implied by the description — retrieve one service's details/status — but there is no explicit when-to-use, when-not, or named alternative (e.g., use list_services to find the id first, or get_service_metrics for metrics). The agent must infer routing from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_get_service_metricsGet service metricsARead-onlyInspect
Get CPU / memory metrics for a service's containers. GET /v1/projects/{projectId}/services/{serviceId}/metrics. Use queryType=single (default) for a current snapshot or queryType=range with duration/startTime/endTime.
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | Point-in-time for queryType=single. | |
| endTime | No | Range end. | |
| duration | No | Range duration in seconds (alternative to startTime/endTime). | |
| projectId | Yes | Project id. | |
| queryType | No | single = point-in-time (default), range = time series. | |
| serviceId | Yes | Service id. | |
| startTime | No | Range start (unix ms/seconds per API). | |
| metricTypes | No | Which metrics to return; defaults to all if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe read, lowering the bar. The description contributes the default value of queryType and the parameter family required for range mode, but says nothing about data retention, sampling resolution, rate limits, or auth/scope requirements.
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, zero filler, with purpose followed by usage guidance. The raw REST path GET /v1/projects/{projectId}/services/{serviceId}/metrics is arguably redundant for an MCP caller and is the one element that does not earn 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?
With no output schema, the description ideally would say what the metrics payload looks like (units, series shape, container grouping), and it does not. Its coverage of inputs and modes is adequate, so it is viable but leaves the return side undocumented.
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 100%, so all eight parameters are already documented in the schema, making 3 the baseline. The description restates the queryType modes and their companion parameters but adds no unit clarification (the schema's 'unix ms/seconds per API' ambiguity on time/startTime is left unresolved).
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?
Names a specific verb (Get) and resource (CPU / memory metrics) with explicit scope (a service's containers), which cleanly separates it from sibling readers like northflank_get_service or northflank_get_job. An agent can identify the tool without opening the schema.
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?
Gives concrete mode-selection guidance: queryType=single (default) for a current snapshot, queryType=range with duration/startTime/endTime for a time series. It does not, however, state when to call this tool versus sibling tools or any prerequisites, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_list_addonsList addonsBRead-onlyInspect
List addons (managed databases / services) in a project with their status. GET /v1/projects/{projectId}/addons.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to access. | |
| cursor | No | Cursor from a previous page's pagination.cursor to fetch the next page. | |
| per_page | No | Results per page (max 100). | |
| projectId | Yes | Project id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true so the safety profile is covered. The description adds the underlying GET endpoint and notes that status is included in results, but says nothing about pagination behavior or result shape beyond that.
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?
One sentence of purpose plus the endpoint path, front-loaded with the important scoping information. Nothing is padded or repetitive.
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?
There is no output schema, and the description only hints that results carry a status. For a paginated list endpoint it could note what fields come back, but for a simple read tool this is minimally 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?
Schema description coverage is 100%, so page, cursor, per_page, and projectId are fully documented in the schema. The description only restates project scoping and adds no syntax or format detail beyond it; baseline 3 applies.
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 a specific verb (List) and resource (addons), and clarifies what an addon is ('managed databases / services') while scoping it to a project. It does not explicitly contrast with northflank_list_services, but the parenthetical disambiguates enough to identify it.
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 when-to-use guidance and no exclusions or alternatives (e.g., get_addon for a single resource, list_services for non-addon workloads). Usage is only implied by the project scoping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_list_domainsList domainsARead-onlyInspect
List custom domains for the account (or a team), with verification status. GET /v1/domains (team: GET /v1/teams/{teamId}/domains).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to access. | |
| cursor | No | Cursor from a previous page's pagination.cursor to fetch the next page. | |
| teamId | No | Optional team id to scope to a team's domains. | |
| per_page | No | Results per page (max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context by disclosing that results carry verification status and by naming the underlying REST endpoints, but it says nothing about pagination behavior or ordering beyond what the schema implies.
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 states the resource, scope, and returned fields, followed by endpoint paths in parentheses. It is efficient, though the raw endpoint strings are of marginal value to an agent that already has the tool and schema.
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 100% schema coverage and annotations covering safety, the description is nearly sufficient. It conveys scope and returned content; only richer output/pagination expectations would make it fully complete, and those are minor for a simple 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?
Schema description coverage is 100%, so all four parameters (page, cursor, teamId, per_page) are already documented in the schema. The description only restates the account/team scope that teamId covers, adding no new syntax or constraint detail. Baseline 3 is appropriate.
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 a specific verb and resource ('List custom domains') plus the scope (account or team) and a bonus detail about returned content ('with verification status'). No sibling covers domains, so an agent can identify this tool's unique purpose immediately.
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 each scope applies by pairing 'account (or a team)' with the two endpoint variants, which gives some routing signal. However, it never states when not to use this tool or how it relates to any alternative, so usage is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_list_jobsList jobsBRead-onlyInspect
List jobs (manual / cron) in a project. GET /v1/projects/{projectId}/jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to access. | |
| cursor | No | Cursor from a previous page's pagination.cursor to fetch the next page. | |
| per_page | No | Results per page (max 100). | |
| projectId | Yes | Project id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this is a safe read, so the description's burden is reduced. It adds the job-type distinction (manual/cron) and the underlying endpoint, but says nothing about pagination behavior despite cursor/page/per_page parameters.
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 operation and scope. The trailing HTTP endpoint is mildly redundant but compact and harmless.
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 paginated list tool with no output schema, the description covers purpose and safety adequately but is silent on pagination semantics (cursor vs page), which matters for correct invocation. It is minimally viable rather than 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?
Schema description coverage is 100%, so pagination and projectId parameters are fully documented in the schema. The description's 'in a project' merely restates the projectId requirement and adds no syntax or format detail 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?
States a specific verb (List) and resource (jobs), scoped to a project, and clarifies the job subtypes (manual/cron). It is distinguishable from sibling northflank_get_job by being a listing operation, though it does not explicitly call out that contrast.
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 when-to-use guidance, prerequisites, or alternatives are given. The scoping phrase 'in a project' implies context but nothing directs the agent to this tool over northflank_get_job or other list siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_list_projectsList projectsARead-onlyInspect
List projects for the authenticated token (or a specific team). Good first call to discover project ids. GET /v1/projects (team: GET /v1/teams/{teamId}/projects).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to access. | |
| cursor | No | Cursor from a previous page's pagination.cursor to fetch the next page. | |
| teamId | No | Optional team id to scope to a team's projects. | |
| per_page | No | Results per page (max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real value beyond that: it clarifies that listing is scoped to the authenticated token unless a team is supplied, and exposes the underlying REST routes (with the alternate team path), helping an agent predict 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?
Two tight sentences with the core purpose front-loaded before the usage hint and endpoint detail. The raw REST paths are slightly redundant for an MCP caller, but they remain short and are placed last.
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 parameterless-required, read-only list tool with a fully described schema and no output schema, the definition is nearly complete: it covers scope, purpose and first-call usage. It only omits any hint about the shape of returned project records/pagination, which is a minor gap given cursor and per_page are already in the 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?
Schema description coverage is 100%, so page, cursor, per_page and teamId are each documented in the schema, establishing the baseline of 3. The description only restates the team-scoping effect of teamId and adds no format or pagination semantics 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?
States a specific verb and resource ("List projects") plus the scoping variants (authenticated token vs a specific team), which cleanly separates it from the singular northflank_get_project sibling. It does not explicitly distinguish itself from the many other list_* siblings, but the resource name carries that distinction.
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?
"Good first call to discover project ids" gives clear situational guidance for when to reach for this tool, and the team-scoping note tells the agent how to narrow results. It stops short of naming the alternative (northflank_get_project) for retrieving a single project, so no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_list_secret_groupsList secret groupsARead-onlyInspect
List a project's secret groups — METADATA ONLY (id, name, type, priority, restrictions). Does NOT return secret values. GET /v1/projects/{projectId}/secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to access. | |
| cursor | No | Cursor from a previous page's pagination.cursor to fetch the next page. | |
| per_page | No | Results per page (max 100). | |
| projectId | Yes | Project id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: it returns METADATA ONLY, explicitly does NOT return secret values, and names the underlying endpoint. The 'does not return secret values' disclosure is the kind of expectation-management that matters here and is not in the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the critical constraint (metadata only, no secret values) emphasized in caps, plus the endpoint. Every clause earns its place; nothing redundant.
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?
No output schema exists, so the description must describe the return shape — and it does, enumerating the metadata fields (id, name, type, priority, restrictions). Pagination is fully covered by the schema. Nearly complete; it could note ordering but that is minor.
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 100%, so page, cursor, per_page, and projectId are all documented in the schema. The description adds no param syntax or format detail beyond what the schema provides, so the baseline 3 applies.
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 a specific verb ('List') and resource ('a project's secret groups'), scoped to a project, which is enough to distinguish it from the sibling list/get tools for addons, jobs, projects, and services. An agent knows exactly what this returns without opening the schema.
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?
Usage is implied — you call it to enumerate a project's secret groups — but the description names no alternatives, no prerequisites, and no when-not condition (e.g., to read actual secret values the agent must look elsewhere). Adequate but with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_list_service_buildsList service buildsARead-onlyInspect
List a build service's build runs / history (branch, sha, status, timestamps). GET /v1/projects/{projectId}/services/{serviceId}/build.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to access. | |
| cursor | No | Cursor from a previous page's pagination.cursor to fetch the next page. | |
| per_page | No | Results per page (max 100). | |
| projectId | Yes | Project id. | |
| serviceId | Yes | Service id of a build/combined service. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description usefully adds the shape of what comes back (branch, sha, status, timestamps) and the underlying GET endpoint, which matters because no output schema exists. It stops short of describing ordering or pagination behavior, so not a 5.
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 tight sentences with the return content front-loaded and zero filler. The URL template marginally restates the required path parameters but is conventional and cheap.
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 no output schema, the description compensates by naming the returned fields, and the annotations carry the safety profile. It is complete enough to call correctly, though it leaves pagination strategy undiscussed.
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 100%, so all five parameters (page, cursor, per_page, projectId, serviceId) are already documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
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 a specific verb (List) and resource (a build service's build runs / history) and enumerates the returned fields (branch, sha, status, timestamps), so an agent knows exactly what it produces. It does not explicitly name a sibling like northflank_trigger_service_build to contrast against, which keeps it from a 5.
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?
Usage is implied by the verb 'List' and the history framing, but there is no explicit when-to-use guidance or contrast with adjacent tools such as northflank_trigger_service_build (start a build) or northflank_get_service. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_list_servicesList servicesARead-onlyInspect
List services in a project (build / deployment / combined) with their build+deployment status. GET /v1/projects/{projectId}/services.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to access. | |
| cursor | No | Cursor from a previous page's pagination.cursor to fetch the next page. | |
| per_page | No | Results per page (max 100). | |
| projectId | Yes | Project id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the concrete endpoint and the fact that results carry build+deployment status, but says nothing about pagination behavior beyond what the schema documents. Adds some value over annotations, hence a 3.
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 tightly packed sentences: one states what is listed and returned, the second gives the endpoint. Nothing is wasted and the essential scoping is front-loaded.
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 full schema coverage and annotations declaring safety, the description is nearly complete; it even notes the returned status fields. Lacking only an explicit alternative/comparison note to feel fully 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?
Schema coverage is 100%, so all four parameters (page, cursor, per_page, projectId) are already described in the schema. The description adds no parameter-level syntax or format detail. Baseline 3 is correct when the schema carries the full burden.
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 a specific verb (List) and resource (services), scopes it to a project, names the service kinds (build/deployment/combined), and describes the returned payload (build+deployment status). This cleanly distinguishes it from the singular northflank_get_service sibling.
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?
Usage is implied by the name and scope but the description never says when to prefer this over northflank_get_service or northflank_list_service_builds, nor any prerequisites. Adequate but no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_pause_servicePause service (mutates infra)BDestructiveInspect
MUTATING: pause a service, scaling it to zero running instances. POST /v1/projects/{projectId}/services/{serviceId}/pause.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id. | |
| serviceId | Yes | Service id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and the title flags infrastructure mutation, so the safety profile is covered. The description adds the specific mechanism (scale to zero instances), which is useful, but says nothing about reversibility, whether configuration/state is preserved, or that resume_service is the inverse. With annotations carrying the main burden, this is adequate but not rich.
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 compact sentences with the mutation warning and effect front-loaded. The raw endpoint string is somewhat redundant metadata but is not disruptive and gives useful API context.
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 two-parameter mutation with no output schema, the essentials are present: mutation warning, behavioral effect, and endpoint. Missing only reversibility/preservation notes, which are minor for this 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?
Schema description coverage is 100% for both parameters (projectId, serviceId), so the schema fully documents them. The description only implies them via the endpoint path and adds no format or constraint detail. Baseline 3 applies.
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 a specific verb (pause) and resource (service), plus the concrete effect of 'scaling it to zero running instances', which distinguishes it from siblings like resume_service, restart_service, and scale_service. It doesn't explicitly name those siblings, so it falls just short of the top score.
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?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The implicit intent (stop running instances) can be inferred from the effect statement, but the agent gets no criteria for choosing pause over scale_service or restart_service.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_restart_serviceRestart service (mutates infra)ADestructiveInspect
MUTATING: restart all running containers of a service. POST /v1/projects/{projectId}/services/{serviceId}/restart.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Project id. | |
| serviceId | Yes | Service id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and the title flags 'mutates infra', so the safety profile is covered structurally. The description adds useful scope — that ALL running containers are restarted, not a rolling/partial operation — but says nothing about downtime, async behavior, or whether the operation is safe to repeat.
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 mutation warning and the core action, with no filler. The trailing endpoint URL is slightly redundant for an agent that just needs to call the tool, but it is compact and harmless.
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 two-param, no-output-schema, destructive operation, the description covers the action and scope but omits operational context an agent may need — expected downtime, whether the call is synchronous, or any permission prerequisites. Adequate but with clear gaps for a mutation 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 100% for both required params (projectId, serviceId), so the schema carries parameter documentation. The description adds no parameter-level detail such as accepted ID formats or defaults, which is the expected baseline when the schema already documents everything.
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 a specific verb (restart) and resource (all running containers of a service), plus the exact API endpoint. This is clearly distinguishable from siblings like pause_service, resume_service, and scale_service, so an agent can pick it without opening a schema.
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 it (you want a service's containers restarted) but gives no explicit guidance versus the adjacent operations — e.g. when to restart instead of pause/resume, or whether this is appropriate for zero-downtime scenarios. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_resume_serviceResume service (mutates infra)ADestructiveInspect
MUTATING: resume a paused service. Optionally set the instance count and CI/CD/autoscaling state to restore. POST /v1/projects/{projectId}/services/{serviceId}/resume.
| Name | Required | Description | Default |
|---|---|---|---|
| instances | No | Instances to scale to on resume. | |
| projectId | Yes | Project id. | |
| serviceId | Yes | Service id. | |
| disabledCD | No | Whether CD should be disabled after resume. | |
| disabledCI | No | Whether CI should be disabled after resume. | |
| enableAutoscaling | No | Restore autoscaling (defaults to the state captured when paused). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation only flags that mutation occurs; the description adds substantive context: the operation is a resume, the supplied fields restore CI/CD and autoscaling state, and it names the underlying endpoint. It does not spell out permission requirements or side effects on dependent resources, so it stops short of a 5.
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, mutation flag front-loaded, endpoint last. No filler or redundant restatement of the title.
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 is not obliged to explain return values, and it covers mutation semantics and optional restore behavior. Missing only the practical caveats (permissions, effect on running workloads) that would make it fully self-sufficient 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 description coverage is 100%, so each of the six parameters is already documented. The description only summarizes that instance count and CI/CD/autoscaling state can be restored, adding framing but no per-parameter detail beyond the schema. Baseline 3 applies.
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 a specific verb and resource ('resume a paused service') and prefixes it with 'MUTATING' to flag the operation class. An agent can distinguish this from sibling northflank_pause_service without opening the schema.
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 implies usage by specifying that the service must be paused, but offers no explicit when-to-use guidance versus siblings like northflank_restart_service or northflank_scale_service, which also affect running state. Some inference is required to avoid routing errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_scale_serviceScale service (mutates infra)ADestructiveInspect
MUTATING: set the number of running instances (replicas) for a service. POST /v1/projects/{projectId}/services/{serviceId}/scale.
| Name | Required | Description | Default |
|---|---|---|---|
| instances | Yes | Desired number of instances / replicas. | |
| projectId | Yes | Project id. | |
| serviceId | Yes | Service id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The 'MUTATING' prefix and the endpoint reinforce the mutation, but annotations already declare destructiveHint=true, so the safety profile is covered structurally. The description does not disclose meaningful traits beyond that – e.g., that setting instances to 0 effectively stops the service, whether existing instances are drained gracefully, or whether the change is reversible.
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 mutation warning so the risk is the first thing the agent reads. Nothing extraneous; every clause carries signal.
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 3-required-param mutation with full schema coverage and no output schema, the definition covers purpose and mutation adequately. It misses operationally relevant context such as the consequence of scaling to 0 and any disruption, which would matter for a destructive infra tool, but the destructiveHint annotation partly compensates.
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 100%, so all three parameters (projectId, serviceId, instances) are already documented in the schema, and the description adds no syntax, format, or semantic detail beyond restating 'instances/replicas'. Baseline 3 applies when the schema does the heavy lifting.
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 a specific verb ('set') and resource ('number of running instances (replicas) for a service'), clarifying the exact effect. This clearly distinguishes it from siblings like restart_service, pause_service, and resume_service, which the agent can rule out 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and purpose – an agent can infer this is for changing replica count – but there is no explicit when-to-use guidance or mention of alternatives such as pause_service (temporary stop) or restart_service. The absence of any condition distinguishing scaling from those siblings is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
northflank_trigger_service_buildTrigger service build (mutates infra)ADestructiveInspect
MUTATING: start a new build for a build/combined service. With an empty body it builds the latest commit on the linked branch; optionally target a branch, a specific commit sha, or a pull request. POST /v1/projects/{projectId}/services/{serviceId}/build.
| Name | Required | Description | Default |
|---|---|---|---|
| sha | No | Specific commit SHA to build from the branch. | |
| branch | No | Branch to build (defaults to the service's linked branch). | |
| projectId | Yes | Project id. | |
| serviceId | Yes | Build/combined service id. | |
| pullRequestId | No | Build the latest commit of this pull request's branch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and the title says it mutates infra, so the safety profile is covered. The description reinforces this with 'MUTATING' and adds useful default behavior (empty body builds the latest commit on the linked branch), but says nothing about whether the build is queued asynchronously, what the response returns, or required permissions.
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 compact sentences with the mutating warning front-loaded, followed by the default and override behavior. The trailing REST path is mildly redundant but serves as an orienting detail rather than 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 trigger tool with no output schema, the description covers the default behavior and all optional targeting modes adequately, and annotations carry the destructive signal. It falls short on return-value expectations (e.g., a build id for later polling) and any required authorization 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?
Schema coverage is 100%, so the baseline is 3. The description goes slightly beyond the schema by framing sha/branch/pullRequestId as optional alternative targeting selectors and explaining that an empty body falls back to the linked branch's latest commit, which clarifies how the optional parameters interact.
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 a specific verb and resource: 'start a new build for a build/combined service', and flags it as MUTATING up front. The action is clearly distinguishable from the sibling lifecycle tools (pause/restart/resume/scale), though no sibling is named explicitly for contrast.
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?
Usage is implied rather than stated: an agent can infer you call this to kick off a build. There is no guidance on when not to use it, no mention of checking existing builds via northflank_list_service_builds first, and no prerequisites or permission notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Related MCP Connectors
Deploy apps from GitHub, read build/runtime logs, and manage your app's users from your AI agent.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Deploy and manage Jade Hosting projects from AI clients. Jade account and OAuth required.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceDeploy, manage, and scale applications directly from your AI assistant.7-
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services, managing environment variables, monitoring deployments, and controlling project resources.36126 npmMIT
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services, managing environment variables, monitoring deployments, and handling databases and volumes.36126 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to manage cloud infrastructure through natural language by providing a unified interface to the Dokploy platform. Supports Docker containers, applications, databases, domains, monitoring, and deployment operations through conversational commands.13 npm1-
Glama MCP Gateway
Add one secure layer between your agents and this server.