Tool tree
gradeNot graded
gateway_taskAction
Default tool for read-only requests. Pass the user's goal largely as written, including any website URL. The gateway selects the workflow, searches, filters, ranks, and verifies results. If agent_action="answer", stop using tools for further discovery. When presentation.action="open_result" and a browser is available, open presentation.url once for final inspection, then answer; otherwise answer directly. Example: gateway_task({ goal: "Find the cheapest green men's sweater on tentree.com" }).
View tool JSON
{
"name": "gateway_task",
"kind": "act",
"impl": "imperative",
"description": "Default tool for read-only requests. Pass the user's goal largely as written, including any website URL. The gateway selects the workflow, searches, filters, ranks, and verifies results. If agent_action=\"answer\", stop using tools for further discovery. When presentation.action=\"open_result\" and a browser is available, open presentation.url once for final inspection, then answer; otherwise answer directly. Example: gateway_task({ goal: \"Find the cheapest green men's sweater on tentree.com\" }).",
"inputSchema": {
"type": "object",
"properties": {
"goal": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "The user's normal-language read-only request; pass it mostly as written."
},
"site": {
"type": "string",
"minLength": 3,
"maxLength": 300,
"description": "Optional public site URL or domain; a URL in goal is also extracted automatically."
},
"response_format": {
"type": "string",
"enum": [
"concise",
"detailed"
],
"description": "Optional response size; concise is the default."
}
},
"required": [
"goal"
],
"additionalProperties": false
}
}gateway_capabilitiesAction
Use when the user asks what the gateway can do or the goal is broad or ambiguous. For a clear task, use gateway_task or the matching specialist tool directly after WebMCP discovery; never inspect the manifest first. If the result is answer-ready, stop using tools for additional gateway discovery; this planning response has no result to present.
View tool JSON
{
"name": "gateway_capabilities",
"kind": "act",
"impl": "imperative",
"description": "Use when the user asks what the gateway can do or the goal is broad or ambiguous. For a clear task, use gateway_task or the matching specialist tool directly after WebMCP discovery; never inspect the manifest first. If the result is answer-ready, stop using tools for additional gateway discovery; this planning response has no result to present.",
"inputSchema": {
"type": "object",
"properties": {
"capability": {
"type": "string",
"enum": [
"commerce",
"rentals",
"jobs",
"all"
],
"description": "Capability group to plan for; defaults to all."
},
"scope": {
"type": "string",
"enum": [
"commerce",
"rentals",
"jobs",
"diagnostics",
"compatibility",
"all"
],
"description": "Optional planning scope; use diagnostics or compatibility only when the task needs advanced inspection."
},
"goal": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"description": "Optional short description of the user's goal; helps choose the narrowest recipe."
},
"level": {
"type": "string",
"enum": [
"overview",
"advanced"
],
"description": "Use advanced only when the task explicitly needs diagnostics or compatibility detail."
}
},
"required": [],
"additionalProperties": false
}
}gateway_find_toolAnswer
Use only for uncommon functionality not covered by the normal tools. Search the bounded advanced registry once; then use gateway_call_tool with the exact returned operation. This tool does not execute anything.
View tool JSON
{
"name": "gateway_find_tool",
"kind": "answer",
"impl": "imperative",
"description": "Use only for uncommon functionality not covered by the normal tools. Search the bounded advanced registry once; then use gateway_call_tool with the exact returned operation. This tool does not execute anything.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"description": "Short description of the specialist capability needed."
},
"scope": {
"type": "string",
"enum": [
"commerce",
"rentals",
"jobs",
"compatibility",
"diagnostics",
"all"
],
"description": "Optional scope to keep discovery narrow."
},
"max_results": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "Maximum number of matching operations to return; hard cap 5."
}
},
"required": [
"query"
],
"additionalProperties": false
}
}gateway_call_toolAction
Execute only the exact operation and validated arguments returned by gateway_find_tool. Use this after advanced discovery, not for normal tasks. Unknown operations, arbitrary URLs, methods, headers, code, shell, and filesystem access are rejected.
View tool JSON
{
"name": "gateway_call_tool",
"kind": "act",
"impl": "imperative",
"description": "Execute only the exact operation and validated arguments returned by gateway_find_tool. Use this after advanced discovery, not for normal tasks. Unknown operations, arbitrary URLs, methods, headers, code, shell, and filesystem access are rejected.",
"inputSchema": {
"type": "object",
"properties": {
"operation": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Exact registered operation name returned by gateway_find_tool."
},
"arguments": {
"type": "object",
"description": "Arguments for the selected registered operation; its existing schema is validated before execution.",
"additionalProperties": true
}
},
"required": [
"operation",
"arguments"
],
"additionalProperties": false
}
}commerce_search_productsAction
Search products when you already know this is a commerce task. If the user names a store, pass its URL in site; the gateway handles platform detection, acquisition, filtering, ranking, and verification. If agent_action=answer or answer_ready is true, stop using tools for further discovery. If presentation.action=open_result and a browser exists, open presentation.url once, then answer. Do not browse the source to repeat discovery. Example: query sweater, site tentree.com.
View tool JSON
{
"name": "commerce_search_products",
"kind": "act",
"impl": "imperative",
"description": "Search products when you already know this is a commerce task. If the user names a store, pass its URL in site; the gateway handles platform detection, acquisition, filtering, ranking, and verification. If agent_action=answer or answer_ready is true, stop using tools for further discovery. If presentation.action=open_result and a browser exists, open presentation.url once, then answer. Do not browse the source to repeat discovery. Example: query sweater, site tentree.com.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Product search terms."
},
"max_results": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum number of results to return; hard cap 20."
},
"min_price": {
"type": "number",
"minimum": 0,
"maximum": 100000,
"description": "Optional minimum price; records without a verified comparable price are excluded when set."
},
"max_price": {
"type": "number",
"minimum": 0,
"maximum": 100000,
"description": "Optional maximum price; records without a verified comparable price are excluded when set."
},
"providers": {
"type": "array",
"minItems": 1,
"maxItems": 14,
"items": {
"type": "string",
"enum": [
"ikea",
"amazon",
"argos",
"johnlewis",
"shopify_represent",
"shopify_rapanuiclothing",
"shopify_pipandnut",
"woocommerce_hardandware",
"woocommerce_formnutrition",
"woocommerce_gruum",
"structured_decathlon",
"structured_currys",
"structured_dunelm"
],
"description": "Commerce provider identifier."
},
"description": "Optional source selection when the user names providers. Otherwise the gateway picks relevant public sources; not required for normal search."
},
"condition": {
"type": "string",
"enum": [
"all",
"new",
"used",
"refurbished"
],
"description": "Optional condition filter."
},
"site": {
"type": "string",
"minLength": 3,
"maxLength": 300,
"description": "Optional public storefront URL or domain. The gateway attempts dynamic Shopify/WooCommerce adaptation; the site need not be pre-registered."
},
"search_context": {
"type": "string",
"minLength": 3,
"maxLength": 160,
"description": "Optional opaque context returned by a prior search for the same storefront; enables reuse and refinement."
},
"audience": {
"type": "string",
"enum": [
"men",
"women",
"kids",
"unisex"
],
"description": "Optional audience constraint; explicit values override natural-language inference."
},
"color": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Optional exact or normalized color constraint."
},
"size": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"description": "Optional size constraint, such as S, M, L, or XL."
},
"in_stock": {
"type": "boolean",
"description": "Require the requested product variant to be explicitly available."
},
"sort_by": {
"type": "string",
"enum": [
"relevance",
"price_asc",
"price_desc",
"rating_desc"
],
"description": "Optional deterministic ordering."
},
"currency": {
"type": "string",
"enum": [
"GBP"
],
"description": "Currency for monetary fields."
},
"locale": {
"type": "string",
"enum": [
"en-GB"
],
"description": "Locale used for the UK source."
},
"response_format": {
"type": "string",
"enum": [
"concise",
"detailed",
"diagnostic"
],
"description": "Response size: concise by default, detailed for richer fields, diagnostic for bounded route evidence."
},
"include_diagnostics": {
"type": "boolean",
"description": "Include bounded route diagnostics for QA; omit for the compact normal response."
}
},
"required": [
"query"
],
"additionalProperties": false
}
}commerce_get_productAnswer
Use only when the user asks for additional information about one returned product, or when a search next_action requests it. Do not call after an answer-ready search just to recheck it. Example: commerce_get_product({ provider: "shopify.example", product_id: "..." }). It never buys or changes state.
View tool JSON
{
"name": "commerce_get_product",
"kind": "answer",
"impl": "imperative",
"description": "Use only when the user asks for additional information about one returned product, or when a search next_action requests it. Do not call after an answer-ready search just to recheck it. Example: commerce_get_product({ provider: \"shopify.example\", product_id: \"...\" }). It never buys or changes state.",
"inputSchema": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 180,
"description": "Provider that issued product_id, including a normalized dynamic Shopify/WooCommerce domain."
},
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "The provider product ID or ASIN returned by search."
},
"canonical_url": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Optional canonical URL returned by search; useful for providers whose stable path identifier is not reconstructable."
},
"site": {
"type": "string",
"minLength": 3,
"maxLength": 300,
"description": "Optional public storefront URL/domain for targeted dynamic detail verification."
},
"search_context": {
"type": "string",
"minLength": 3,
"maxLength": 160,
"description": "Optional opaque search context from commerce_search_products for cheap same-store detail reuse."
},
"include": {
"type": "array",
"maxItems": 8,
"items": {
"type": "string",
"enum": [
"price",
"availability",
"sizes",
"colors",
"variants",
"materials",
"description",
"images",
"sale",
"provenance"
],
"description": "Detail section to include."
},
"description": "Optional rich sections; omit for a concise verified product record."
},
"currency": {
"type": "string",
"enum": [
"GBP"
],
"description": "Currency for monetary fields."
},
"locale": {
"type": "string",
"enum": [
"en-GB"
],
"description": "Locale used for the UK source."
},
"response_format": {
"type": "string",
"enum": [
"concise",
"detailed",
"diagnostic"
],
"description": "Response size: concise by default, detailed for richer fields, diagnostic for bounded route evidence."
},
"include_diagnostics": {
"type": "boolean",
"description": "Include bounded route diagnostics for QA; omit for the compact normal response."
}
},
"required": [
"provider",
"product_id"
],
"additionalProperties": false
}
}jobs_searchAction
Search public job listings when you already know this is a jobs task. The gateway handles board selection, filtering, ranking, and verification. If agent_action="answer" or the result is answer-ready, stop using tools for additional gateway discovery. If presentation.action="open_result" and browser navigation is available, open presentation.url once for final inspection, then answer; otherwise answer directly. Example: jobs_search({ query: "strategy consulting", location: "London" }).
View tool JSON
{
"name": "jobs_search",
"kind": "act",
"impl": "imperative",
"description": "Search public job listings when you already know this is a jobs task. The gateway handles board selection, filtering, ranking, and verification. If agent_action=\"answer\" or the result is answer-ready, stop using tools for additional gateway discovery. If presentation.action=\"open_result\" and browser navigation is available, open presentation.url once for final inspection, then answer; otherwise answer directly. Example: jobs_search({ query: \"strategy consulting\", location: \"London\" }).",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Optional job title, skill, or keyword query."
},
"location": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Optional city, country, or location filter."
},
"remote": {
"type": "boolean",
"description": "Optional explicit remote-work filter."
},
"company": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Optional supported company or board name."
},
"department": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Optional department or team filter."
},
"employment_type": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Optional employment type or commitment filter."
},
"max_results": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum number of results to return; hard cap 20."
},
"sort_by": {
"type": "string",
"enum": [
"relevance",
"date_desc",
"title_asc"
],
"description": "Optional deterministic ordering."
},
"response_format": {
"type": "string",
"enum": [
"concise",
"detailed",
"diagnostic"
],
"description": "Response size: concise by default, detailed for richer fields, diagnostic for bounded route evidence."
},
"include_diagnostics": {
"type": "boolean",
"description": "Include bounded route diagnostics for QA; omit for the compact normal response."
}
},
"required": [],
"additionalProperties": false
}
}jobs_get_listingAnswer
Use only when the user asks for additional details about a listing returned by jobs_search. Pass its provider and stable ID; no application is submitted. Example: jobs_get_listing({ provider: "greenhouse", job_id: "..." }).
View tool JSON
{
"name": "jobs_get_listing",
"kind": "answer",
"impl": "imperative",
"description": "Use only when the user asks for additional details about a listing returned by jobs_search. Pass its provider and stable ID; no application is submitted. Example: jobs_get_listing({ provider: \"greenhouse\", job_id: \"...\" }).",
"inputSchema": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"greenhouse",
"lever"
],
"description": "Job-board platform that issued job_id."
},
"job_id": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Stable job identifier returned by jobs_search."
},
"company": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Optional supported company or board name when using a platform-local ID."
},
"canonical_url": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Optional canonical job URL returned by search."
},
"response_format": {
"type": "string",
"enum": [
"concise",
"detailed",
"diagnostic"
],
"description": "Response size: concise by default, detailed for richer fields, diagnostic for bounded route evidence."
},
"include_diagnostics": {
"type": "boolean",
"description": "Include bounded route diagnostics for QA; omit for the compact normal response."
}
},
"required": [
"provider",
"job_id"
],
"additionalProperties": false
}
}rentals_search_propertiesAction
Search public rental listings when you already know this is a rentals task. The gateway handles provider selection, filtering, ranking, and verification. If agent_action="answer" or the result is answer-ready, stop using tools for additional gateway discovery. If presentation.action="open_result" and browser navigation is available, open presentation.url once for final inspection, then answer; otherwise answer directly. Example: rentals_search_properties({ location: "London", min_bedrooms: 2 }).
View tool JSON
{
"name": "rentals_search_properties",
"kind": "act",
"impl": "imperative",
"description": "Search public rental listings when you already know this is a rentals task. The gateway handles provider selection, filtering, ranking, and verification. If agent_action=\"answer\" or the result is answer-ready, stop using tools for additional gateway discovery. If presentation.action=\"open_result\" and browser navigation is available, open presentation.url once for final inspection, then answer; otherwise answer directly. Example: rentals_search_properties({ location: \"London\", min_bedrooms: 2 }).",
"inputSchema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Town, city, area, or postcode."
},
"min_bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"description": "Minimum bedrooms."
},
"max_bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"description": "Maximum bedrooms."
},
"min_price_pcm": {
"type": "number",
"minimum": 0,
"maximum": 100000,
"description": "Minimum monthly rent in GBP."
},
"max_price_pcm": {
"type": "number",
"minimum": 0,
"maximum": 100000,
"description": "Maximum effective monthly cost in GBP."
},
"radius_miles": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Optional search radius in miles when a provider supports it."
},
"property_type": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Optional property type, such as flat or house."
},
"furnishing": {
"type": "string",
"enum": [
"furnished",
"part_furnished",
"unfurnished"
],
"description": "Optional furnishing requirement."
},
"bills_included": {
"type": "boolean",
"description": "Require explicit evidence that bills are included."
},
"pets_allowed": {
"type": "boolean",
"description": "Require explicit evidence that pets are allowed."
},
"available_before": {
"type": "string",
"format": "date",
"description": "Require availability on or before this date."
},
"freshness_days": {
"type": "integer",
"minimum": 0,
"maximum": 365,
"description": "Only include listings no older than this many days when listed date is known."
},
"whole_property_only": {
"type": "boolean",
"description": "Exclude rooms, shares, student-only, retirement, and clearly unavailable supply."
},
"max_results": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum number of results to return; hard cap 20."
},
"sort_by": {
"type": "string",
"enum": [
"relevance",
"price_asc",
"price_desc",
"freshest"
],
"description": "Optional deterministic ordering."
},
"providers": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"items": {
"type": "string",
"enum": [
"onthemarket",
"openrent"
],
"description": "Rental provider identifier."
},
"description": "Optional provider allow-list. Defaults to OnTheMarket and OpenRent."
},
"exclude_listing_ids": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"description": "Stable listing IDs already seen by the caller."
},
"exclude_urls": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"description": "Canonical listing URLs already seen by the caller."
},
"response_format": {
"type": "string",
"enum": [
"concise",
"detailed",
"diagnostic"
],
"description": "Response size: concise by default, detailed for richer fields, diagnostic for bounded route evidence."
},
"include_diagnostics": {
"type": "boolean",
"description": "Include bounded route diagnostics for QA; omit for the compact normal response."
}
},
"required": [
"location"
],
"additionalProperties": false
}
}rentals_get_listingAnswer
Use only when the user asks for additional details about one listing returned by rentals_search_properties, or when a search next_action requests verification. Pass its provider and stable ID. No application or booking is performed. Example: rentals_get_listing({ provider: "openrent", listing_id: "..." }).
View tool JSON
{
"name": "rentals_get_listing",
"kind": "answer",
"impl": "imperative",
"description": "Use only when the user asks for additional details about one listing returned by rentals_search_properties, or when a search next_action requests verification. Pass its provider and stable ID. No application or booking is performed. Example: rentals_get_listing({ provider: \"openrent\", listing_id: \"...\" }).",
"inputSchema": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"onthemarket",
"openrent"
],
"description": "Provider that issued listing_id."
},
"listing_id": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Stable listing ID returned by rentals_search_properties."
},
"canonical_url": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Canonical listing URL returned by search; required for OpenRent when the slug is not otherwise known."
},
"response_format": {
"type": "string",
"enum": [
"concise",
"detailed",
"diagnostic"
],
"description": "Response size: concise by default, detailed for richer fields, diagnostic for bounded route evidence."
},
"include_diagnostics": {
"type": "boolean",
"description": "Include bounded route diagnostics for QA; omit for the compact normal response."
}
},
"required": [
"provider",
"listing_id"
],
"additionalProperties": false
}
}