Skip to main content
Glama

merjax_create_repo_token

Mint a fine-grained repository token (gcft_…) for ONE repository and return it once. It authenticates the REST API (/api/v2 and the GitHub-compatible /api/v3), git over HTTPS and the container registry (images under owner/repo, by contents) for that repository only. permissions sets none/read/write for contents, issues, pull_requests, statuses and actions, and none/read for runners (admin and settings are never grantable); expires_in is optional: omit it (or "never") for no expiration, or give seconds or "30m", "12h", "7d", "1y" (min 5 minutes, max 1 year). Effective access is always held to YOUR current access to the repo, re-checked on every use, and branch protection applies as it does to you. Needs 'repo' scope. Audit-logged. Returns {id, name, repository, permissions, expiresAt, tokenPrefix, token}.

Input Schema

NameRequiredDescriptionDefault
nameYesWhere the token will be used, e.g. 'gatetest deploy box'
repoYesRepo name
ownerYesRepo owner — username or organisation slug
expires_inNoOptional lifetime: "30m" / "12h" / "7d" / "1y", or a number of seconds (5 minutes to 1 year). Omit, or "never", for no expiration.
permissionsYesObject of level per permission — keys contents, issues, pull_requests, statuses, actions, runners; values none | read | write (runners: none | read only — it lists the owner's CI runners via GET /api/v2/repos/:owner/:repo/actions/runners and reads nothing of the repository; actions: read lists workflows, runs and jobs and reads run and job logs, masked and audited); omitted keys are none; at least one must be read or write. Example: {"actions": "read"}, {"runners": "read"} for a runner audit, or {"runners": "read", "actions": "read"} for a read-only CI audit token (the ci-audit preset: runners, workflows, runs, jobs and logs; no code, no secrets, no writes).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds substantial context beyond that: the token is returned once, effective access is capped by the caller's current repo access and re-checked on every use, branch protection applies, 'repo' scope is required, and the action is audit-logged. This is exactly the behavioral disclosure a mutation tool needs.

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

Conciseness4/5

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

Front-loaded with the core action and scope, then permissions and expiry details. It is dense and long but nearly every clause carries operational meaning; a minor cost is the run-on sentence packing many constraints together.

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

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param mutation tool with no output schema, the description covers authentication scope, permission model, expiry rules, access capping, and even the return shape ({id, name, repository, permissions, expiresAt, tokenPrefix, token}). Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: admin and settings are never grantable, runners is read-only, omitted keys default to none, at least one must be read/write, and expires_in bounds (5 min to 1 year) with accepted formats. It reinforces rather than merely repeats the schema.

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 (mint) and resource (fine-grained repository token) with explicit scope: ONE repository, returned once. The scope and single-repo constraint distinguish it from siblings like create_deploy_token, create_runner_registration_token, and get_token without needing to open 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 Guidelines3/5

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

It clearly explains what the token authenticates (REST v2/v3, git over HTTPS, container registry) and the 'repo' scope prerequisite, which implies when to use it. However, it never explicitly contrasts with sibling token tools such as create_deploy_token or get_token, leaving the agent to infer the choice.

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.

Resources