Skip to main content
Glama

Finder Jobs

Salary statistics

salary_stats
Read-onlyIdempotent

Salary statistics (25th/50th/75th percentile, sample size) from active vacancies on Finder. country: ISO code; profession: name in local language (e.g. 'Бухгалтер', 'Programmierer'); empty = all jobs; city optional. Returns the matching Finder salary page url when available.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "country": "<country>"
    },
    "name": "salary_stats"
  }
}

Input Schema

NameRequiredDescriptionDefault
cityNoOptional city name as written locally
countryYesCountry ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa, gb, ie, cz, uz, no, sk, bg, fi
professionNoProfession in local language, e.g. 'Бухгалтер', 'Programmierer'. Empty = all jobs

Output Schema

NameRequiredDescriptionDefault
p25No
p75No
urlNo
cityNo
meanNo
errorNo
medianNo
periodNo
sourceNo
countryNo
currencyNo
professionNo
sample_sizeNo
range_1sigmaNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa, gb, ie, cz, uz"New value: +"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa, gb, ie, cz, uz, no, sk, bg, fi"
  2. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa, gb, ie, cz"New value: +"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa, gb, ie, cz, uz"
  3. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa"New value: +"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa, gb, ie, cz"
  4. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at"New value: +"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at, ar, ec, pa"
  5. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id"New value: +"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id, at"
  6. Changed4 schema fields changed
    • addedInput schema / properties / city / description
      Added value: +"Optional city name as written locally"
    • addedInput schema / properties / country / description
      Added value: +"Country ISO code: ru (Russia, finder.work), by, kz, kg, de, fr, be, ch, se, id"
    • addedInput schema / properties / profession / description
      Added value: +"Profession in local language, e.g. 'Бухгалтер', 'Programmierer'. Empty = all jobs"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "city": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "City"
      +    },
      +    "country": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Country"
      +    },
      +    "currency": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Currency"
      +    },
      +    "error": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Error"
      +    },
      +    "mean": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Mean"
      +    },
      +    "median": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Median"
      +    },
      +    "p25": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "P25"
      +    },
      +    "p75": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "P75"
      +    },
      +    "period": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Period"
      +    },
      +    "profession": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Profession"
      +    },
      +    "range_1sigma": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "type": "number"
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Range 1Sigma"
      +    },
      +    "sample_size": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Sample Size"
      +    },
      +    "source": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Source"
      +    },
      +    "url": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Url"
      +    }
      +  },
      +  "title": "SalaryStats",
      +  "type": "object"
      +}
  7. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so safety is covered. The description adds genuinely useful behavior beyond that: the data source (active vacancies only), the statistical output shape including sample size, and the conditional return of a Finder salary page URL.

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 purpose and output shape are front-loaded in the first sentence, followed by compact parameter notes. The parameter recap partially duplicates the schema, but the text is short and no sentence is filler.

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?

An output schema exists, so return values need not be spelled out further; the description still flags the sample-size caveat and the optional URL. Combined with complete parameter documentation and full annotations, an agent has everything needed to call it 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 description coverage is 100%, so country, profession and city are already fully documented with examples and defaults. The description restates the same semantics (ISO code, local-language profession, empty = all jobs) without adding format or validation detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and operation: percentile salary statistics (25th/50th/75th plus sample size) computed from active vacancies on Finder. That is clearly distinguishable from the sibling listing tools get_vacancy and search_vacancies, though the description never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

It gives operating context ('from active vacancies on Finder') and states that an empty profession means all jobs, which implies broad-vs-narrow querying. However, there is no explicit when-to-use/when-not guidance and no mention of alternatives such as search_vacancies for raw listings.

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.

Resources