
Robot jobs, sourced prices with history, providers by country, robot-vs-human costs, and RFQs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Side-by-side comparison of 2-10 providers: coverage for a country, engagement models, published prices (USD-normalized), HQ, contact routes, shared jobs, last checked. Facts only, no ratings.
Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates").
Side-by-side comparison of 2-10 providers: coverage for a country, engagement models, published prices (USD-normalized), HQ, contact routes, shared jobs, last checked. Facts only, no ratings.
| Argument | Type | Description |
|---|---|---|
| ids* | array | |
| country | string | Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates"). |
| use_case | string |
{
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"sky-elements",
"verge-aero"
]
],
"maxItems": 10,
"minItems": 2
},
"country": {
"type": "string",
"examples": [
"AE",
"BR",
"CA",
"Germany"
],
"description": "Buyer country: ISO 3166-1 alpha-2 (\"AE\") or English name (\"United Arab Emirates\")."
},
"use_case": {
"type": "string"
}
},
"additionalProperties": false
}Cost comparison of human labour (or a human service) against robot options (buy, lease, robots-as-a-service, robot service provider) for one of 22 jobs in one of 8 countries (US, DE, GB, JP, CN, IN, BR, MX). Uses the same model as whirrwork.com/tools/robot-vs-human/: every default input has a source or is flagged as an assumption (see input_sources). Returns monthly/annual cost, cost per unit, payback months, break-even utilisation, 5-year NPV vs the baseline, a verdict, non-cost factors, sensitivity ranking, and projections to 2035 with a crossover year range (robots-fast, base, robots-slow). Projections are modelled estimates, not facts: say so, and quote the range rather than one year. Examples: {"job":"warehouse-picking","country":"US"}; {"job":"commercial-floor-cleaning","country":"DE","inputs":{"volume":60000}}; {"job":"machine-tending","country":"US","region":"US-TX","include_projections":false}.
| Argument | Type | Description |
|---|---|---|
| job* | string | Job slug. One of the 22 jobs in GET /api/v1/robot-vs-human/jobs. |
| inputs | object | Optional overrides of default inputs, in the country currency. Fractions as 0-1 (uptime 0.85, rate 0.08). |
| region | string | Optional regional wage preset: US states US-CA, US-TX, US-NY, US-FL, US-IL, US-WA, US-PA, US-OH; China CN-E, CN-C, CN-W, CN-NE. |
| country | string | Country for wage, on-cost and currency defaults (sourced: BLS, ILOSTAT, MHLW, NBS, Eurostat). |
| baseline | string | Which human option to compare against (e.g. "human" or "service"). Defaults to the job default. |
| include_tornado | boolean | Include the sensitivity (tornado) ranking of inputs by NPV swing. |
| include_projections | boolean | Include 2026-2035 projections for three scenarios and the crossover year range. |
{
"type": "object",
"required": [
"job"
],
"properties": {
"job": {
"type": "string",
"examples": [
"commercial-floor-cleaning",
"warehouse-picking",
"wind-turbine-inspection"
],
"description": "Job slug. One of the 22 jobs in GET /api/v1/robot-vs-human/jobs."
},
"inputs": {
"type": "object",
"examples": [
{
"wage": 21.5,
"volume": 60000
}
],
"properties": {
"svc": {
"type": "number"
},
"days": {
"type": "number"
},
"edge": {
"type": "number"
},
"life": {
"type": "number"
},
"raas": {
"type": "number"
},
"rate": {
"type": "number"
},
"wage": {
"type": "number"
},
"hours": {
"type": "number"
},
"kwh_h": {
"type": "number"
},
"lease": {
"type": "number"
},
"ratio": {
"type": "number"
},
"burden": {
"type": "number"
},
"months": {
"type": "number"
},
"raas_h": {
"type": "number"
},
"uptime": {
"type": "number"
},
"volume": {
"type": "number"
},
"failure": {
"type": "number"
},
"horizon": {
"type": "number"
},
"sup_min": {
"type": "number"
},
"purchase": {
"type": "number"
},
"kwh_price": {
"type": "number"
},
"maint_pct": {
"type": "number"
},
"svc_robot": {
"type": "number"
},
"human_rate": {
"type": "number"
},
"robot_rate": {
"type": "number"
},
"svc_aerial": {
"type": "number"
},
"integration": {
"type": "number"
},
"wage_growth": {
"type": "number"
},
"fee_hw_share": {
"type": "number"
},
"human_equip_h": {
"type": "number"
},
"svc_labour_share": {
"type": "number"
},
"robot_svc_labour_share": {
"type": "number"
}
},
"description": "Optional overrides of default inputs, in the country currency. Fractions as 0-1 (uptime 0.85, rate 0.08).",
"additionalProperties": false
},
"region": {
"type": "string",
"examples": [
"US-CA"
],
"description": "Optional regional wage preset: US states US-CA, US-TX, US-NY, US-FL, US-IL, US-WA, US-PA, US-OH; China CN-E, CN-C, CN-W, CN-NE."
},
"country": {
"enum": [
"US",
"DE",
"GB",
"JP",
"CN",
"IN",
"BR",
"MX"
],
"type": "string",
"default": "US",
"description": "Country for wage, on-cost and currency defaults (sourced: BLS, ILOSTAT, MHLW, NBS, Eurostat)."
},
"baseline": {
"type": "string",
"description": "Which human option to compare against (e.g. \"human\" or \"service\"). Defaults to the job default."
},
"include_tornado": {
"type": "boolean",
"default": true,
"description": "Include the sensitivity (tornado) ranking of inputs by NPV swing."
},
"include_projections": {
"type": "boolean",
"default": true,
"description": "Include 2026-2035 projections for three scenarios and the crossover year range."
}
},
"additionalProperties": false
}Arithmetic on published prices: unit price × quantity, using exact unit conversions (acre↔hectare, sq ft↔m², mile↔km), preferring benchmarks whose region matches the country, converting currency at a dated ECB rate. Returns the range plus the basis rows (each with source_url, as_of, region match) and caveats. Returns estimate=null with a reason when no sourced benchmark fits; never invents a number. Example: {"use_case":"crop-spraying-drone","quantity":500,"unit":"hectare","country":"BR","currency":"USD"}.
| Argument | Type | Description |
|---|---|---|
| unit | string | Unit of quantity, e.g. "hectare", "acre", "show", "month", "sq ft". Omit to use the most common benchmark unit. |
| country | string | Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates"). |
| currency | string | Express the result in this ISO 4217 currency |
| quantity | number | How many units (hectares, shows, months, inspections…). Omit for a per-unit price. |
| use_case* | string |
{
"type": "object",
"required": [
"use_case"
],
"properties": {
"unit": {
"type": "string",
"description": "Unit of quantity, e.g. \"hectare\", \"acre\", \"show\", \"month\", \"sq ft\". Omit to use the most common benchmark unit."
},
"country": {
"type": "string",
"examples": [
"AE",
"BR",
"CA",
"Germany"
],
"description": "Buyer country: ISO 3166-1 alpha-2 (\"AE\") or English name (\"United Arab Emirates\")."
},
"currency": {
"type": "string",
"examples": [
"USD"
],
"description": "Express the result in this ISO 4217 currency"
},
"quantity": {
"type": "number",
"description": "How many units (hectares, shows, months, inspections…). Omit for a per-unit price.",
"exclusiveMinimum": 0
},
"use_case": {
"type": "string"
}
},
"additionalProperties": false
}Shortlist providers for a job and place. Ranked: lists the region > lists the country > lists part of the country > headquartered there (HQ is not a service area) > works worldwide. Each result has coverage + coverage_reason, engagement models, published pricing with USD conversion, min_published_price_usd and public contact routes. Coverage is country-level unless the provider published regions. Filters combine (AND). Example: {"use_case":"drone-light-show","country":"AE"}; {"use_case":"commercial-floor-scrubbing","country":"CA","region":"ON","engagement_model":"raas"}.
| Argument | Type | Description |
|---|---|---|
| near | string | "me" = the country Cloudflare sees for this request (never stored), or a country name/code. Coordinates are not supported. |
| sort | string | |
| limit | integer | |
| query | string | Keyword filter on name/description |
| offset | integer | |
| region | string | Sub-country region code or name, e.g. "US-CA", "ON", "Mendoza" |
| country | string | Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates"). |
| use_case |
Every price observation we have recorded (append-only; never overwritten) for a job and/or provider, grouped into series with trend (change_pct between first and latest observation). observed_at = when we recorded it; as_of = the date the source states. If every series has one observation, say so: there is no trend yet.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| since | string | YYYY-MM-DD; only observations recorded on/after this date |
| series | string | A series_key to follow one price over time |
| provider | string | |
| use_case | string |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 500,
"minimum": 1
},
"since": {
"type": "string",
"description": "YYYY-MM-DD; only observations recorded on/after this date"
},
"series": {
"type": "string",
"description": "A series_key to follow one price over time"
},
"provider": {
"type": "string"
},
"use_case": {
"type": "string",
"examples": [
"crop-spraying-drone"
]
}
},
"additionalProperties": false
}Current sourced prices for a job (benchmarks + provider-published), or for one provider. Every row has source_url and as_of. Set convert (e.g. "USD") to add a clearly labelled conversion with the FX rate, date and source. Benchmarks, not quotes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| convert | string | Convert to this ISO 4217 currency (dated ECB reference rate) |
| currency | string | Only rows quoted in this ISO 4217 currency |
| provider | string | |
| use_case | string | |
| include_providers | boolean |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 60,
"maximum": 200,
"minimum": 1
},
"convert": {
"type": "string",
"default": "USD",
"examples": [
"USD",
"EUR",
"BRL"
],
"description": "Convert to this ISO 4217 currency (dated ECB reference rate)"
},
"currency": {
"type": "string",
"description": "Only rows quoted in this ISO 4217 currency"
},
"provider": {
"type": "string"
},
"use_case": {
"type": "string",
"examples": [
"crop-spraying-drone"
]
},
"include_providers": {
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}Full public profile of one provider: website, HQ, service regions and explicit service areas (with sources), jobs, robot types, engagement models, published prices (with USD), contact routes, sources and last-checked date.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| country | string | Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates"). |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"examples": [
"sky-elements"
]
},
"country": {
"type": "string",
"examples": [
"AE",
"BR",
"CA",
"Germany"
],
"description": "Buyer country: ISO 3166-1 alpha-2 (\"AE\") or English name (\"United Arab Emirates\")."
}
},
"additionalProperties": false
}Status of a submitted RFQ (received → matched → sent_to_suppliers → quoted → closed) with its status history. Needs the id and the access key returned by submit_rfq (the key= part of status_url).
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| key* | string |
{
"type": "object",
"required": [
"id",
"key"
],
"properties": {
"id": {
"type": "string",
"examples": [
"RFQ-261025-ABCDE"
]
},
"key": {
"type": "string"
}
},
"additionalProperties": false
}The exact fields to collect from the buyer before submit_rfq: core fields (required flags, formats) plus the job-specific checklist suppliers need to price it (as extra.{key}), regulatory notes, and a filled example. Ask the buyer for these, then call submit_rfq.
| Argument | Type | Description |
|---|---|---|
| language | string | Language for use-case text (machine-translated; English is authoritative). Default en. |
| use_case* | string |
{
"type": "object",
"required": [
"use_case"
],
"properties": {
"language": {
"enum": [
"en",
"es",
"pt-BR",
"fr",
"de",
"zh",
"zh-Hant",
"ja",
"ar",
"hi",
"ko",
"id",
"tr"
],
"type": "string",
"examples": [
"es",
"pt-BR",
"zh"
],
"description": "Language for use-case text (machine-translated; English is authoritative). Default en."
},
"use_case": {
"type": "string",
"examples": [
"commercial-floor-scrubbing"
]
}
},
"additionalProperties": false
}One Whirrwork Research statistic by slug: claim, figure, scope, measure type, primary source with archive link, publication/access/last-verified dates, verbatim source passage (when licensing allows), confidence, caveats, and citations in APA, Chicago, MLA and BibTeX (plus an APA citation of the original source). Licensed CC BY 4.0: attribute "Whirrwork (https://whirrwork.com), CC BY 4.0" and the original source.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"examples": [
"industrial-robot-installations-world-2025",
"robot-density-korea-2024"
]
}
},
"additionalProperties": false
}Everything about one job: what it is, robot types, ways to buy (service/rental/RaaS/purchase), honest buyer tips (including when a robot is overkill), regulatory notes, every sourced price benchmark (with source_url, as_of and a USD conversion), price-history counts, the RFQ checklist, and providers. Pass country (and optionally region) to rank providers by who serves that place, with the reason.
| Argument | Type | Description |
|---|---|---|
| id* | string | Use case id from search_use_cases |
| region | string | Optional sub-country region (e.g. "US-CA", "California", "Mendoza") |
| country | string | Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates"). |
| language | string | Language for use-case text (machine-translated; English is authoritative). Default en. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"examples": [
"drone-light-show",
"commercial-floor-scrubbing"
],
"description": "Use case id from search_use_cases"
},
"region": {
"type": "string",
"description": "Optional sub-country region (e.g. \"US-CA\", \"California\", \"Mendoza\")"
},
"country": {
"type": "string",
"examples": [
"AE",
"BR",
"CA",
"Germany"
],
"description": "Buyer country: ISO 3166-1 alpha-2 (\"AE\") or English name (\"United Arab Emirates\")."
},
"language": {
"enum": [
"en",
"es",
"pt-BR",
"fr",
"de",
"zh",
"zh-Hant",
"ja",
"ar",
"hi",
"ko",
"id",
"tr"
],
"type": "string",
"examples": [
"es",
"pt-BR",
"zh"
],
"description": "Language for use-case text (machine-translated; English is authoritative). Default en."
}
},
"additionalProperties": false
}The 20 job categories with use-case counts, for browsing when the buyer is vague.
| Argument | Type | Description |
|---|---|---|
| language | string | Language for use-case text (machine-translated; English is authoritative). Default en. |
{
"type": "object",
"properties": {
"language": {
"enum": [
"en",
"es",
"pt-BR",
"fr",
"de",
"zh",
"zh-Hant",
"ja",
"ar",
"hi",
"ko",
"id",
"tr"
],
"type": "string",
"examples": [
"es",
"pt-BR",
"zh"
],
"description": "Language for use-case text (machine-translated; English is authoritative). Default en."
}
},
"additionalProperties": false
}For each country: providers that list it as a service area, providers serving parts of it (with sub-regions), and providers headquartered there; plus the number of worldwide providers. Use to tell the buyer honestly how well their country is covered.
| Argument | Type | Description |
|---|---|---|
| country | string | Optional: just this country |
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Optional: just this country"
}
},
"additionalProperties": false
}Search Whirrwork Research: 100+ citable statistics on robot adoption, industrial and service robots, humanoids, drones, agriculture, cleaning, warehouses, labour shortages, wages, prices and funding, plus figures from Whirrwork's own dataset. Each result has the exact figure with unit and scope, the primary source (publisher, title, date, URL, Wayback archive), access and last-verified dates, a confidence level (high/medium/low), source_type (primary/secondary/whirrwork) and a permanent URL. Quote figures with their source and date; prefer high-confidence primary sources. Call get_stat for the verbatim quote, caveats and ready-made APA/Chicago/MLA/BibTeX citations. Examples: "humanoid robots sold 2025", "robot density Korea", "drone spraying price per acre", "robotics funding", topic="labour".
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | Keywords (English). Omit to list by topic. |
| topic | string | Optional topic filter |
| confidence | string | |
| source_type | string |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"examples": [
"industrial robot installations China",
"humanoid price",
"labour shortage Japan"
],
"description": "Keywords (English). Omit to list by topic."
},
"topic": {
"enum": [
"adoption",
"service",
"humanoids",
"drones",
"agriculture",
"cleaning",
"warehouse",
"construction",
"labour",
"prices",
"funding",
"regulation",
"whirrwork"
],
"type": "string",
"description": "Optional topic filter"
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"source_type": {
"enum": [
"primary",
"secondary",
"whirrwork"
],
"type": "string"
}
},
"additionalProperties": false
}Find the robot job (use case) that matches what the buyer wants, in plain words and in any of 12 languages. Returns matching use cases (id, name, price summary, provider count) plus matching providers and guides. Start here, then call get_use_case with the best id. Examples: "drone light show for a wedding", "robotic floor scrubbing for a warehouse", "limpieza de ventanas con drones", "无人机灯光秀".
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | What the buyer needs done, in their words |
| country | string | Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates"). |
| language | string | Language for use-case text (machine-translated; English is authoritative). Default en. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 8,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"examples": [
"drone light show for 300 guests",
"crop spraying 500 hectares soybeans"
],
"maxLength": 300,
"minLength": 2,
"description": "What the buyer needs done, in their words"
},
"country": {
"type": "string",
"examples": [
"AE",
"BR",
"CA",
"Germany"
],
"description": "Buyer country: ISO 3166-1 alpha-2 (\"AE\") or English name (\"United Arab Emirates\")."
},
"language": {
"enum": [
"en",
"es",
"pt-BR",
"fr",
"de",
"zh",
"zh-Hant",
"ja",
"ar",
"hi",
"ko",
"id",
"tr"
],
"type": "string",
"examples": [
"es",
"pt-BR",
"zh"
],
"description": "Language for use-case text (machine-translated; English is authoritative). Default en."
}
},
"additionalProperties": false
}Submit a request for quotes for a real buyer who explicitly agreed to be contacted by matched suppliers (consent=true). Stored, auto-matched to providers by job + country, and reviewed by a human before anything is forwarded; nothing is emailed automatically. Returns id, status, matched provider ids, and a private status_url/access key for get_rfq_status. Use test=true for testing.
| Argument | Type | Description |
|---|---|---|
| job* | string | One sentence: what, where, how big |
| test | boolean | Mark as a test (excluded from stats, deleted) |
| extra | object | Answers to the job checklist, keyed as in get_rfq_template |
| consent* | boolean | Must be true: the buyer agreed to share the request (incl. email) with matched suppliers |
| country* | string | Buyer country: ISO 3166-1 alpha-2 ("AE") or English name ("United Arab Emirates"). |
| details | string | |
| date_end | string | |
| location | string | City / site |
| agent_name |
| string |
| Use case id (recommended) |
| hq_country | string | Only providers headquartered in this country |
| robot_type | string | Substring match on robot types, e.g. "drone", "AMR", "humanoid" |
| has_contact | boolean | Only providers with a public email, phone or quote form |
| has_pricing | boolean | Only providers that publish prices |
| max_price_usd | number | Only providers whose lowest published price (converted to USD) is at or below this. Excludes providers without published prices. |
| include_global | boolean | Include providers that only say "worldwide" when a country is given |
| engagement_model | string |
{
"type": "object",
"properties": {
"near": {
"type": "string",
"description": "\"me\" = the country Cloudflare sees for this request (never stored), or a country name/code. Coordinates are not supported."
},
"sort": {
"enum": [
"relevance",
"name",
"-name",
"price",
"-price",
"last_checked"
],
"type": "string",
"default": "relevance"
},
"limit": {
"type": "integer",
"default": 15,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"description": "Keyword filter on name/description"
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0
},
"region": {
"type": "string",
"description": "Sub-country region code or name, e.g. \"US-CA\", \"ON\", \"Mendoza\""
},
"country": {
"type": "string",
"examples": [
"AE",
"BR",
"CA",
"Germany"
],
"description": "Buyer country: ISO 3166-1 alpha-2 (\"AE\") or English name (\"United Arab Emirates\")."
},
"use_case": {
"type": "string",
"examples": [
"drone-light-show"
],
"description": "Use case id (recommended)"
},
"hq_country": {
"type": "string",
"description": "Only providers headquartered in this country"
},
"robot_type": {
"type": "string",
"description": "Substring match on robot types, e.g. \"drone\", \"AMR\", \"humanoid\""
},
"has_contact": {
"type": "boolean",
"description": "Only providers with a public email, phone or quote form"
},
"has_pricing": {
"type": "boolean",
"description": "Only providers that publish prices"
},
"max_price_usd": {
"type": "number",
"description": "Only providers whose lowest published price (converted to USD) is at or below this. Excludes providers without published prices."
},
"include_global": {
"type": "boolean",
"default": true,
"description": "Include providers that only say \"worldwide\" when a country is given"
},
"engagement_model": {
"enum": [
"service",
"rental",
"raas",
"purchase"
],
"type": "string"
}
},
"additionalProperties": false
}| string |
| Your agent/product name |
| budget_max | number |
| budget_min | number |
| date_start | string |
| use_case_id | string |
| contact_name | string |
| contact_email* | string |
| contact_phone | string | Optional phone/WhatsApp/WeChat, international format |
| date_flexible | boolean |
| provider_hint | string | Optional provider id the buyer prefers |
| budget_currency | string | ISO 4217 |
| contact_company | string |
{
"type": "object",
"required": [
"job",
"country",
"contact_email",
"consent"
],
"properties": {
"job": {
"type": "string",
"maxLength": 300,
"description": "One sentence: what, where, how big"
},
"test": {
"type": "boolean",
"description": "Mark as a test (excluded from stats, deleted)"
},
"extra": {
"type": "object",
"description": "Answers to the job checklist, keyed as in get_rfq_template",
"additionalProperties": {
"type": "string"
}
},
"consent": {
"type": "boolean",
"const": true,
"description": "Must be true: the buyer agreed to share the request (incl. email) with matched suppliers"
},
"country": {
"type": "string",
"examples": [
"AE",
"BR",
"CA",
"Germany"
],
"description": "Buyer country: ISO 3166-1 alpha-2 (\"AE\") or English name (\"United Arab Emirates\")."
},
"details": {
"type": "string",
"maxLength": 5000
},
"date_end": {
"type": "string",
"format": "date"
},
"location": {
"type": "string",
"description": "City / site"
},
"agent_name": {
"type": "string",
"description": "Your agent/product name"
},
"budget_max": {
"type": "number"
},
"budget_min": {
"type": "number"
},
"date_start": {
"type": "string",
"format": "date"
},
"use_case_id": {
"type": "string"
},
"contact_name": {
"type": "string"
},
"contact_email": {
"type": "string",
"format": "email"
},
"contact_phone": {
"type": "string",
"description": "Optional phone/WhatsApp/WeChat, international format"
},
"date_flexible": {
"type": "boolean"
},
"provider_hint": {
"type": "string",
"description": "Optional provider id the buyer prefers"
},
"budget_currency": {
"type": "string",
"description": "ISO 4217"
},
"contact_company": {
"type": "string"
}
},
"additionalProperties": false
}