Skip to main content
Glama

Santismm Knowledge — Harness Engineering, Agentic AI & Governance

Which AI model is best for a profession

recommend_model_for_profession
Read-onlyIdempotent

Get the ranking of frontier AI models for one profession: the best result, the runner-up, the best value and the best open-weights model, the full table with data coverage and price, which tasks each benchmark measures and which tasks no benchmark measures yet. Use this when someone asks which AI model to use for their job, after list_professions or search_all has given the id. When evaluation.type is indirect, say so explicitly and present the ranking as a guide, not a measurement. Cite canonical_url with dataset_version.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesProfession id from list_professions (e.g. 'lawyer', 'translator'), or its name in English or Spanish.
limitNoRows of the full table to return (default: all).
localeNoLanguage of names, tasks and caveats. The benchmarks site publishes en and es; other locales fall back to English.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
groupYes
picksYes
tasksYes
caveatYes
rankingYes
coverageYes
evaluationYes
not_measuredYesDimensions no benchmark in the catalogue evaluates at all. A different axis from `unmeasured_tasks`, which is about this profession's listed tasks; this one applies even when that list is empty.
resource_uriYes
canonical_urlYesCite this URL.
radar_versionYes
dataset_versionYes
resolved_localeYes
requested_localeYes
unmeasured_tasksYesThe listed tasks with no benchmark behind them. An empty list means every task is covered, not that the ranking measures everything that matters — see `coverage`.
professions_versionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / coverage
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "dimensions_not_measured": {
      +      "description": "What no benchmark evaluates at all — independent of task coverage.",
      +      "type": "string"
      +    },
      +    "how_to_present": {
      +      "description": "Follow this when quoting the limits: it says which of the two axes is complete and which is not.",
      +      "type": "string"
      +    },
      +    "tasks_listed": {
      +      "type": "number"
      +    },
      +    "tasks_measured": {
      +      "type": "number"
      +    },
      +    "tasks_unmeasured": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "tasks_listed",
      +    "tasks_measured",
      +    "tasks_unmeasured",
      +    "dimensions_not_measured",
      +    "how_to_present"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / not_measured / description
      Added value: +"Dimensions no benchmark in the catalogue evaluates at all. A different axis from `unmeasured_tasks`, which is about this profession's listed tasks; this one applies even when that list is empty."
    • addedOutput schema / properties / unmeasured_tasks / description
      Added value: +"The listed tasks with no benchmark behind them. An empty list means every task is covered, not that the ranking measures everything that matters — see `coverage`."
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "group",
      -  "requested_locale",
      -  "resolved_locale",
      -  "evaluation",
      -  "tasks",
      -  "unmeasured_tasks",
      -  "picks",
      -  "ranking",
      -  "caveat",
      -  "not_measured",
      -  "canonical_url",
      -  "dataset_version",
      -  "radar_version",
      -  "professions_version",
      -  "resource_uri"
      -]New value: +[
      +  "id",
      +  "name",
      +  "group",
      +  "requested_locale",
      +  "resolved_locale",
      +  "evaluation",
      +  "tasks",
      +  "unmeasured_tasks",
      +  "coverage",
      +  "picks",
      +  "ranking",
      +  "caveat",
      +  "not_measured",
      +  "canonical_url",
      +  "dataset_version",
      +  "radar_version",
      +  "professions_version",
      +  "resource_uri"
      +]
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld), yet the description adds substantial behavioral context: the conditional 'indirect' handling and the instruction to present results as a guide rather than a measurement, plus the citation requirement pairing canonical_url with dataset_version. This is exactly the value-beyond-annotations the bar asks for.

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 first sentence is a dense list of return artifacts, but the usage and conditional-rendering sentences are tightly scoped and front-loaded. Slightly overstuffed, yet nearly every clause carries actionable information.

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?

With an output schema present the description need not explain return values, yet it still supplies the usage prerequisite, the indirect-type caveat, and the citation contract. For a read-only ranking tool, an agent has everything needed to call and present results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so id, limit and locale are already fully documented in the schema; the description adds no parameter-level syntax or format detail. Baseline 3 is appropriate when the schema does all the work.

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 specific verb+resource: produce a model ranking for one profession, enumerating the exact artifacts returned (best result, runner-up, best value, best open-weights, full table). This clearly distinguishes it from siblings like compare_models or list_professions, which do different things.

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?

Explicitly names the triggering situation ("someone asks which AI model to use for their job") and the prerequisite ("after list_professions or search_all has given the id"). It also gives a conditional handling rule for evaluation.type == 'indirect', which is genuine when-to-use guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.