Skip to main content
Glama
valentil

FeatureBoard MCP Server

by valentil

Routing scorecard

routing_scorecard
Read-only

Measures which model tier should run each ticket size by scoring Done tickets: median cost, cycle time, rework, cost per clean ticket per tier/effort. Flags tiers with insufficient data, not guesses.

Instructions

Which model tier should actually run your tickets, measured instead of guessed (FBMCPF-351). Scores every Done ticket from data the board already keeps — work-log tokens + model, ticket_events status transitions, and bugs filed with ref: — and reports, per tier: closed tickets, median tokens, median $ cost, median cycle time (In Progress -> Done), rework rate (reopened, or a follow-up bug filed after close-out), and the headline COST PER CLEAN TICKET (dollars per ticket that stayed closed). Cross-cut by effort:low/medium/high so the answer is 'which tier for THIS size of ticket', not one global average. A tier with fewer than minSamples closed tickets gets NO verdict — the readout says 'insufficient data' with the sample count rather than guessing. Advice only: it never writes a model:/cap: label, so intake stays deterministic. Pair with plan_budget (what the queue will cost) and daily_plan (what to run today). Returns the per-tier and per-effort STATS by default; the per-ticket evidence rows are opt-in via includeRows (a mature board has hundreds and they blow the result cap).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectYes
rowLimitNoMax rows when includeRows is on, worst-first (rework, then costliest). Default 200.
minSamplesNoClosed tickets a tier needs before it earns a verdict (default 3).
windowDaysNoOnly score tickets completed in the last N days (default: all history). Advice from an older model generation is worse than none.
includeRowsNoInclude the per-ticket evidence rows. Off by default — every Done ticket is a row, so this can be hundreds of entries; the stats are computed from all of them regardless.
Behavior5/5

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

The description adds significant behavioral context beyond the readOnlyHint annotation: it states that tiers with fewer than minSamples get 'insufficient data' instead of a verdict, that includeRows can blow the result cap, and that the tool never writes model:/cap labels. These details fully disclose the tool's behavior and limitations, aligning with and enriching the annotations without contradiction.

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 long but densely informative, with a clear structure: the core question first, then data sources, metrics, cross-cutting by effort, caveats about insufficient data, read-only reassurance, sibling pairing, and return-value overview. Every sentence contributes meaningful detail without fluff.

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?

Given the tool's complexity (5 parameters, multiple metrics, conditional behavior) and no output schema, the description fully covers what the tool returns (per-tier and per-effort stats, opt-in rows), how it behaves with insufficient data, and the read-only nature. It provides a complete mental model for correct invocation and interpretation.

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?

The schema covers 80% of parameters with descriptions, and the description adds practical meaning: it explains the minSamples threshold behavior, the includeRows opt-in and its result-cap impact, and the windowDays rationale ('older model generation is worse than none'). This goes beyond simple schema repetition, providing actionable guidance for parameter usage.

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 clearly states what the tool does: it scores every Done ticket from board data and reports per-tier metrics like cost per clean ticket. It distinguishes itself from siblings by explicitly mentioning pairing with plan_budget and daily_plan, and by framing its purpose as measuring actual performance rather than guessing.

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?

The description provides clear context on when to use this tool: for measuring which model tier actually runs tickets, and explicitly advises pairing it with plan_budget (what the queue will cost) and daily_plan (what to run today). It also notes the tool is 'advice only' and never writes labels, implying it is for analysis rather than action, but it does not explicitly state exclusions like 'do not use for modifying tiers'.

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