Search / dev.xpansion/xfms
XF Model Source
R0· no sign-inFind the right AI model for your job. Free discovery and ranking; tests on your own key.
v0.5.3 · active · repository · website · descriptor JSON · versions
Search / dev.xpansion/xfms
R0· no sign-inFind the right AI model for your job. Free discovery and ranking; tests on your own key.
v0.5.3 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"xfms": {
"type": "http",
"url": "https://xfms.xpansion.dev/mcp",
"headers": {
"X-OpenRouter-Key": "${X_OPENROUTER_KEY}"
}
}
}
}claude mcp add --transport http xfms https://xfms.xpansion.dev/mcp --header "X-OpenRouter-Key: ${X_OPENROUTER_KEY}"[mcp_servers.xfms]
url = "https://xfms.xpansion.dev/mcp"
env_http_headers = { "X-OpenRouter-Key" = "X_OPENROUTER_KEY" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"xfms": {
"type": "remote",
"url": "https://xfms.xpansion.dev/mcp",
"enabled": true,
"headers": {
"X-OpenRouter-Key": "{env:X_OPENROUTER_KEY}"
}
}
}
}{
"mcpServers": {
"xfms": {
"type": "http",
"url": "https://xfms.xpansion.dev/mcp",
"headers": {
"X-OpenRouter-Key": "${X_OPENROUTER_KEY}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=xfms&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8veGZtcy54cGFuc2lvbi5kZXYvbWNwIiwiaGVhZGVycyI6eyJYLU9wZW5Sb3V0ZXItS2V5IjoiJHtYX09QRU5ST1VURVJfS0VZfSJ9fQ%3D%3D"
}{
"servers": {
"xfms": {
"type": "http",
"url": "https://xfms.xpansion.dev/mcp",
"headers": {
"X-OpenRouter-Key": "${X_OPENROUTER_KEY}"
}
}
}
}{
"mcpServers": {
"xfms": {
"httpUrl": "https://xfms.xpansion.dev/mcp",
"headers": {
"X-OpenRouter-Key": "${X_OPENROUTER_KEY}"
}
}
}
}extensions:
"xfms":
enabled: true
name: "xfms"
type: streamable_http
uri: "https://xfms.xpansion.dev/mcp"
headers:
"X-OpenRouter-Key": "${X_OPENROUTER_KEY}"
timeout: 300
Placeholders to fill from your own secret store: ${X_OPENROUTER_KEY}. The registry never accepts secret values.
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations7 of 7 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 2,348 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes11 tool changes in 30 daysstability.rug_pull5 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagewatch_jobchangeddescription, input schemaSaves a finished job for XF Model Watch, which re-tests it as new models arrive and emails the person only when a model passes every must-have and ranks higher on their priorities. Needs a signed-in subscriber. Ask the person first: Watch keeps the job and its example tasks (encrypted, deletable any time). Pass consent=true only if they agree. Pass the discover session, and either test_session from a finished comparison or the tasks, plus the model they use now.
Saves a finished job for XF Model Watch, which re-tests it as new models arrive and emails the person only when a model passes every must-have and ranks higher on their priorities. Needs a signed-in subscriber. Ask the person first: Model Watch keeps the job and its example tasks (encrypted, deletable any time). Pass consent=true only if they agree. Pass the discover session, and either test_session from a finished comparison or the tasks, plus the model they use now.
comparechangedinput schemawatch_jobaddedSaves a finished job for XF Model Watch, which re-tests it as new models arrive and emails the person only when a model passes every must-have and ranks higher on their priorities. Needs a signed-in subscriber. Ask the person first: Watch keeps the job and its example tasks (encrypted, deletable any time). Pass consent=true only if they agree. Pass the discover session, and either test_session from a finished comparison or the tasks, plus the model they use now.
benchmarkchangedinput schemafield_resultsaddedResults from real comparisons on Model Source for one kind of job (call with no job_type for the list): which models passed, how often, which won, typical cost per task and the most common failure. Counted without anyone's job details. A starting point; test on the person's own work before choosing.
discoverchangedinput schemacomparechangedtitle, description, input schema, output schemameaning changedRun a live A/B test between 2–5 user-specified models for a stated purpose. NO ranking step — the supplied model_ids ARE the candidate set. Generates 5 representative test queries from the purpose, runs them through every named model in parallel, and returns real cost, latency, and plain-English commentary on who won what. Unknown IDs are dropped with a note; if fewer than 2 IDs resolve, the call refuses. Use this whenever the user names specific models to compare (e.g. 'A/B test X and Y'). For engine-chosen candidates, use `benchmark` instead. Costs more than `rank` (10+ live LLM calls). Free-tier note: when any candidate ends in ':free', the probe is capped at 3 queries (no adaptive expansion) because free-tier rate limits often push longer probes past the deploy's 5-minute ceiling — evidence will be shallower. The commentary surfaces this when it happens.
Same live test as benchmark, but on the models the person names (model_ids). Needs a finished discover session so every requirement is judged. Estimate first, then go=true.
benchmarkchangedtitle, description, input schema, output schemameaning changedRun a live A/B test against the engine's TOP 3 PICKS for a stated purpose — the engine chooses the candidates from the full catalog. Generates 5 representative test queries (auto-expands to 10 or 15 if results are too close to call), runs them through the picked models in parallel, and returns real cost, latency, and plain-English commentary on who won what. Use AFTER `pick` or `rank` when the user wants the engine's own picks stress-tested with live data. DO NOT use this when the user has already named specific candidate models — the engine will ignore the names and test its own picks. Use `compare` instead in that case. Costs more than `rank` (15+ live LLM calls).
The live test: the 5 proven models and 1 promising newcomer from discovery do the person's real tasks side by side, every requirement is judged, and the results pick the winner. First call (session + tasks) returns the estimate and an offer — nothing is spent. Show the person the cost; only when they agree, call again with offer and go=true. Runs on the person's OpenRouter key (X-OpenRouter-Key header). Save the returned report as a local file.
discoverchangedtitle, description, input schema, output schemameaning changedShow which quality dimensions matter for a stated purpose, WITHOUT ranking any models. Returns the inferred weights and the discovery-walk trace. Useful for understanding how XFMS interprets the purpose before committing to a pick.
Discovery: finds the true requirements of the person's job before any model is chosen. Start with purpose: the reply carries the discovery instructions and the evidence catalogue. YOU ask the person the questions (one thing each, plain words, offering the returned choices); then call again with the sealed session, their answers and your structured updates. Each reply gives progress, rejected updates with reasons, next targets, answer choices from live data and a shortlist. At most 5 rounds. Ends with a confirmation view; call with confirm=true once the person agrees. The person can stop any time (end_now=true). Nothing about the person is stored by XFMS.
pickchangedtitle, description, input schema, output schemameaning changedReturn the single best LLM for a stated purpose. Concise output, no list. Use when the user has settled on the criteria and just wants one answer.
The single best proven model for a job worked out with discover, with why and the runners-up. Pass the discover session.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +dns-namespace +website +reachable +uptime-100% +updated-2d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://xfms.xpansion.dev/mcp streamable-http | none | yes | 100% | 317 ms | 2025-11-25 | 2026-10-19 |
benchmarkread-only | The live test: the 5 proven models and 1 promising newcomer from discovery do the person's real tasks side by side, every requirement is judged, and the results pick the winner. First call (session + tasks) returns the estimate and an offer — nothing is spent. Show the person the cost; only when they agree, call again with offer and go=true. Runs on the person's OpenRouter key (X-OpenRouter-Key header). Save the returned report as a local file. |
compareread-only | Same live test as benchmark, but on the models the person names (model_ids). Needs a finished discover session so every requirement is judged. Estimate first, then go=true. |
discoverread-only | Discovery: finds the true requirements of the person's job before any model is chosen. Start with purpose: the reply carries the discovery instructions and the evidence catalogue. YOU ask the person the questions (one thing each, plain words, offering the returned choices); then call again with the sealed session, their answers and your structured updates. Each reply gives progress, rejected updates with reasons, next targets, answer choices from live data and a shortlist. At most 5 rounds. Ends with a confirmation view; call with confirm=true once the person agrees. The person can stop any time (end_now=true). Nothing about the person is stored by XFMS. |
field_resultsread-only | Results from real comparisons on Model Source for one kind of job (call with no job_type for the list): which models passed, how often, which won, typical cost per task and the most common failure. Counted without anyone's job details. A starting point; test on the person's own work before choosing. |
pickread-only | The single best proven model for a job worked out with discover, with why and the runners-up. Pass the discover session. |
rankread-only | The full shortlist for a job worked out with discover: 5 proven models and 1 promising newcomer, each with its standing on every requirement, plus near misses and what would change the order. Pass the discover session. |
watch_job | Saves a finished job for XF Model Watch, which re-tests it as new models arrive and emails the person only when a model passes every must-have and ranks higher on their priorities. Needs a signed-in subscriber. Ask the person first: Model Watch keeps the job and its example tasks (encrypted, deletable any time). Pass consent=true only if they agree. Pass the discover session, and either test_session from a finished comparison or the tasks, plus the model they use now. |
Schemas: list_tools.
{
"name": "dev.xpansion/xfms",
"title": "XF Model Source",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://xfms.xpansion.dev/mcp",
"type": "streamable-http",
"headers": [
{
"name": "X-OpenRouter-Key",
"isSecret": true,
"description": "Your OpenRouter API key. Required only for the compare and benchmark tools (they run live test queries against the named models on OpenRouter — that cost rides with you, not us). The rank, pick, and discover tools work without it. Get a key at https://openrouter.ai/keys."
}
]
}
],
"version": "0.5.3",
"repository": {
"url": "https://github.com/VisionAIrySE/XFMS",
"source": "github"
},
"websiteUrl": "https://xpansion.dev/xfms",
"description": "Find the right AI model for your job. Free discovery and ranking; tests on your own key."
}