The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the ModelShortlist listing page.
Stop guessing which AI model to use.
ModelShortlist is a local, bring-your-own-key MCP server that gives your AI assistant model-selection evidence from the full OpenRouter model catalog plus Artificial Analysis benchmarks. It refreshes upstream evidence on demand/cache expiry and explicitly reports when any source is stale or unavailable. Zero Data Retention (ZDR) is an optional hard constraint only when you explicitly require it.
No hosted ModelShortlist backend. No account. No telemetry in the MCP. Your API keys stay with the local MCP process and are used to call the upstream services directly.
@agentic.artists/modelshortlistio.github.AgenticArtists/modelshortlistModel choice is no longer just "which model has the highest benchmark score?" The right answer depends on the workload, capabilities, cost, context, availability, and privacy requirements you actually have.
ModelShortlist helps your chat agent reason over:
By default, ZDR is not an eligibility requirement. ModelShortlist considers the full OpenRouter catalog. If you explicitly require ZDR, it switches to OpenRouter ZDR endpoint evidence and requires hard constraints to be satisfied by the same real endpoint.
The host AI makes the final recommendation based on your use case. ModelShortlist deliberately does not impose one universal ranking formula.
Use the browser-only configurator:
It generates client-specific config or commands for:
You paste your own Artificial Analysis and OpenRouter keys into the configurator. They are used in your browser to generate configuration text and are not sent to ModelShortlist or a ModelShortlist backend.
Requirements:
Most local stdio MCP clients, including Claude Desktop, Hermes Desktop, and Cursor, can launch ModelShortlist directly with npx:
On Windows GUI clients where npx is not available on the app's PATH, use npx.cmd or use the guided clone setup below.
This option stores API keys in a local gitignored .env.local file and prints ready-to-paste MCP config using absolute executable paths.
The setup command:
.env.localIf PowerShell blocks npm.ps1, use npm.cmd; you do not need to change your execution policy.
More setup details are in LOCAL_MCP.md.
What's the cheapest model I'd trust with repetitive coding subagents? Tool use is required.
I need 200k context and tool use. What are my best current options?
I need 200k context, tool use, and ZDR. What are my best current options?
Is the premium frontier model actually worth the price for this coding workload?
Best model for extracting structured data from thousands of documents while keeping output cost low?
I need maximum autonomous coding performance under $10 per million output tokens. What should I use?
recommend_modelsThe primary workload-specific recommendation tool. It accepts hard constraints such as:
When ZDR is not required, it considers the full OpenRouter catalog. When ZDR is explicitly required, it filters against ZDR endpoint evidence and verifies hard constraints against the same endpoint.
Artificial Analysis benchmark data is attached only when the model can be confidently reconciled. Models without a confident benchmark match remain eligible with missing benchmark fields rather than being silently removed.
Strict price ceilings account conservatively for all pricing tiers that OpenRouter publishes for a model or endpoint rather than assuming the cheapest/base tier applies universally.
compare_modelsReturns OpenRouter catalog information, ZDR availability, Artificial Analysis benchmark information when available, and source freshness for a specified shortlist of OpenRouter model IDs.
modelshortlist_statusShows source freshness, OpenRouter catalog coverage, ZDR coverage, model matching coverage, ambiguous/unmatched records, cache state, and Artificial Analysis rate-limit metadata.
ModelShortlist does not silently call stale evidence “current.” Tool responses expose source-level status:
fresh: the latest attempted refresh succeeded.stale: the latest refresh failed and an earlier in-process copy is being used with a warning.unavailable: the source failed and there is no cached copy in the current process.Artificial Analysis can fail independently without removing OpenRouter models; benchmark fields remain missing rather than being treated as zero or poor performance. OpenRouter ZDR metadata can also be unavailable for ordinary requests because ZDR is optional.
The OpenRouter model catalog is foundational. If it is unavailable with no cached copy, or returns an empty catalog and no earlier good copy exists, ModelShortlist refuses to produce a shortlist.
For a ZDR-required request, unavailable ZDR endpoint evidence fails closed rather than being interpreted as “no models qualify.” If cached ZDR evidence is stale, that limitation is surfaced and ZDR must still be enforced/revalidated on the actual OpenRouter inference request.
See docs/TROUBLESHOOTING.md for failure modes and client diagnostics.
The Artificial Analysis Free API does not expose an OpenRouter model ID. ModelShortlist reconciles models conservatively:
ModelShortlist does not fuzzy-match uncertain model variants. A missing benchmark is better than attaching benchmark data to the wrong model. An unmatched OpenRouter model can still be considered; it simply carries no Artificial Analysis metrics.
Regression coverage explicitly protects mini/base, pro/small/thinking, preview/stable, dated-release, duplicate-name, and broken-alias cases.
Verified aliases live in config/aliases.json.
ModelShortlist tracks which models have ZDR-capable OpenRouter endpoints, but it does not filter to them unless the user explicitly requires Zero Data Retention.
When ZDR is required, ModelShortlist checks endpoint-level eligibility and hard constraints. If you later call the selected model through OpenRouter, enforce ZDR again in the actual inference request:
When ZDR is not required, do not add provider.zdr=true merely because a model happens to support it.
ModelShortlist recommends; it does not route inference or host models.
ModelShortlist uses data accessed with your own API credentials.
ModelShortlist is not affiliated with or endorsed by Artificial Analysis or OpenRouter.
The ModelShortlist source code is licensed under the MIT License. Upstream data and APIs remain subject to their respective terms. ModelShortlist does not bundle or host the Artificial Analysis dataset; each user accesses upstream data with their own credentials and is responsible for complying with applicable terms.
See ATTRIBUTION.md for more detail.
.env.local is gitignored for clone-based setup..env.local, website source, tests, or GitHub workflow files.If you discover a security issue, see SECURITY.md.
ModelShortlist builds a validated .mcpb bundle for local-server distribution channels. CI validates and packs the bundle. Tagged releases are configured to validate the package, run security checks, publish an unpublished npm version through npm trusted publishing, and attach the validated MCPB bundle to a GitHub Release.
See docs/MCPB_DISTRIBUTION.md and docs/DISTRIBUTION.md.
ModelShortlist is published to the Official MCP Registry. Reusable directory metadata and canonical listing copy live in docs/DIRECTORY_SUBMISSIONS.md.
The repository also includes glama.json for Glama ownership verification of this organization-hosted repository.
Install dependencies and run validation:
Test the MCP process manually:
A healthy server prints:
and waits for an MCP client. Press Ctrl+C to stop it.
Contributions are welcome. See CONTRIBUTING.md.
MIT. See LICENSE.