Skip to main content
Glama

Ensure a GitHub project view

github_project_view_ensure
Idempotent

Ensures a saved project board view exists: preserves an existing view with that name (case-insensitive) or creates a missing one with the specified layout, filter, fields, sorting, and grouping.

Instructions

Make sure a saved view exists on a project board the viewer may update: a view of that name (without regard to case) is left exactly as it is, and a missing one is created through the REST API with its layout, filter, fields, sorting and grouping. A field name the board lacks, fields on a roadmap, column_by on a layout other than board, grouping by Sub-issues progress or Linked pull requests and sort_desc without sort_by are invalid_argument, before anything is written. The API cannot set a roadmap's date fields. A board is named by project: its number, owner/number or its URL, used as it is; any other project is a title, and no project is Roadmap: the open board of that whole title is looked up, never guessed, in owner's boards if owner is given, else in the boards linked to repo, then its organization's, then the viewer's. Needs a token with the project scope; if GitHub reports missing scopes, run gh auth refresh -s project.

Input Schema

NameRequiredDescriptionDefault
nameYesThe view's name, matched without regard to case.
repoNoowner/name; defaults to the working tree's repository (its origin). Where the board lookup starts, and the owner of a bare board number.
ownerNoA user or organization login, or "@me": the owner of a numbered board, else the only owner searched for a title.
fieldsNoThe fields shown, by name and in order (built-in ones too, such as Assignees or Parent issue); not for a roadmap.
filterNoA project filter, such as "-status:Done -status:Cancelled".
layoutYes
projectNoThe board, as its number, owner/number or its URL (used as it is; a bare number takes owner, else the owner of repo or of the working tree's repository), or as its title, looked up among open boards (whole title, case-insensitive). Default: the title Roadmap.
sort_byNoA field name to sort by.
group_byNoA field name to group by; not Sub-issues progress or Linked pull requests.
column_byNoboard layout only: the field name the columns follow.
sort_descNoSort descending (default false); needs sort_by.

Output Schema

NameRequiredDescriptionDefault
viewYes
createdYesWhether this call made the view; false when the board already had one of that name.
projectYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.7.0

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (idempotentHint true, destructiveHint false), the description discloses that validation happens before anything is written, that non-board layouts reject column_by, that roadmap date fields cannot be set by the API, and that a token with the project scope is required with a gh auth refresh remedy. It also spells out the project lookup order (owner's boards, repo-linked boards, organization's, then viewer's) so nothing is guessed.

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?

The core behavior is front-loaded and nearly every clause carries operational information: idempotency, validation, API limits, auth, and lookup order. It loses a point for run-on sentence construction (e.g. the long 'any other project is a title, and no project is Roadmap' clause) that would scan better as ordered points.

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 an 11-parameter, write-capable, open-world tool this is thorough: it covers idempotent semantics, failure modes, authentication and scope remediation, lookup precedence, and API capability limits. An output schema exists, so not describing return values is appropriate, and no operationally relevant gap remains.

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 description coverage is 91%, so the baseline is 3, but the description adds genuine meaning: project values are used as-is when they are numbers/owner-number/URL, otherwise resolved as a whole case-insensitive title among open boards, defaulting to Roadmap, and a bare number takes owner or the repo/working-tree owner. That resolution algorithm is not fully restated in the schema and materially changes how an agent should populate project, owner and repo.

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 first sentence states a precise verb and resource: ensure a saved view exists on a project board, leaving an existing case-insensitive name untouched and creating a missing one via REST with layout, filter, fields, sorting and grouping. That distinguishes it cleanly from the sibling read/create tools (github_project_read, github_project_create) and from github_project_field_ensure.

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?

It makes the ensure-vs-create contract explicit and enumerates the conditions that make a call invalid_argument before any write, which tells an agent when the call will be rejected. However, it never explicitly routes the agent to alternatives such as github_project_read to inspect an existing view or github_project_create for a new board, so the when-not guidance is conditional rather than comparative.

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