Skip to main content
Glama
mrrlin-dev

@mrrlin-dev/external-agents

by mrrlin-dev

pick_agents

Selects up to N distinct healthy model candidates by round-robin using preference order and last-used time, optionally enforcing cross-provider diversity and exclusion filters.

Instructions

Pick up to N distinct healthy candidates by round-robin (preference_order + last_used_at). Optional min_distinct_providers enforces cross-provider diversity, counted per provider FAMILY: google3 and google4 are two API keys for one source, not two opinions. A model is never seated twice while an unseated one is available, so a panel gets distinct voices rather than clones of one model. Exclusion uses the same identity: filter.exclude_ids drops every entry serving the same model as each named id (excluding gemini-3.6-flash-6 will NOT seat gemini-3.6-flash-5 instead), and filter.exclude_providers matches by family, so 'google' covers google3..8.

ROUTING NOTE: omitting filter.tier defaults to tier='weak' here — enforced, not just advisory, so a forgotten tier can't silently draw a strong (costlier/slower) candidate instead. Most atomic tasks (single-file edits, refactors, glue code, summaries, format conversions, well-scoped fixes) get the same quality answer from a weak-tier free-tier model as from Claude Opus or Codex Pro, in a fraction of the time and cost. Reach for strong-tier by passing filter.tier='strong' explicitly, ONLY when the task actually needs deep reasoning: multi-step debugging, architecture decisions, ambiguous requirements, novel algorithms. Frontier ≠ better output for the long tail of routine work; often it is slower with no quality gain. Be smart, not lavish.

Input Schema

NameRequiredDescriptionDefault
nNo
filterNo
min_distinct_providersNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.63.0
    • addedInput schema / properties / filter / properties / exclude_providers
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  2. First observedv0.29.0

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the round-robin ordering key, the dedupe rule ('never seated twice while an unseated one is available'), provider-family semantics for google3..8, and that the tier default is enforced rather than advisory — a non-obvious behavior an agent could otherwise get wrong. It never states what the call returns or whether picked candidates are reserved/locked, which keeps it off 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.

Conciseness3/5

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

The operative facts are front-loaded, but the ROUTING NOTE balloons into advocacy — 'Frontier ≠ better output for the long tail of routine work; often it is slower with no quality gain. Be smart, not lavish.' — which is persuasion rather than specification and inflates the definition well past what the agent needs to select correctly.

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

Completeness3/5

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

No annotations, no output schema, a nested filter object and 0% schema coverage mean the description is the only documentation. It covers selection, dedupe, exclusion and tier default thoroughly, but leaves `filter.tags` and the return shape (a list of ids? agent objects?) unaddressed — gaps an agent must guess at before calling.

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 0%, so the description must compensate and largely does: exclude_ids matching by model identity (with a concrete gemini-3.6-flash-6 example), exclude_providers matching by family, min_distinct_providers counting per family, and filter.tier's enforced default are all explained. However, `filter.tags` is never mentioned and `n` is only implied by 'up to N', leaving two of five properties without semantics.

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 concrete verb and resource — 'Pick up to N distinct healthy candidates by round-robin' — and immediately names the selection algorithm (preference_order + last_used_at). An agent can tell this apart from list_agents (enumerate) or dispatch (execute) 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.

Usage Guidelines5/5

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

The ROUTING NOTE is explicit when-to-use guidance: default tier='weak' is enforced, strong-tier is reserved for 'multi-step debugging, architecture decisions, ambiguous requirements, novel algorithms,' and routine atomic tasks are enumerated as weak-tier appropriate. This is exactly the when/when-not/alternative structure a 5 requires.

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