BestEOR: EOR pricing and employment costs
Server Details
Cited EOR provider fees, coverage and models, plus employer costs in 139 countries.
- Status
- Healthy
- Uptime
- 100.0% over 39 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
The provider-facing tools are mostly distinct: list_eor_providers browses the catalog, get_eor_provider returns one record, compare_eor_providers does an explicit side-by-side of 2-3 named providers, and match_eor_providers recommends against hire criteria. The main soft spot is list_eor_providers' fee/coverage filters overlapping with match_eor_providers, and estimate_eor_cost vs get_country_employment_costs both surfacing employer contribution rates, though the descriptions draw the lines reasonably well.
All six tools use a consistent snake_case verb_noun pattern (list_, get_, compare_, match_, estimate_) with predictable object names like eor_provider(s) and country_employment_costs. Plural vs singular is used meaningfully to distinguish collection from single-record tools.
Six tools is a tight, well-scoped surface for an EOR pricing/comparison domain: discovery, detail, comparison, matching, cost estimation, and country statutory data each earn their place with no filler.
Core workflows are covered end to end: browse and filter providers, inspect one, compare, match to a specific hire, estimate total cost, and pull country legal/cost requirements. The notable gap is there is no tool to enumerate supported countries or data sources, so an agent must guess country inputs, and there is no quote-request or provider-contact path.
Available Tools
6 toolscompare_eor_providersCompare EOR providersARead-onlyIdempotentInspect
Compare two or three EOR providers side by side on published fee, country coverage, owned entities and delivery model, with primary sources and a link to the matching BestEOR.co comparison page.
| Name | Required | Description | Default |
|---|---|---|---|
| providers | Yes | Two or three provider names or slugs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, closed-world, non-destructive), so the description's added value is its disclosure of what the comparison yields: published fees, country coverage, owned entities, delivery model, primary sources, and a BestEOR.co link. That sourcing detail is genuine behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that puts the verb and comparison dimensions first and appends the sourcing detail. Dense but not padded; every clause maps to a concrete output dimension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and one fully documented parameter, the description compensates by enumerating what comes back (fee, coverage, entities, delivery model, sources, comparison link). An agent can decide whether to call it and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'providers' parameter is fully documented (names or slugs, 2-3 items). The description's 'two or three EOR providers' merely restates the schema constraints, adding no syntax or format guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare), resource (EOR providers), and enumerates the exact comparison dimensions (published fee, country coverage, owned entities, delivery model). This clearly separates it from siblings like list_eor_providers and get_eor_provider, which retrieve rather than contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (comparing two or three providers) but gives no explicit when-to-use guidance relative to estimate_eor_cost or get_eor_provider, and no exclusions. A reader can infer intent from the verb, but the agent is not routed to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_eor_costEstimate EOR employment costARead-onlyIdempotentInspect
Estimate the annual and monthly cost of employing people in a country through an EOR: gross salary, plus the country's representative employer contribution rate, plus the EOR fee (a provider's published fee, or one you supply from a quote), plus other monthly costs. A budget illustration, not a payroll quote: contribution caps and thresholds are not applied.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country name, two-letter ISO code or slug. | |
| provider | No | EOR provider whose published fee to use, e.g. 'Deel'. | |
| employees | No | Number of employees on this salary (default 1). | |
| monthly_fee_usd | No | EOR fee per employee per month from a quote, in USD. Overrides the provider's published fee. | |
| annual_salary_usd | Yes | Annual gross salary per employee, in USD. | |
| other_monthly_costs_usd | No | Other costs per employee per month (benefits, allowances), in USD. Default 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, so safety is covered. The description adds real behavioral context beyond that: the calculation is an approximation that ignores contribution caps and thresholds, and the fee can come from a published provider rate or a user-supplied quote. It stops short of describing any output structure or edge behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core computation and followed by the essential accuracy caveat. No filler; every clause (cost components, fee source, cap caveat) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only estimation tool with a fully-described schema and no output schema, the description conveys the return shape ('annual and monthly cost') and the accuracy limits. Nearly complete; only the absence of any pointer to related comparison tools leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters are already documented. The description's mention of 'a provider's published fee, or one you supply from a quote' mirrors the schema's own override note for provider/monthly_fee_usd, adding little beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('estimate the annual and monthly cost of employing people in a country through an EOR') with an explicit breakdown of the computed components (gross salary, employer contribution, EOR fee, other monthly costs). It distinguishes itself functionally from get_country_employment_costs by including the EOR fee, though it never names a sibling tool directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The caveat 'A budget illustration, not a payroll quote: contribution caps and thresholds are not applied' tells the agent when this tool's output is appropriate and when it is not suitable for exact payroll. It does not, however, point to an alternative tool (e.g. compare_eor_providers) for the scenarios it excludes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_country_employment_costsCountry employment costsARead-onlyIdempotentInspect
Get what it costs and what the law requires to employ someone in a country: the employer's statutory contribution rate (or fixed amounts), minimum wage, annual leave, notice, severance, probation and other terms, each with its primary source. Accepts a country name, ISO 3166-1 alpha-2 code or slug, e.g. 'Germany', 'BR', 'united-kingdom'.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country name, two-letter ISO code or slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds non-trivial context beyond that: each statutory term is returned 'with its primary source', which tells the agent the response carries provenance. It stops short of disclosing legal-data freshness, coverage gaps, or error behavior for unknown countries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the first defines exactly what is returned, the second defines accepted input formats. Every clause carries information an agent needs, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return values, and it does so by enumerating the fields and noting source citations. For a legal/compliance tool it is nearly complete, though it omits what happens for unsupported countries and how current the statutory data is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already documented as a name, ISO code, or slug, so the baseline is 3. The description adds concrete accepted forms with examples ('Germany', 'BR', 'united-kingdom'), clarifying case/format expectations beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Get) and precisely enumerates the returned resource: statutory contribution rates, minimum wage, annual leave, notice, severance, probation. This scope is clearly distinguishable from the sibling tools, which concern EOR providers and cost estimates, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content of the returned data (employing someone in a country), but there is no explicit when-to-use statement and no named alternative such as estimate_eor_cost or compare_eor_providers. Nothing is misleading; the guidance is simply inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eor_providerGet one EOR providerARead-onlyIdempotentInspect
Get one EOR provider's published fee (or quote-only terms), EOR country coverage, owned-entity footprint, delivery model, what it is best for, and the primary-source URL behind each figure. Accepts a name or slug, e.g. 'Deel', 'Remote', 'Globalization Partners', 'oyster-hr'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Provider name or slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, non-destructive, closed-world lookup, so safety needs no restating. The description adds real behavioral context by disclosing that fees may be quote-only rather than published and that every figure carries a primary-source URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what is returned before the accepted input forms. The return-field enumeration is long but each element is informative, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by naming the data categories returned. The single required parameter is fully documented, though it does not say what happens for an unknown provider name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already says 'Provider name or slug', so baseline is 3. The description goes beyond it by clarifying that either form is accepted and giving four concrete example values, which is genuine added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('one EOR provider') and enumerates the returned facets (published fee or quote-only terms, country coverage, owned-entity footprint, delivery model, best-for, source URL). The word 'one' clearly separates it from the list_eor_providers sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It documents accepted input forms with concrete examples ('Deel', 'oyster-hr'), which is useful, but never says when to choose this over list_eor_providers or compare_eor_providers. Usage is implied by the singular 'one provider' framing rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eor_providersList EOR providersARead-onlyIdempotentInspect
List and filter the 93 employer of record (EOR) providers BestEOR.co tracks, with each one's published monthly fee per employee (or quote-only), countries covered, owned-entity footprint, delivery model and primary-source links. A fee ceiling or coverage minimum only matches providers that publish that figure.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum providers to return (default 20). | |
| model | No | Delivery model: owned-entity (own legal entities only), hybrid (own entities plus partners) or aggregator (local partners). | |
| sort_by | No | fee: cheapest published fee first (default); coverage: most countries first; name: alphabetical. | |
| min_countries | No | Only providers that state EOR coverage in at least this many countries. | |
| max_monthly_fee_usd | No | Only providers whose published starting fee per employee per month is at or below this, in USD. Quote-only providers are excluded when set. | |
| published_price_only | No | Only providers that publish a price. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds real value beyond that: the total dataset size (93), the returned fields, and the non-obvious filter semantics that quote-only providers silently drop out of fee/coverage constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler: the first establishes scope and payload, the second carries the one subtle filtering rule. Front-loaded with the resource and count, and the caveat is placed after the payload rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the return fields (fee, countries covered, entity footprint, delivery model, source links). Combined with the annotation safety profile and full schema coverage, an agent has enough to call this correctly; only an explicit sibling-routing statement is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — every parameter, including both enums, is documented in the schema itself. The description's filter caveat largely restates the max_monthly_fee_usd schema note about excluding quote-only providers, so it adds little semantic detail the agent couldn't already read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('List and filter the 93 employer of record (EOR) providers') and enumerates what each record contains, so the agent knows exactly what comes back. It doesn't name a sibling, but the 'list and filter' framing implicitly separates it from match_eor_providers and compare_eor_providers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'list and filter' — there is no explicit statement of when to choose this over match_eor_providers or compare_eor_providers, which are the obvious alternatives for similar intents. The one genuine guideline is the caveat that a fee ceiling or coverage minimum only matches providers publishing that figure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_eor_providersMatch EOR providers to a hireARead-onlyIdempotentInspect
Find the providers that fit one specific hire: the country, employee or contractor, team size and whether the person needs a work visa. Returns the best matches with the cited reasons each one fits (it employs in that country through its own entity or lists it, its published fee, visa support, deposit terms) and a BestEOR.co link where the reader can see every match and request quotes from the providers they pick.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Country name, two-letter ISO code or slug. Required for an employee. | |
| hire_type | No | employee (through an employer of record, the default) or contractor. | |
| team_size | No | How many people (default 1). | |
| needs_visa | No | The person needs the employer to sponsor a work visa or permit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior: what the response contains (best matches with per-provider cited reasons, published fee, visa support, deposit terms) and a downstream BestEOR.co link for quotes — information no structured field supplies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose comes first in a single tight sentence, followed by a return-value sentence. The second sentence is dense with a parenthetical list but every item is decision-relevant content about the output; only the 'where the reader can see every match' phrasing is slightly padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value duty and discharges it well by describing matches, reasons, fees, visa support and the quote link. Minor gaps remain: ranking behavior, result-count limits, and what happens when no provider matches are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented, including the enums and the employee default. The description names the same four criteria but adds no syntax or format detail beyond what the schema provides, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb ('Find') plus a precisely scoped resource ('providers that fit one specific hire'), with the four matching dimensions enumerated so the agent knows exactly what inputs define the search. The singular-hire framing implicitly separates it from the compare/list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description sketches the situation the tool serves (one hire, with country, hire type, team size, visa need), which lets an agent infer when to reach for it. But it never names compare_eor_providers, estimate_eor_cost or the list/get siblings, nor states when not to use this tool, so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -85New value: +93
- Added
match_eor_providers
1 tool update
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -73New value: +85
1 tool update
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -74New value: +73
1 tool update
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -75New value: +74
1 tool update
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -67New value: +75
1 tool update
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -68New value: +67
1 tool update
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -62New value: +68
1 tool update
- Changed
list_eor_providers1 field changed- changed
Input schema / properties / limit / maximumPrevious value: -63New value: +62
5 tool updates
- First observed
compare_eor_providers - First observed
estimate_eor_cost - First observed
get_country_employment_costs - First observed
get_eor_provider - First observed
list_eor_providers
Related MCP Connectors
Statutory employer cost by country, before any Employer of Record (EOR) fee.
Global expansion intelligence: country info, expansion cost estimates, competitor analysis.
Ranks 197 countries for remote workers: tax, cost of living, climate, safety, visas, internet
Cited official data: tax, VAT, CPI, policy rates, wages, holidays, FX. 128 countries+EU, 7 regions.
Related MCP Servers
FlicenseAqualityBmaintenanceEnables looking up statutory employer contributions by country, published Employer of Record provider fees, and combined all-in hiring costs for a given salary and headcount. Ships an offline snapshot of 76 countries and 14 providers, returning sourced figures with methodology and freshness metadata.553 npm-- AlicenseNot gradedqualityCmaintenanceEnables geographic parity analysis with 26 read-only tools covering purchasing power, salary localization, cost of living, nomad visas, tax residency, FIRE planning, and relocation costs.8 npmMIT
- AlicenseAqualityDmaintenanceMCP server for AI agents handling EOR & global hiring conversations. 8 tools: country EOR briefs, misclassification risk, EOR vs entity calculator, termination rules, statutory benefits, work visa paths, objection handlers.8MIT
- AlicenseAqualityDmaintenanceCost-of-living and quality-of-life comparison across ~165 cities: take-home pay, the equivalent salary you'd need, and the safety-net deltas (childcare, healthcare, vacation, parental leave).69 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.