Skip to main content
Glama
valentil

FeatureBoard MCP Server

by valentil

Next wave of work (fill every lane)

next_wave
Read-only

Fetch all dispatchable board tickets at once, partitioned into file-disjoint lanes for concurrent sub-agents, eliminating sequential round-trips. Pass occupied tickets to refill only freed lanes.

Instructions

The PLURAL of next_task: return the whole dispatchable set at once, already partitioned into file-disjoint lanes, so every sub-agent lane can be filled in ONE call instead of N sequential next_task round-trips. Use this — not repeated next_task — whenever you are working a board with more than one open ticket. lanes[] are mutually file-disjoint and safe to run as CONCURRENT sub-agents; tickets WITHIN a lane share files and must run serially in the order given. sequential[] holds orchestrator-only tickets (fable) that run inline. Each ticket carries its own dispatch block ({subAgent, model, cap, parallelizable, instruction}) so no second lookup is needed. Pass occupied with the tickets your sub-agents are still working and call it again to REFILL just the lanes that freed up — lanes containing a running ticket come back under busyLanes and are never re-served. stopCondition is the authority on whether the loop is over: an empty wave is a steer_project event, NOT a stop. FBMCPF-392 multi-user: tickets other users have In Progress come back under heldByOthers (never in your lanes), and lanes sharing files with their tickets are withheld as busyLanes with heldBy — wave paths stay disjoint across users with zero prompts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNoall
projectYes
maxLanesNoCap concurrent lanes returned. Omit to saturate — the default is every lane the board can safely run.
occupiedNoTicket ids currently being worked by a sub-agent — excluded from the wave, and their lanes withheld.
laneDepthNoCap tickets returned per lane. Omit for the full serial list.
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses non-obvious behaviors: lanes containing a running ticket are never re-served, an empty wave is a steer_project event rather than a stop signal, and multi-user concurrency is handled via heldByOthers and heldBy lane withholding. None of this is visible in the schema or annotations, and it does not contradict the readOnlyHint.

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 description is front-loaded with the core purpose and each sentence adds a distinct fact about batching, lane discipline, or concurrency — no filler. It is a long unbroken paragraph (~200 words), so it is denser than ideal for scanning, but the complexity of the concurrency contract justifies the length.

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?

For a tool with no output schema, the description covers the essential output structure (lanes[], sequential[], busyLanes, heldByOthers, per-ticket dispatch blocks) and the full call/refill lifecycle, which is the hard part. Small gaps remain: the `type` filter behavior and `project` parameter are never tied to wave semantics, and the 'fable' label for sequential tickets is unexplained jargon.

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?

With 60% schema coverage, `maxLanes`, `laneDepth`, and `occupied` are already described structurally; the description enriches `occupied` with the refill semantics (exclude running tickets, withheld lanes come back under `busyLanes`) and ties `maxLanes` conceptually to lane concurrency. However, the required `project` parameter and the `type` filter receive no description-side context beyond their raw schema entries.

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 opens with 'The PLURAL of next_task: return the whole dispatchable set at once' — a specific verb (return) and resource (the dispatchable set of tickets), and it names the sibling it extends, so an agent cannot confuse them. The title 'fill every lane' reinforces the batching purpose. This is a clear, distinctive purpose statement.

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?

The description explicitly instructs: 'Use this — not repeated next_task — whenever you are working a board with more than one open ticket,' giving the exact condition that selects this tool over its sibling. It also details the refill workflow (pass `occupied`, call again) and designates `stopCondition` as the authority on loop termination, so the agent knows when to stop calling and when to treat an empty wave as a steer_project event.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/valentil/featureboard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server