MCP-Dubai
MCP-Dubai is a local MCP server exposing 120 tools (37 features) for Dubai/UAE public data and practical business-setup knowledge, with 112 usable without credentials.
Islamic tools – daily prayer times, monthly calendars, Qibla bearing, Hijri↔Gregorian conversion, Quran surah/ayah/juz text and search.
Weather & air – METAR/TAF for 6 UAE airports, current weather + forecasts for UAE cities or any coordinates, WAQI air quality (token needed for readings).
Markets & money – CBUAE official exchange rates, everyday currency rates/conversion, DFM index/quotes/securities, Dubai retail gold rates per karat.
Holidays – UAE federal holidays for 2026/2027 with provisional flags, next-holiday lookup, is-it-a-holiday check.
Locations – Makani reverse geocoding, Makani number lookup/validation, OpenStreetMap POI search across 22 categories.
Dataset discovery – search the data.dubai catalog, themes and issuing entities; FCSC federal open-data search; Federal Customs trade stats.
Government datasets (OAuth required) – DLD property transactions, Ejari rent contracts, broker lookup; RTA metro stations, bus routes, Salik tariffs; RTA GTFS feed link.
Schools – search the bundled KHDA sample by name, area, curriculum, rating, or fee ceiling; list curricula and areas (not a full directory).
Business setup – setup advisor comparing mainland/free zone/offshore, free-zone details and comparison, offshore options, visa types and golden-visa checks, banks and DUL eligibility.
Founder logistics – attestation routes, PRO and legal-translation cost estimates, Chamber of Commerce info, setup timelines, common founder mistakes.
Tax & compliance – corporate tax estimates with QFZP checks, VAT calendar, ESR status, e-invoicing milestones, penalty estimates, AML, UBO, PDPL, Emiratisation.
Funding & events – accelerator and VC search, government grant programs, DCDE programs, GITEX and Expand North Star details, startup events, Create Apps Championship.
Cost of living – rent, DEWA bills, Salik tolls, groceries, school fees, monthly fuel prices, parking zones and Nol card fares.
Legal & IP – trademark registration (with SME discount), patent/copyright guidance, halal certification and MOIAT requirements.
Writing & analysis – Arabic/English business letter templates, honorifics and salutations, query planning and Markdown report synthesis, setup-decision analysis.
Discovery/diagnostics –
recommend_tools(BM25 tool ranking),list_features,about,get_knowledge_status(freshness of 19 domains),get_upstream_status(16-source health registry).
Note: it returns lookups, estimates, and guidance only — it does not submit applications or open accounts, and business/pricing data is dated and should be verified against official sources.
Provides tools to search for points of interest (restaurants, pharmacies, mosques, ATMs, metro stations, etc.) near a Dubai location using the OpenStreetMap Overpass API.
Provides tools to fetch Central Bank of UAE exchange rates and base rates via undocumented Umbraco endpoints.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-DubaiWhat time is Fajr today in Dubai?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-Dubai
Dubai and UAE public data and business setup knowledge for MCP clients.
خادم MCP للبيانات العامة في دبي والإمارات وللمعرفة العملية لتأسيس الأعمال
Quick start · Tools · Configuration · Data freshness · Development · Latest audit
MCP-Dubai is a Model Context Protocol server that connects AI assistants to public APIs, bundled reference datasets, and curated business knowledge. It runs locally over stdio and returns structured results with source and freshness metadata where available.
The current source includes 120 tools across 37 features:
Area | Tools | Coverage |
Public data and reference datasets | 45 | Weather, prayer times, currencies, schools, holidays, market data, locations, and dataset discovery |
Dubai government dataset queries | 6 | DLD real estate and RTA transport through data.dubai OAuth |
Business knowledge | 56 | Company setup, free zones, visas, banking, tax, compliance, funding, and living costs |
Writing and analysis | 8 | Arabic/English letter templates, query plans, and report synthesis |
Discovery and diagnostics | 5 | Tool recommendations, feature inventory, version, knowledge dates, and upstream status |
112 tools require no credentials. Two air-quality tools need a free WAQI token; six government dataset tools need OAuth credentials and dataset access. Credential-free tools can still depend on an unavailable upstream service; see availability and limitations.
Quick start
Run the current source
Requires Python 3.11 or newer and Git. The October 13 audit tested Python 3.11 through 3.14.
git clone https://github.com/mahdi-salmanzade/MCP-Dubai.git
cd MCP-Dubai
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .On Windows PowerShell, create the environment with py -m venv .venv and activate it with .venv\Scripts\Activate.ps1.
Configure your MCP client to launch the environment's Python executable:
{
"mcpServers": {
"dubai": {
"command": "/absolute/path/to/MCP-Dubai/.venv/bin/python",
"args": ["-m", "mcp_dubai"]
}
}
}Replace command with your actual absolute path. On Windows, use the environment's .venv\Scripts\python.exe path, escaping backslashes in JSON.
Client | Configuration file |
Claude Desktop |
|
Cursor |
|
Windsurf |
|
For VS Code, use .vscode/mcp.json with a servers key:
{
"servers": {
"dubai": {
"command": "/absolute/path/to/MCP-Dubai/.venv/bin/python",
"args": ["-m", "mcp_dubai"]
}
}
}For another MCP client, use the same command and arguments in its stdio server settings. After connecting, call about() to check the running version and tool count, then recommend_tools(query) to find relevant tools.
To launch the server directly from the activated environment:
python -m mcp_dubaiThis starts an MCP stdio process that waits for client messages.
Use the published package
Release snapshot, October 20, 2026: the public PyPI release is version 0.4.0 with 120 tools, the same catalogue documented here.
To run the published release with uv:
uvx mcp-dubaiIn a client configuration, set command to uvx and args to ["mcp-dubai"]. Alternatively, install it in a virtual environment with python -m pip install mcp-dubai and run mcp-dubai.
Related MCP server: filed-mcp-server
Tool catalogue
Tools are grouped by purpose below. All names are exposed without a feature prefix. list_features() returns the registered groups, tool counts, tiers, and authentication requirements.
Public data and reference datasets
Feature | Tools | Coverage |
|
| Prayer times, Qibla bearings, and Hijri/Gregorian conversion. |
|
| Quran text and translations with bounded, paginated search. |
|
| CBUAE exchange rates with English/Arabic labels and currency codes. The base-rate endpoint is recorded as blocked. |
|
| Federal dataset discovery and trade-data search. The CKAN endpoint is recorded as blocked. |
|
| Search a bundled 16-school sample by area, curriculum, rating, or indicative fee ceiling. This is not a complete school directory. |
|
| METAR observations and TAF forecasts for six UAE airports. |
|
| Current weather and forecasts for eight UAE cities or supplied coordinates. |
|
| AED-based exchange rates and currency conversion. |
|
| WAQI air-quality readings and a station reference list. Readings require a free token; the list does not. |
|
| Nearby OpenStreetMap points of interest across 22 categories. |
|
| UAE federal holidays for 2026 and a provisional 2027 calendar, with announced observances distinguished from estimates. |
|
| DFM index snapshots, quotes, and securities from undocumented public endpoints. Data may be delayed or incomplete. |
|
| Makani address lookup, reverse geocoding, and number validation. |
|
| Dubai Jewellery Group suggested retail gold rates in AED per gram. |
|
| Public dataset metadata, themes, and publishers. Access to dataset records is separate. |
|
| Link and metadata for the anonymous GTFS archive, including its dated build and intermittent availability. |
Government dataset queries
These six tools require MCP_DUBAI_PULSE_CLIENT_ID, MCP_DUBAI_PULSE_CLIENT_SECRET, and access to the requested datasets. Without credentials, they return structured setup instructions. See CREDENTIALS.md.
Feature | Tools | Coverage |
|
| Property sales, Ejari rental contracts, and registered brokers. |
|
| Metro stations, bus routes, and Salik tariff data. |
Business knowledge
These tools use 16 bundled JSON packs and a setup advisor that combines relevant records. Successful responses include knowledge metadata. Prices, eligibility rules, and estimates retain their documented scope and verification dates.
Feature | Tools | Coverage |
|
| Compare mainland, free-zone, and offshore setup options using budget, activity, visa, banking, and tax considerations. |
|
| Twelve curated free-zone entries, offshore options, indicative costs, and package details. Unknown prices cannot satisfy a budget filter. |
|
| Visa routes and category-specific eligibility guidance, including authority and evidence requirements. |
|
| Fourteen bank entries, fees, onboarding estimates, and dated Dubai Unified Licence integration information. |
|
| Document attestation, provider cost estimates, Chamber membership, setup timelines, and common filing mistakes. |
|
| Corporate tax estimates, QFZP conditions, VAT calendars, ESR history, e-invoicing milestones, and penalty estimates. |
|
| AML, beneficial ownership, data-protection, and Emiratisation requirements. |
|
| Accelerator and investor discovery, government support, and dated application windows. |
|
| Government portal guidance, including UAE Pass, DubaiNow, and DubaiPay. |
|
| Dubai Chamber of Digital Economy programs and Chamber membership guidance. |
|
| Startup events, GITEX, and Expand North Star dates and venues. |
|
| Parking zones, tariffs, and Nol card fares and passes. |
|
| Trademark registration, patent, and copyright guidance. Industrial-design guidance is not yet a tool category. |
|
| Halal conformity, certification bodies, National Mark use, and MOIAT requirements. |
|
| Create Apps Championship rules, application guidance, and dated competition milestones. |
|
| Indicative household budgets, utility and toll calculations, school fee estimates, and monthly fuel-price snapshots. |
|
| Ejari registration, RERA rent-increase calculations, and rental-dispute procedures. |
Writing and analysis
Feature | Tools | Coverage |
|
| Arabic/English business letter templates, honorifics, addressees, and salutations. |
|
| Cross-tool query plans and Markdown report synthesis. The calling agent executes the plan; these tools do not run it autonomously. |
Discovery and diagnostics
Tool | Purpose |
| Rank tools relevant to a natural-language query using BM25 search and aliases. |
| List registered features, tiers, authentication requirements, and tools. |
| Inspect dates, review scope, volatility, and verification links for all 19 tracked knowledge domains. |
| Find the developer name and contact email, running package version, tool count, repository URL, and latest recorded knowledge update. |
| Read the 16-source status registry and observations from the current process. This does not actively probe every endpoint. |
Configuration
No environment variables are required to start the server. Set credentials in the MCP client's server environment to enable the relevant calls.
{
"mcpServers": {
"dubai": {
"command": "/absolute/path/to/MCP-Dubai/.venv/bin/python",
"args": ["-m", "mcp_dubai"],
"env": {
"MCP_DUBAI_PULSE_CLIENT_ID": "your-client-id",
"MCP_DUBAI_PULSE_CLIENT_SECRET": "your-client-secret",
"MCP_DUBAI_WAQI_TOKEN": "your-waqi-token"
}
}
}
}Variable | Default | Purpose |
| Unset | OAuth client ID for the six government dataset tools |
| Unset | OAuth client secret, used with the client ID |
| Unset | Token for the two air-quality reading tools |
|
| Government dataset API base URL |
|
| Public metadata portal base URL |
|
| Log verbosity |
|
| HTTP timeout in seconds |
|
| Total attempts per request; only timeouts and network errors are retried |
Request dataset access at data.dubai and a free WAQI token at AQICN. Keep credentials out of committed configuration files. The credential guide covers setup and troubleshooting. MCP_DUBAI_CALENDARIFIC_KEY is reserved for a future holiday refresh integration and currently enables no additional tool.
Data sources
Source | Used for | Access |
Prayer times, calendar conversion, Quran text | Anonymous APIs | |
Exchange rates and currency conversion | Anonymous endpoints; CBUAE endpoints are undocumented | |
Federal dataset discovery | Anonymous CKAN API, recorded as blocked | |
School reference data | Bundled sample | |
Airport and general weather | Anonymous APIs | |
Air quality | Free token | |
Points of interest and address lookup | Anonymous services | |
Market data and retail gold rates | Public JSON endpoints and HTML; DFM endpoints are undocumented | |
Dataset discovery, DLD and RTA queries | Anonymous metadata; OAuth for dataset records | |
UAE federal holiday announcements | Public holidays | Bundled calendar with provisional dates marked |
Business setup and reference guidance | Bundled JSON with source links and review metadata |
The former Dubai Pulse portal redirects to data.dubai. The project retains PULSE in credential variable names; its default API gateway is apis.data.dubai.
Availability and limitations
The October 20, 2026 audit records representative service checks, source verification, and remaining limits. These observations are a dated snapshot:
Integration | Recorded result |
CBUAE exchange rates | Working; 77 currencies returned |
CBUAE base rate and four FCSC tools | Blocked by upstream access protection |
data.dubai catalogue | Working; 639 datasets, 11 themes, and 75 issuers |
DFM | Working; 468 securities, with names missing upstream |
RTA GTFS archive | Intermittent access via the apex host; retrieved archive still identifies the August 23, 2025 build |
Other anonymous integrations | Successful representative calls for prayer times, Quran text, aviation and general weather, currencies, gold, Makani, and Overpass (Overpass after one transient HTTP 504) |
OAuth datasets and WAQI readings | Not live-tested in the audit without representative credentials |
The school dataset contains 16 selected records from an April 2026 snapshot. Nine records received targeted attribute corrections on September 5; school fees were not refreshed. Business costs and onboarding timelines can also be dated estimates, as indicated in the underlying records.
Clients should inspect success before using a result and read the returned error when a call fails. Credential and upstream failures include structured status and reason fields where applicable. Use get_upstream_status() for the recorded baseline and observations from tools used during the current session.
Knowledge freshness
Freshness is tracked across 19 domains: 16 JSON packs, setup_advisor, data_analyst, and arabic_writer. Successful business responses include a knowledge block; get_knowledge_status() exposes the complete registry.
Field | Meaning |
| Latest material update to the domain |
| Last complete domain review |
| Prior update date, when recorded for a targeted refresh |
| Fields or topics covered by a targeted update |
| Review-budget category: high, medium, or stable |
| Domain verification or source URL |
| Domain-specific scope and use limitations |
As of October 20, 2026, tax_compliance received a full review and twelve more domains a targeted refresh. Nine domains keep their October 13 full reviews (cost_of_living, events, free_zones, visas, setup_advisor, dcde, ip_trademark, founder_essentials, data_analyst), and arabic_writer stays at 2026-04-13. Targeted updates leave untouched fields and full-review dates at their earlier verification scope. Detailed corrections and source links are in the audit report.
The freshness checker uses the last full review, with alerting budgets of 100 days for high-volatility domains, 190 for medium, and 365 for stable. Monthly prices, deadlines, and events still need review on their own schedules. Passing the age check does not establish that every fact is current.
python scripts/check_knowledge_freshness.py --strictVerify the linked official requirements before relying on tax, visa, legal, or pricing guidance for a decision.
Example queries
Ask a connected assistant to use MCP-Dubai for requests such as:
Request | Relevant tools |
What time is Fajr tomorrow in Dubai? |
|
Find pharmacies within 500 metres of these coordinates. |
|
Find public datasets about Dubai traffic. |
|
Compare DMCC and IFZA for a consultancy with two visas. |
|
Estimate corporate tax on AED 500,000 of taxable income and explain the QFZP information needed. |
|
What is the attestation route for an Indian degree certificate? |
|
Estimate monthly living costs for a family of four. |
|
Prepare an Arabic/English letter addressed to a government department. |
|
Tool selection and follow-up questions depend on the client. These examples describe lookups and estimates; the server does not submit applications or open accounts.
Development
From the activated source environment created in Quick start:
python -m pip install -e ".[dev,data]"
make checkmake check runs Ruff lint and format checks, strict mypy, pytest with coverage, and the informational freshness report. Use the --strict freshness command above to fail on overdue domains.
The October 20 audit recorded 1006 passing tests with 93.77% coverage on Python 3.12, and CI runs the same suite on each supported version (3.11 to 3.14). Packaging, type checks, lint, and security scans also passed; the audit documents their scope.
Architecture
src/mcp_dubai/
├── __main__.py # stdio entry point
├── server.py # feature mounts and diagnostic tools
├── _shared/ # HTTP, auth, discovery, response models, freshness
├── data/ # public APIs, OAuth integrations, reference datasets
├── biz/
│ ├── _data/ # 16 bundled JSON knowledge packs
│ └── ... # 17 business features
└── agents/ # Arabic writing and data-analysis toolsFeature tools.py modules implement the logic; server.py modules expose FastMCP wrappers and register discovery metadata. Shared response models carry results, errors, and knowledge metadata. The source supports fastmcp>=3.4.9,<4 with mcp>=1.30.0,<2; dependencies and supported Python versions are declared in pyproject.toml.
Read CONTRIBUTING.md for feature conventions, tests, and the review checklist. Report reproducible errors or source corrections through GitHub issues.
Project status
MCP-Dubai is alpha software. Version 0.4.0 was released on October 20, 2026 to PyPI and to the MCP Registry from the registry manifest.
Current priorities:
Rebuild the KHDA dataset from an authoritative full workbook, including current fees.
Add live contract checks for credential-dependent datasets and improve blocked or intermittent integrations.
Extend government dataset coverage when access and schemas can be verified.
Continue source-backed knowledge updates while preserving partial-review scope.
Improve tool discovery tags and Arabic/English aliases.
License and attribution
Developed by Mahdi Salmanzadeh. Contact: hi@mindzone.tech. Connected AI assistants receive this attribution in the server instructions and can call about() to answer who made MCP-Dubai.
Licensed under MIT. Upstream data remains subject to its publishers' terms and attribution requirements.
This is an independent project, unaffiliated with the Government of Dubai, the UAE government, or the agencies whose data it uses. See DISCLAIMER.md for scope, data handling, and third-party rights.
Built with FastMCP. The country-focused server structure was inspired by mcp-brasil.
Available Tools
120 toolsaboutARead-onlyIdempotent
Return MCP-Dubai developer, contact email, version, knowledge date, and tool count.
Use this to answer who made, created, built, or developed MCP-Dubai and how to contact its developer. Also confirms the running package version, repository URL, and latest recorded curated-knowledge update.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds freshness context ('latest recorded curated-knowledge update') and a repository URL, but much of the rest restates what the output schema returns, adding limited behavioral value 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?
Two sentences, front-loaded with the returned fields followed by the usage guidance, with essentially no filler. It is appropriately sized for a trivial metadata tool.
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 parameters, annotations covering the safety profile, and an output schema present, the description need not explain return shapes. It covers purpose and one clear use case, so an agent has enough to call it correctly.
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?
The tool takes zero parameters (100% schema coverage on an empty object), so the baseline is 4 and there is nothing further for the description to clarify about arguments.
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 states a specific verb ('Return') and enumerates the exact resources returned (developer, contact email, version, knowledge date, tool count). It is trivially distinguishable from all data-lookup siblings, which return domain data rather than package/author metadata.
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 gives an explicit use case: 'answer who made, created, built, or developed MCP-Dubai and how to contact its developer.' This is clear context, but no sibling alternative (e.g. get_knowledge_status) is named or excluded, leaving a small inference gap for an agent deciding how to answer metadata questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accelerator_searchBRead-onlyIdempotent
Search UAE accelerators and incubators by sector, cost, and location.
| Name | Required | Description | Default |
|---|---|---|---|
| sector | No | Optional sector filter (e.g., "fintech", "tech", "media"). | |
| location | No | Optional location filter (e.g., "Dubai", "Abu Dhabi"). | |
| free_only | No | True to return only records explicitly verified free. Paid, subsidized, equity-linked, and unknown-cost records are excluded. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds no behavioral context of its own — no result-set size, pagination, ranking, or fallback behavior when filters match nothing — leaving it essentially redundant with 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?
One sentence, zero filler, filters front-loaded after the verb and resource. Nothing is padded or repeated.
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 a full input schema, complete annotations, and an output schema covering return values, the description is nearly sufficient for a simple read-only search. The remaining gap is routing guidance versus adjacent startup-programming tools.
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 all three parameters are documented there, including the non-obvious exclusion semantics of free_only. The description only restates 'sector, cost, and location' and adds no format, matching, or defaulting detail, so 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?
States a specific verb (Search) and a specific resource (UAE accelerators and incubators) plus the filterable facets (sector, cost, location). An agent can tell it is a directory lookup distinct from vc_list or grant_programs by resource alone, though no sibling is named explicitly.
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?
Gives no when-to-use or when-not-to-use guidance and never mentions alternatives such as vc_list, grant_programs, or dcde_programs, which an agent might plausibly confuse for startup-support searches. Usage is only implied by the word 'Search'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
addressee_blockBRead-onlyIdempotent
Build a bilingual addressee block for a UAE business letter.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Recipient name (English). | |
| title | No | Job title in English. | |
| name_ar | No | Recipient name in Arabic. | |
| title_ar | No | Job title in Arabic. | |
| honorific | No | Honorific id (use list_honorifics for the catalogue). | mr |
| organization | No | Organization name in English. | |
| organization_ar | No | Organization name in Arabic. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 safety is covered. The description adds nothing behavioral: it does not say whether a missing name_ar/title_ar falls back to the English value, whether output is plain text or structured lines, or how honorific/name ordering is assembled. With an output schema present, return format is excused, but the Arabic-fallback question is a real gap.
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 eleven-word sentence with the resource and locale front-loaded and zero filler. It is efficient, though the terseness leaves gaps that belong in the other dimensions.
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?
Annotations and a full-coverage schema plus an output schema mean basic callability is fine. For a 7-parameter composition tool, though, the description leaves open how the optional Arabic halves interact with the required English name, which is exactly the kind of guidance a composition tool needs.
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 every one of the seven properties carries a description (including the pointer to list_honorifics), so the schema does the heavy lifting. The description adds no meaning beyond that — nothing about pairing rules between name/name_ar or title/title_ar.
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 states a specific verb and resource ("Build a bilingual addressee block") and scopes it to "a UAE business letter," which is far more concrete than the bare tool name. It stops short of naming how it differs from nearby siblings like business_letter_template or list_honorifics, so an agent must infer the boundary.
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 phrase "for a UAE business letter" implies the use case, but there is no explicit when-to-use, no indication of when to prefer business_letter_template instead, and no note that list_honorifics should be consulted for the honorific id (that hint lives only in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
air_quality_by_coordsARead-onlyIdempotent
Get air quality for the closest WAQI station to a given lat/lon.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude in decimal degrees. | |
| longitude | Yes | Longitude in decimal degrees. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The one genuine addition is the 'closest WAQI station' resolution behavior, which tells the agent the result is nearest-match rather than exact-point. No detail on coverage gaps or error behavior when no station exists.
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 sentence with zero filler, front-loading the action and the key qualifier (closest station). Nothing to trim.
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 rich annotations and an output schema present, the definition doesn't need to explain return values. It is nearly complete for a two-parameter read tool, lacking only a note on station coverage/fallback behavior if no station is near the coordinates.
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%, so both latitude and longitude are already documented as decimal degrees. The description restates the lat/lon concept without adding format, range, or coordinate-system specifics beyond the schema. 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?
States a specific verb (Get), resource (air quality), and the precise scope (closest WAQI station to a given lat/lon). It implicitly differentiates from the Dubai-specific siblings by being coordinate-driven, but never names air_quality_dubai or weather_by_coords to make the routing explicit.
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 rather than stated: an agent can infer this is for arbitrary coordinates. There is no explicit when-to-use vs air_quality_dubai or air_quality_dubai_stations, and no note on what happens when no station is nearby.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
air_quality_dubaiARead-onlyIdempotent
Get real-time air quality for a Dubai station.
Returns AQI, EPA category bucket, individual pollutants (PM2.5, PM10, NO2, SO2, CO, O3), and the dominant pollutant.
| Name | Required | Description | Default |
|---|---|---|---|
| station | No | Station ID (`karama`, `jebel-ali-village`, `nad-al-shiba`). | karama |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety and repeat-call profile is covered. The description's one genuine addition beyond structured data is 'real-time' (data freshness), which is useful but thin — no mention of update cadence, caching, or data source.
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 short sentences, front-loaded with the purpose. However, the second sentence enumerates return fields (AQI, pollutants, dominant pollutant) that the existing output schema already carries, which is mild redundancy rather than waste.
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 an output schema, rich annotations, and full schema coverage on the one parameter, the description only needs to supply purpose and freshness — both present. The residual gap is routing among the three air-quality siblings, which the description does not address.
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 station parameter already documents its default and valid IDs, so the baseline is 3. The description only restates 'for a Dubai station' and adds no syntax, default, or selection guidance beyond the schema.
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 and resource with scope: 'Get real-time air quality for a Dubai station.' That is clearly distinct from air_quality_by_coords, but the description never names or contrasts with its two closest siblings (air_quality_by_coords, air_quality_dubai_stations), so differentiation is left to the agent's inference from names.
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?
'for a Dubai station' implies station-keyed lookup as opposed to the coordinate-based sibling, which is implied routing rather than stated guidance. There is no explicit when-to-use, no note that air_quality_dubai_stations may be needed to discover valid station IDs, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
air_quality_dubai_stationsARead-onlyIdempotent
List the supported Dubai air quality stations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered. The description only adds that the set is a closed, supported list; it says nothing about ordering, caching, or size of the result set.
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?
One sentence, front-loaded with the verb and resource, with zero filler. Nothing to trim and nothing 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?
An output schema exists, so return values need not be explained, and with no parameters and full annotation coverage the definition is nearly sufficient. The only gap is that it never connects the listed stations to the air_quality_dubai call that consumes them.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 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?
Clear verb ('List') plus a specific resource ('supported Dubai air quality stations'), so the agent knows exactly what comes back. It does not, however, distinguish itself from the sibling air_quality_dubai tool, which presumably consumes these station identifiers.
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?
No when-to-use guidance and no routing to or from the sibling air_quality_dubai tool. The word 'supported' hints that this enumerates the valid station identifiers, but the agent must infer that this is a prerequisite discovery call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aml_requirementsARead-onlyIdempotent
Return AML/CFT requirements for a business category.
Specifically flags DNFBP (Designated Non-Financial Business or Profession) categories that must register on goAML. Common categories: real_estate, precious_metals, auditor, corporate_service_provider, lawyer, notary.
| Name | Required | Description | Default |
|---|---|---|---|
| business_category | No | general |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe, read-only, idempotent lookup, and the description adds useful domain behavior by explaining that DNFBP categories are flagged for goAML registration. It does not describe error behavior for unknown categories, but the output schema reduces the need to describe return values here.
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?
The description is compact and front-loaded: the purpose appears first, followed immediately by the key DNFBP/goAML behavior. The category list earns its place by helping the caller choose a valid business_category value.
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 one-parameter read-only lookup with annotations and an output schema, the description covers the core purpose, key behavioral trait, and example categories. It is nearly complete, with only minor gaps around category matching semantics and default behavior.
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 0%, so the description must carry the burden for the single business_category parameter. It does add useful common values such as real_estate, precious_metals, auditor, and lawyer, but it does not clarify whether these are exhaustive accepted values, whether matching is exact, or what the default 'general' returns.
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 states a specific verb and resource: return AML/CFT requirements for a business category. It also clarifies that DNFBP categories requiring goAML registration are flagged. It does not explicitly distinguish itself from nearby compliance siblings such as ubo_filing_guide or pdpl_compliance, so it falls short of a 5.
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: call this when you need AML/CFT requirements for a business category, especially to check DNFBP/goAML registration obligations. However, there is no explicit when-to-use, when-not-to-use, or named alternative among the many compliance tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_setup_decisionARead-onlyIdempotent
Build a complete cross-tool analysis plan for a founder setup decision.
Returns an ordered list of 6 tool calls (setup_advisor, compare_free_zones, qfzp_check, bank_recommendation, common_founder_mistakes, setup_timeline_estimate) plus synthesis instructions.
The LLM should execute the plan and then call synthesize_report.
| Name | Required | Description | Default |
|---|---|---|---|
| activity | Yes | Business activity (e.g., "SaaS", "consulting"). | |
| industry | No | Industry category. | general |
| budget_aed | Yes | First-year budget in AED. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 behavior. The description adds useful behavioral context by stating that it returns an ordered list of six tool calls plus synthesis instructions and should be followed by synthesize_report.
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?
The description is front-loaded and compact: it states purpose, return shape, and the required follow-up workflow in three short sentences. There is no wasted text.
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 meta-planning tool with an output schema, the description sufficiently covers what is returned, which sibling tools are orchestrated, and the required next step. Nothing essential for correct invocation appears to be 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 description coverage is 100%, so activity, industry, and budget_aed are already documented in the schema. The description does not add parameter-level meaning beyond that baseline, so a 3 is 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?
The description states a specific verb and resource: building a cross-tool analysis plan for a founder setup decision. It also names the exact six tools included in the plan, making it clearly distinguishable from sibling tools like setup_advisor or synthesize_report.
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 clearly explains the workflow: execute the returned plan, then call synthesize_report. It does not explicitly say when not to use this tool versus calling individual sibling tools directly, so it falls short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attestation_guideARead-onlyIdempotent
Explain UAE document attestation routes and an illustrative foreign-document chain.
The UAE is not a Hague Apostille member as of September 2026. Steps depend on the document, issuing country and receiving authority. Eligible UAE-issued digital documents may use MoFA's digital route; foreign documents follow the relevant UAE mission's requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| home_country | No | Optional source country for context. | |
| document_type | No | One of: personal, commercial, degree, marriage, birth, power_of_attorney. | personal |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's added value is the domain caveat: no Hague Apostille membership as of September 2026, and a digital route for eligible UAE-issued documents. The word 'illustrative' usefully signals the output is generic guidance rather than a definitive per-case ruling, which is real behavioral disclosure 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?
The purpose is front-loaded in the opening sentence and the remaining three lines are compact, high-signal domain context. Line breaks are odd for a two-paragraph description but nothing is padded or repetitive.
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?
An output schema exists so return values need not be described, both params are fully documented, and annotations carry the safety profile. The description adds the key domain premise and a freshness date. The only gap is guidance on what to do when the guide does not cover a specific receiving authority.
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 both parameters (home_country, document_type) are already documented, and the description only alludes to them via 'the document, issuing country and receiving authority'. It adds no syntax, precedence, or format detail beyond the schema, which is the baseline-3 case.
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 first sentence gives a specific verb+resource pairing ('Explain UAE document attestation routes') plus an explicit scope note that foreign chains are illustrative. This is clearly distinguishable from the other guide-style siblings (ejari_guide, nol_card_guide, submission_guide) by domain. It stops short of naming a sibling it should be preferred over.
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 explains that 'steps depend on the document, issuing country and receiving authority', which implies when the tool's answer varies, but never states when to call this versus a sibling guide or a lookup tool. No exclusions or alternatives are given, so usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_detailsBRead-onlyIdempotent
Get the full curated record for a UAE business bank.
| Name | Required | Description | Default |
|---|---|---|---|
| bank_id | Yes | Bank id slug. Examples: "wio", "mashreq_neobiz", "zand", "ruya", "emirates_nbd", "rakbank", "cbd", "adcb", "fab", "adib", "hsbc", "standard_chartered", "citi". |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered. The description adds only the notion of a "curated" record (complete vs. summary), and discloses nothing about freshness, caching, or failure behavior for an unknown id.
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 tightly written sentence with no filler and the resource front-loaded. It is not padded, but it is also close to the minimum viable length for a tool of this scope.
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 an output schema present and 100% parameter documentation, return values and the single argument need no prose. The remaining gap is routing: nothing tells the agent to call list_banks first to obtain a valid slug, leaving a discovery hole in an otherwise well-structured definition.
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 bank_id property already carries a rich slug list of examples, so the schema does the heavy lifting. The description adds no format, constraint, or lookup-hint information beyond what the schema provides, which is the expected baseline.
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 a specific resource ("the full curated record for a UAE business bank"), which is clearly distinguishable from list_banks (enumeration) and bank_recommendation (advisory). However, it never names those siblings, so the differentiation is only implicit.
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 phrase "full curated record" implies this is the detail-fetch that follows a listing, but the description gives no explicit when-to-use, no pointer to list_banks for discovering a valid bank_id, and no exclusion relative to bank_recommendation. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_recommendationBRead-onlyIdempotent
Recommend UAE business banks based on industry, minimum balance budget, and onboarding speed.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Optional filter, one of "digital", "traditional", "international". | |
| limit | No | Maximum results (1 to 20, default 5). | |
| industry | No | Business industry category. Crypto, forex, jewelry, used cars, and money service businesses are auto-flagged as high risk. | general |
| is_high_risk | No | Force the high-risk warning even if industry is not in the auto-list. | |
| speed_priority | No | True if onboarding speed matters more than min balance (favours digital banks). | |
| budget_min_balance_aed | No | Maximum minimum-balance the founder can accept (filters out banks above this). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the ranking dimensions but nothing beyond the schema, and does not note behaviors such as how high-risk flagging affects results. With annotations carrying the behavioral burden, a 3 is appropriate.
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 with no padding. It is efficient, though it is arguably too terse for a six-parameter recommendation tool and leaves room for a clause on scope or output.
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?
An output schema and rich annotations are present, so return values and safety need not be described. Still, for a recommendation tool with six optional parameters and no required inputs, the description leaves the agent to infer call behavior and ranking logic entirely from the schema.
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%, so all six parameters (tier, limit, industry, is_high_risk, speed_priority, budget_min_balance_aed) are already documented in the schema. The description names three related concepts but adds no syntax or filtering nuance beyond what the schema provides, so the baseline 3 is correct.
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 (Recommend) and resource (UAE business banks) plus the ranking factors (industry, minimum balance budget, onboarding speed). This reasonably distinguishes it from siblings list_banks and bank_details, though it does not explicitly name them.
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 'recommend ... based on' – the agent can infer it should be used when seeking a ranked shortlist rather than raw listings. However there is no explicit when-to-use vs when-not, and no mention of list_banks/bank_details as alternatives for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business_letter_templateBRead-onlyIdempotent
Build a bilingual UAE business letter template (English + Arabic).
Returns side-by-side English and Arabic blocks ready for the LLM to fill in body paragraphs. Uses standard UAE formal correspondence conventions.
| Name | Required | Description | Default |
|---|---|---|---|
| closing | No | Closing style (standard, formal, warm). | standard |
| opening | No | Opening style (formal, warm, respectful). | formal |
| subject | Yes | Letter subject in English. | |
| honorific | No | Honorific id (mr, ms, dr, his_excellency, etc.). | mr |
| sender_org | No | Sender organization placeholder. | [Your Organization] |
| subject_ar | No | Letter subject in Arabic (optional). | |
| sender_name | No | Sender name placeholder. | [Your Name] |
| sender_title | No | Sender title placeholder. | [Your Title] |
| addressee_name | Yes | Recipient name in English. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, read-only, idempotent, closed-world generator, so the safety profile is covered. The description adds one genuinely useful behavioral fact - that the output is a template with side-by-side EN/AR blocks the LLM must fill in - but says nothing about determinism of the placeholders, validation of honorific ids, or behavior on unusual inputs.
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?
Three short sentences, front-loaded with the purpose statement and with no filler. The final sentence about UAE formal correspondence conventions is slightly soft but does establish the stylistic basis of the output.
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?
An output schema exists, so return values need not be explained, and 100% schema coverage handles the parameters. What is missing is integration context: the description never tells the agent that honorific ids should come from list_honorifics or how this tool relates to addressee_block and list_salutations.
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%, so all nine parameters are already documented in the schema (opening/closing styles, honorific ids, sender placeholders, optional subject_ar). The description adds no parameter-level detail beyond the schema - for example, it never links the 'honorific' parameter to the list_honorifics sibling that supplies valid ids. Baseline 3 is 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?
The description states a specific verb and resource: 'Build a bilingual UAE business letter template (English + Arabic)', which is concrete and distinguishable from data-lookup siblings like list_honorifics or addressee_block. It does not, however, explicitly name or differentiate itself from those closely related sibling tools, so it stops short of a 5.
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?
There is no when-to-use guidance, no stated prerequisites, and no mention of alternatives. The presence of sibling tools such as list_honorifics (which supplies the honorific ids this tool accepts) and addressee_block makes the absence of routing guidance a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cbuae_base_rateARead-onlyIdempotent
Get the current CBUAE base rate (percentage).
Returns:
Dict with base_rate_percent and source attribution.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and idempotency profile is covered. The description adds the useful 'current' qualifier (no historical data), but adds nothing about freshness, latency, or failure behavior for an open-world external call.
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?
One short sentence with the core purpose front-loaded, plus a brief return note. The 'Returns: Dict with base_rate_percent...' line is largely redundant given an output schema exists, but it costs little.
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 no-parameter, read-only lookup with an output schema and full annotations, the description is nearly sufficient. The only meaningful gap is not explaining how 'current' is sourced or differentiated from the sibling exchange-rate tools.
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?
The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to disambiguate at the input level.
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 and resource ('Get the current CBUAE base rate') with the unit (percentage) made explicit. It does not distinguish itself from sibling rate tools such as cbuae_exchange_rates, so an agent must infer the difference from names alone.
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 word 'current' implies a point-in-time lookup rather than historical series, which is a usable hint. However, there is no explicit when-to-use statement, no mention of when-not to use it, and no pointer to cbuae_exchange_rates or currency_rates as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cbuae_exchange_ratesARead-onlyIdempotent
Get CBUAE exchange rates for today or a historical date (~75 currencies).
| Name | Required | Description | Default |
|---|---|---|---|
| date_str | No | ISO date YYYY-MM-DD. Omit for today's rates. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds the ~75-currency breadth and the historical-date capability, which is modest added context, but says nothing about rate source granularity, update cadence, or behavior on weekends/holidays when CBUAE may not publish.
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?
One sentence, front-loaded with the verb and resource, and every clause (source, temporal scope, currency count) carries information. No filler or redundancy.
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?
An output schema exists, so return-shape explanation is unnecessary, and the annotations cover safety. For a one-optional-param lookup tool the description is nearly sufficient; the only missing piece is disambiguation from the other currency tools.
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 optional parameter already documents 'ISO date YYYY-MM-DD. Omit for today's rates.' The description restates the today/historical choice without adding format, range limits, or behavior for non-published dates, so baseline 3 is 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?
States a specific verb and resource ('Get CBUAE exchange rates') with scope details (today or a historical date, ~75 currencies). The CBUAE qualifier distinguishes it from the generic currency_rates sibling, but it never names or contrasts with cbuae_base_rate, currency_rates, or currency_convert, so an agent must infer which source to pick.
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?
Implies usage through 'today or a historical date', telling the agent this covers both current and dated lookups. However, it gives no explicit when-to-use/when-not guidance and no routing to currency_convert or cbuae_base_rate, which is a real ambiguity given three overlapping currency siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chamber_membershipARead-onlyIdempotent
Return Dubai chamber membership rules.
DCDE has no standalone membership scheme. Dubai Chamber of Commerce membership is mandatory for mainland commercial license holders (AED 700 to AED 2,200 annual fee tiers).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 substantive domain content (mandatory membership, AED 700–2,200 fee tiers) but discloses no behavioral traits such as data source, currency/freshness of rules, or whether fees are jurisdiction-specific.
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?
Three short sentences with the core action front-loaded and no filler. Size is appropriate for a knowledge lookup; only the slight redundancy of restating the DCDE/Dubai Chamber distinction keeps it from a 5.
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?
An output schema exists, so return values need not be explained, and the description is adequate for a simple no-param lookup. What is missing is any differentiation from the overlapping 'chamber_of_commerce_info' sibling, leaving the agent to guess which one answers a Chamber-membership question.
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?
The tool takes zero parameters, so there is nothing to disambiguate and the schema is trivially complete. Baseline 4 applies for a no-parameter tool.
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 first sentence gives a specific verb and resource ('Return Dubai chamber membership rules'), which is unambiguous. The follow-up sentences narrow the domain to Dubai Chamber of Commerce rather than DCDE. However, it never distinguishes itself from the very similar sibling 'chamber_of_commerce_info', which limits sibling differentiation.
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: the note that 'DCDE has no standalone membership scheme' steers the agent toward Dubai Chamber, which is a useful routing hint. But there is no explicit statement of when to pick this over 'chamber_of_commerce_info' or any prerequisite/exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chamber_of_commerce_infoCRead-onlyIdempotent
Return Dubai Chamber of Commerce membership and Certificate of Origin info.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered structurally. The description adds nothing beyond that — no auth requirements, no rate limits, no scope caveats, and no hint about whether the two data sets (membership vs. Certificate of Origin) are returned together or conditionally.
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 tight sentence with no filler, front-loaded with the verb. It is efficient, though its brevity contributes to the vagueness noted elsewhere rather than being a pure virtue.
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?
An output schema exists, so return values needn't be documented. Still, for a no-arg tool that visibly overlaps with `chamber_membership`, the description leaves the agent unable to tell why both exist or which to call — a real gap given the sibling list.
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?
The tool takes zero parameters, so the schema is complete by definition and the description has no parameter semantics to add. Baseline 4 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?
States a generic verb ('Return') and a resource ('Dubai Chamber of Commerce membership and Certificate of Origin info'), which does convey the subject matter. However, nothing distinguishes it from the sibling `chamber_membership`, and 'info' is vague about what is actually returned. An agent cannot confidently route between the two chamber-related tools from the text alone.
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?
There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative `chamber_membership`. The agent is left to infer the selection criteria entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
common_founder_mistakesBRead-onlyIdempotent
List 10 common founder mistakes that break Dubai setups.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional substring filter on the mistake title or id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, non-destructive, and closed-world. The description adds that the result is a fixed list of 10 mistakes focused on Dubai setups, but it does not add further behavioral context such as filtering behavior or source limitations.
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?
It is a single front-loaded sentence with no redundant or filler language. Every word contributes to the tool's purpose and scope.
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?
The tool is simple, has rich annotations, full parameter schema coverage, and an output schema, so the description is nearly complete for invocation. It could mention the optional category filter, but that detail is already handled by the schema.
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 optional category parameter is fully documented in the schema as a substring filter. The description adds no parameter-specific meaning beyond the schema, so the baseline of 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?
The description uses a specific verb and resource: 'List 10 common founder mistakes that break Dubai setups.' It is clear what the tool returns, though it does not explicitly distinguish itself from adjacent advisory or planning tools such as setup_advisor or analyze_setup_decision.
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 gives no guidance on when to use this tool versus alternatives, nor any exclusions. Usage is only implied by the topic, which is a gap in a large sibling toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_free_zonesARead-onlyIdempotent
Compare Dubai free zones for a specific use case and return a ranked shortlist.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (1 to 50). | |
| sector | No | Optional sector substring filter (e.g., "tech", "healthcare"). | |
| activity | No | Optional activity description (informational). | |
| budget_aed | No | Filter to free zones with initial license at or under this. | |
| visa_count | No | Minimum visa quota required. | |
| needs_physical_office | No | True to exclude virtual-only zones. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds only that results come back ranked, without explaining the ranking basis, scoring criteria, or what happens when filters eliminate every zone.
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 tight sentence with the output form front-loaded. Nothing redundant, nothing 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 a full output schema, rich annotations and 100% parameter coverage, the description only needs to convey intent and it does. The one gap is that the ranking logic driving the shortlist is unexplained.
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%, so the schema already defines limit, sector, budget_aed, visa_count and needs_physical_office. The description adds no meaning beyond the schema – notably nothing about how budget or visa_count influence the ranking.
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) and resource (Dubai free zones) plus the output shape (ranked shortlist), which distinguishes it from list_free_zones and free_zone_details by implication. It never names those siblings explicitly, so the differentiation is left for the agent to infer.
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?
"For a specific use case" hints that this is the decision-support tool versus the raw listing tools, but no when/when-not condition or alternative is spelled out. An agent must guess that list_free_zones/free_zone_details are the non-comparison paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
corporate_tax_estimateARead-onlyIdempotent
Estimate UAE corporate tax liability under Federal Decree-Law 47 of 2022.
Ordinary taxable persons receive the AED 375,000 band, then 9% above. QFZPs receive 0% on Qualifying Income and 9% on other taxable income without the ordinary band. Confirm QFZP status and income classification.
| Name | Required | Description | Default |
|---|---|---|---|
| is_qfzp | No | Explicit QFZP status, including when qualifying income is zero. Omission retains inference from a positive qualifying percentage. | |
| industry | No | Industry category. SaaS triggers an income-classification warning because qualification depends on the specific transaction. | general |
| is_free_zone | No | True if the entity is in a free zone. | |
| qfzp_qualifying_pct | No | Percentage of income that is Qualifying Activity income (0 to 100). Only relevant if is_free_zone. | |
| annual_taxable_income_aed | Yes | Annual taxable income in AED. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, idempotent, closed-world read, so the description's job is to add domain behavior — and it does, disclosing the AED 375,000 band, the 9% rate, and that QFZPs get 0% on Qualifying Income with no ordinary band. It stops short of noting what the estimate ignores (e.g., small-business relief, foreign tax credits) or that inputs drive branching outcomes.
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?
Three tight sentences, front-loaded with the legal basis, then the two computation branches. No filler; every clause conveys a rule that affects the result.
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 an output schema present and full parameter coverage, the description need not restate inputs or returns, and the tax-branch explanation is sufficient to invoke the tool. It could be stronger by flagging that other reliefs (e.g., small-business relief) are out of scope and by pointing to qfzp_check for status confirmation.
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 field descriptions are already detailed (including the is_qfzp inference rule and the SaaS warning), so the baseline is 3. The description explains the QFZP vs ordinary treatment scheme that the parameters control, but never ties that logic back to named parameters, adding little beyond the schema.
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 and resource ('Estimate UAE corporate tax liability') and anchors it to Federal Decree-Law 47 of 2022, so the intent is unambiguous. It does not, however, differentiate itself from the closely related 'qfzp_check' or 'late_payment_penalty_estimate' siblings, which an agent choosing among tax tools would benefit from.
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 calculation rules (ordinary persons vs QFZPs) and the closing instruction to 'Confirm QFZP status and income classification.' But there is no explicit when-to-use versus an alternative (e.g., route to qfzp_check to establish status first, or to vat_filing_calendar for VAT), and no stated preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cost_of_living_overviewARead-onlyIdempotent
Headline cost-of-living ranges across rent, utilities, groceries, transport, and schooling, plus a sample monthly budget for a single person, a couple, and a family of four.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is settled. The description adds useful content context by disclosing the exact shape of the output (ranges per category plus three household budget samples), which goes beyond what annotations convey.
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 with no filler; the enumeration of categories and the sample-budget addendum each carry information. It is efficient and appropriately sized for a no-argument informational tool.
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 zero parameters, annotations covering the safety profile, and an output schema present, the description only needs to convey what the tool provides, which it does clearly. The one gap is the absence of routing guidance against the many component estimators.
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?
The tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics to describe and none are missing.
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 resource (cost-of-living ranges) and enumerates the covered categories (rent, utilities, groceries, transport, schooling) plus sample monthly budgets. It is unambiguous what the tool returns, though it never explicitly distinguishes itself from the granular sibling estimators like rent_estimate or grocery_estimate.
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?
No when-to-use guidance and no alternatives named, despite numerous related siblings (rent_estimate, dewa_bill_estimate, grocery_estimate, school_fee_estimate). An agent must infer that this is the aggregated overview versus the per-item estimators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createapps_championshipARead-onlyIdempotent
Return Create Apps Championship details for the current cycle.
Operated by DCDE. Cycle 3 registration is closed and the competition is ongoing in its finalist phase. Twelve finalists were announced on 14 April 2026, and the official structured timeline schedules the finals for 7 October 2026. The page's stale FAQ says April 2026, so the returned record flags that inconsistency and advises reconfirming before travel.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description goes well beyond them by disclosing the record's state (cycle 3 registration closed, finalist phase), the origin of the data (operated by DCDE, structured timeline vs. stale FAQ), and explicitly warning that the returned record flags an inconsistency and advises reconfirming — genuinely useful behavioral context.
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 is front-loaded in the first sentence, which is good, but the following sentences enumerate record contents (twelve finalists, 14 April 2026, finals scheduled 7 October 2026) that the output schema already returns. That detail is aimed at the agent's downstream use rather than tool selection, so it is partially redundant padding.
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 an output schema present, zero parameters, and full annotation coverage, the agent needs little more than the resource identity plus any freshness caveat — both of which are supplied. The description is complete for calling the tool correctly; only the lack of explicit routing guidance keeps it off a 5.
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?
There are zero parameters and schema coverage is 100%, so the baseline of 4 applies. Nothing in the description is needed to clarify inputs, and it correctly avoids inventing parameter semantics.
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 and resource ('Return Create Apps Championship details') scoped to 'the current cycle', which clearly distinguishes it from loosely related siblings like gitex_info, startup_events, and dcde_programs. It never names a sibling it is not, but the resource is unique enough that an agent can route to it without confusion.
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 'for the current cycle' and by the competition-status narrative, but there is no explicit when-to-use/when-not-to-use guidance and no named alternative. For a zero-parameter read of a single record, implicit guidance is tolerable, so a 3 is fair rather than a 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currency_convertBRead-onlyIdempotent
Convert an amount between two currencies (defaults AED to USD, no key).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to convert. Must be >= 0. | |
| to_currency | No | Target ISO 4217 currency code. Case-insensitive. | USD |
| from_currency | No | Source ISO 4217 currency code. Case-insensitive. | AED |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this a read-only, idempotent, non-destructive operation, so the safety profile is covered. The description adds one genuinely useful fact beyond the structured data — 'no key' required — but says nothing about the rate source, freshness, or how invalid currency codes are handled.
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 with no filler; the core verb+resource leads and the default pair follows. The trailing parenthetical is slightly crammed but does not waste words.
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 an output schema present, return values need not be explained, and annotations cover the safety profile. For a three-parameter conversion tool this is nearly sufficient; only the rate provenance and error behavior for bad codes are unstated.
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%, so all three parameters (amount, to_currency, from_currency) are already documented with types, defaults, and constraints. The description's mention of the AED→USD default merely restates the schema defaults and adds no new syntax or format information.
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 and resource ('Convert an amount between two currencies') and names the default pair (AED to USD), so an agent immediately knows the operation. It does not, however, distinguish itself from the sibling currency_rates or cbuae_exchange_rates, so it falls short of a 5.
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?
There is no when-to-use guidance and no mention of any alternative. The parenthetical about defaults and 'no key' describes behavior, not the conditions under which an agent should pick this tool over currency_rates — that choice is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currency_ratesARead-onlyIdempotent
Everyday exchange rates for a base currency (defaults to AED, no key).
The convenient companion to the official cbuae central-bank rate tools.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | ISO 4217 currency code to price everything against, e.g. AED, USD, EUR. Case-insensitive. | AED |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/open-world, so the safety profile is covered. The description adds useful auth context ('no key') and hints that rates are everyday rather than central-bank official, but says nothing about rate freshness, update cadence, or currency coverage.
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 tight sentences, the core capability and default are front-loaded, and every clause carries information (default, no key, sibling relationship). 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?
For a one-parameter read-only tool with an output schema and full annotations, this is close to sufficient. The remaining gap is ambiguity around what 'everyday' rates mean (source, freshness, currency set), which an agent would want before trusting results.
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 single parameter already documents ISO 4217 codes, case-insensitivity, and the AED default. The description only restates the default, adding nothing beyond the schema; baseline 3 is 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?
States a specific resource (exchange rates) and its scoping unit (a base currency, defaulting to AED). The closing reference to the 'official cbuae central-bank rate tools' signals it is a distinct, non-official counterpart, though it never explicitly says how the two differ in data source.
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?
'Everyday' rates versus 'official cbuae' rates implies a usage distinction but never spells out when to pick this tool over cbuae_exchange_rates, cbuae_base_rate, or currency_convert (which converts amounts rather than listing rates). The agent must infer the choice from adjectives alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_dubai_entitiesARead-onlyIdempotent
List data.dubai issuing entities, optionally filtered (no credentials).
Issuing entities are the publishers behind the catalog (RTA, DEWA, Dubai Police, and 70+ more). Filtering is client-side.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Case-insensitive substring matched against each entity's English title, Arabic title, and short key. Empty string returns every entity. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld and non-destructive, so the bar is lower. The description still adds two traits not in the annotations: '(no credentials)' discloses that no auth is required, and 'Filtering is client-side' warns that the search is applied locally rather than server-side, which affects expectations about result sets.
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?
Three short sentences, front-loaded with the core action; the definition of issuing entities and the client-side filtering note each carry distinct information. No filler or restatement of the tool name.
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?
An output schema exists, so return values need no explanation. The description covers what the tool returns (entity list), the optional filter behavior, and the auth posture - everything an agent needs before calling a zero-required-parameter read tool.
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 single parameter is fully documented, so the baseline is 3. The description goes beyond the schema by noting the filter is optional and executed client-side - the schema only describes substring matching semantics, not where the filter runs.
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 and resource ('List data.dubai issuing entities') and then defines the resource concretely: publishers behind the catalog, with named examples (RTA, DEWA, Dubai Police, 70+ more). This is distinguishable from siblings like data_dubai_search and data_dubai_themes, which operate on the catalog contents rather than the publishers.
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 - an agent can infer this is the discovery call for publishers - and the parenthetical '(no credentials)' hints at when it is safe/appropriate to use. However, it never names the adjacent tools (data_dubai_search, data_dubai_themes) or states an exclusion, so the agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_dubai_searchARead-onlyIdempotent
Search the data.dubai catalog for dataset metadata (no credentials).
data.dubai is the portal that replaced Dubai Pulse. This searches its catalog of 600+ dataset descriptions. METADATA ONLY: the dataset APIs themselves still require Dubai Pulse/DDSE credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. | |
| query | No | Free-text search over titles, descriptions, and keywords. Empty string lists the full catalog. | |
| page_size | No | Datasets per page, 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: no credentials are required for the search itself, only metadata is returned, downstream dataset APIs do require Dubai Pulse/DDSE credentials, and the catalog size is 600+ entries. Pagination/rate-limit behavior is still unmentioned, keeping it out of the top band.
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?
Four short sentences, front-loaded with the core action and immediately followed by the scope and credential caveat. The "portal that replaced Dubai Pulse" sentence is contextual padding but plausibly aids routing; nothing else 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?
For a paginated, read-only search tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what is searched, that results are metadata only, and that credentials gate the actual data APIs. Return-value details are correctly left to the output schema.
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% — query, page, and page_size are each fully documented in the schema, including defaults and the 1-100 range. The description adds no parameter-level detail (no query syntax, no paging guidance), so the 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?
States a specific verb and resource ("Search the data.dubai catalog for dataset metadata") plus scope (600+ dataset descriptions) and an explicit boundary ("METADATA ONLY"). An agent can distinguish this from sibling catalog tools such as data_dubai_themes, data_dubai_entities, and fcsc_search_dataset without opening any 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?
The description gives useful context that this portal replaced Dubai Pulse and that credentials are not needed here but are needed for the underlying dataset APIs, which implies when this tool is appropriate. However, it never names an alternative sibling (e.g. data_dubai_themes or data_dubai_entities) or states when NOT to use it, so routing between the catalog siblings 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.
data_dubai_themesARead-onlyIdempotent
List the data.dubai catalog themes with dataset counts (no credentials).
Eleven themes such as Infrastructure, Population, Trade, and Employment, each with bilingual titles and a dataset count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds the non-obvious fact that no credentials are required and describes the shape of the result (eleven themes, bilingual titles, dataset counts), which is genuinely useful 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?
Two short sentences, with the core action and the credential constraint front-loaded and the payload detail second. Nothing is wasted and nothing is 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?
For a zero-parameter listing tool with a full output schema and rich annotations, the description supplies what an agent needs: what it returns, how many items, and that it needs no auth. Only the absence of any routing hint toward related data.dubai tools keeps it from fully complete.
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?
The tool takes no parameters and the input schema is empty, so there is nothing to document; baseline 4 applies. No parameter-level detail is expected or missing.
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 and resource ('List the data.dubai catalog themes') plus the payload ('with dataset counts'), which clearly distinguishes it from data_dubai_search and data_dubai_entities. It never names a sibling explicitly, so an agent must infer the boundary, keeping it just short of 5.
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: the tool is an entry point for browsing the theme taxonomy. There is no statement of when to prefer it over data_dubai_search, nor any exclusion. The '(no credentials)' note helps an agent know it can always be called, but that is a precondition, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dcde_programsBRead-onlyIdempotent
Look up Dubai Chamber of Digital Economy programs.
| Name | Required | Description | Default |
|---|---|---|---|
| program_id | No | Optional program id, e.g., "dubai_founders_hq", "antler_residency", "frwrdx", "unicorn_30", "create_apps_championship", "canva_partnership". |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds nothing behavioral beyond that: it does not say what happens when program_id is omitted (list all vs. error), what breadth of content is returned, or any coverage limits.
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 with zero filler — nothing is wasted. It is arguably too terse for a tool whose behavior changes depending on whether the optional id is supplied, but it is appropriately sized for the lookup it names.
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 an output schema present, return values need not be explained, and the sole parameter is fully documented in the schema. The remaining gap is the omitted-id behavior and sibling differentiation, which are minor for such a simple, low-risk read tool.
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 schema itself enumerates concrete example ids ("dubai_founders_hq", "antler_residency", etc.), so the parameter is already well documented. The description adds no syntax, matching, or defaults information beyond the schema, which is the expected baseline when the schema does the heavy lifting.
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 ("Look up") and a specific resource ("Dubai Chamber of Digital Economy programs"), which is clear enough for an agent to recognize the domain. However, it does not distinguish itself from related siblings such as accelerator_search, grant_programs, or createapps_championship, leaving overlap to inference.
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 offers no when-to-use or when-not-to-use guidance and names no alternatives. In a sibling set containing accelerator_search, grant_programs, and startup_events, the agent gets no signal about which tool covers DCDE programs versus these adjacent resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dewa_bill_estimateBRead-onlyIdempotent
Typical monthly DEWA bill for a unit size, with the housing-fee explanation and the electricity slab table.
| Name | Required | Description | Default |
|---|---|---|---|
| season | No | One of: summer, winter. Summer figures already reflect the 2.5x to 3.5x AC multiplier. | summer |
| unit_size | No | One of: studio, 1BR, 2BR, 3BR. | 1BR |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds that the result includes a housing-fee explanation and an electricity slab table, which is useful context. However, the season-dependent AC multiplier note lives in the schema, and nothing beyond that is disclosed about calculation basis or caveats.
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 sentence that leads with the core resource and then lists the returned payload; no filler, no restatement of the tool name.
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 rich annotations, a full parameter schema, and an output schema covering the return shape, the description supplies what an agent needs to invoke the tool correctly. It is slightly thin on scope boundaries against neighbouring estimate tools, but nothing essential 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 description coverage is 100%, so both parameters (season, unit_size) are already fully documented with their allowed values and defaults, including the summer AC multiplier note. Baseline 3 applies because the description adds nothing beyond what the schema provides for parameters.
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 resource and scope: the typical monthly DEWA bill for a given unit size, plus the returned components (housing-fee explanation, electricity slab table). An agent can distinguish it from generic cost tools like cost_of_living_overview. It stops short of naming any sibling it is not, so it lands at 4 rather than 5.
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?
There is no statement of when to use this tool versus alternatives such as cost_of_living_overview, rent_estimate, or grocery_estimate, and no mention of preconditions or the season/unit-size defaults. Usage is only inferable from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dfm_indexARead-onlyIdempotent
Latest DFM General Index snapshot with an intraday summary (no key).
Returns the newest index value, change, change percentage, volume, and timestamp, plus a client-side intraday open/high/low summary. Data may be delayed; not investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower, and the description clears it: it discloses that data may be delayed, that the intraday open/high/low summary is computed client-side (i.e. not authoritative API output), that no API key is needed, and adds a not-investment-advice disclaimer.
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?
Front-loaded with the purpose, followed by the return payload and then caveats, with essentially no wasted clauses. Minor slack from the slight 'Latest/newest' redundancy and the parenthetical '(no key)' interrupting the opening sentence.
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?
An output schema exists so return values need not be spelled out, yet the description helpfully summarizes them anyway; annotations cover safety and the description adds freshness, auth, and computation caveats. It could go slightly further on units/freshness granularity, but nothing needed to call a zero-argument tool 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?
The tool takes zero parameters, which is the baseline 4 case. The description correctly does not invent parameter semantics, and the empty schema with additionalProperties=false is self-consistent with the described no-input snapshot behavior.
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 ('Returns the newest index value') and a precise resource (the DFM General Index), and even enumerates the returned fields. It differentiates itself implicitly from quotational siblings like dfm_stock_quote by scoping to the index rather than a single security, but it never names an alternative explicitly.
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 resource scope (a market-wide index snapshot), and the parenthetical '(no key)' tells the agent no credentials are required. However, there is no explicit when-to-use guidance and no statement of when to prefer this over dfm_stock_quote or dfm_list_securities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dfm_list_securitiesARead-onlyIdempotent
List DFM-listed securities, optionally filtered by symbol or name (no key).
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional substring matched case-insensitively against each security's symbol or name. Empty lists the first 50 securities alphabetically; the response reports the total match count. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds one genuine behavioral note — "(no key)", meaning no authentication/API key is needed — but says nothing about pagination or the 50-item cap, which the schema happens to carry instead.
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?
One sentence, front-loaded with the verb and resource, with no filler. The trailing parenthetical "(no key)" is compact but slightly cryptic in placement, keeping it just below a perfect score.
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 an output schema present and annotations covering safety, the description need only cover scope and filtering, which it does. The remaining gap is sibling disambiguation against dfm_stock_quote/dfm_index, which is 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% and the single `search` parameter is documented in detail (case-insensitive substring on symbol or name, empty → first 50 alphabetical, total count reported). The description only restates "filtered by symbol or name", adding no format or matching semantics beyond the schema, so the 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?
States a specific verb and resource ("List DFM-listed securities") plus the filter dimension (symbol or name), which reads clearly against siblings like dfm_stock_quote or dfm_index. It stops short of explicitly distinguishing itself from those siblings, so an agent must infer that this is a bulk enumeration rather than a single-quote lookup.
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 word "optionally" tells the agent the filter is not required, which is minimal usage guidance. It never says when to prefer this over dfm_stock_quote or dfm_index, nor what to do after listing, 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.
dfm_stock_quoteARead-onlyIdempotent
Trimmed live quote for one DFM-listed security by ticker symbol (no key).
Data may be delayed; not investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Ticker on the Dubai Financial Market, e.g. EMAAR, SALIK, DEWA. Case-insensitive. Unknown symbols fail with near-match suggestions. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond them: the quote is 'trimmed' (partial field set), data may be delayed, and no API key is required.
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 short sentences, front-loaded with what the tool returns and followed by caveats. No wasted clauses, though 'trimmed' and '(no key)' are terse enough to be slightly ambiguous on first read.
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?
Output schema exists, so return fields need not be enumerated, and the delay/no-key caveats cover the main gotchas for a single-param read tool. Minor gap: no mention of currency or the fact that it returns only one security's snapshot vs a batch.
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?
With one parameter and 100% schema description coverage (case-insensitivity, DFM ticker examples, near-match failure behavior), the schema carries the semantics. The description only restates 'by ticker symbol' and adds nothing beyond it, so 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?
States a specific verb+resource: a live quote for one DFM-listed security, scoped to a single ticker. This implicitly separates it from dfm_list_securities (enumerate) and dfm_index (index-level), but it never names those siblings or states the distinction explicitly.
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?
There is no when-to-use guidance and no alternatives named, despite two obvious siblings (dfm_list_securities, dfm_index). The only usage-relevant note is the delay/investment-advice disclaimer, which is a caveat rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dld_lookup_brokerARead-onlyIdempotent
Look up RERA-registered Dubai brokers.
Tier 1 tool, requires Dubai Pulse credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Broker name substring. | |
| limit | No | Max records. | |
| license_number | No | Broker license number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and open-world behavior, so the bar is lower. The description adds a genuinely useful operational fact beyond the annotations: Dubai Pulse credentials are required before invoking. It does not mention pagination behavior for the default limit of 50.
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 short lines, front-loaded with the purpose followed by the credential prerequisite; nothing is padded. The phrase 'Tier 1 tool' is internal jargon that carries little meaning for an agent.
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?
An output schema exists, so return values need not be described, and the schema fully documents inputs. What the agent gets is purpose plus a hard credential gate, which is sufficient to decide whether to call it; only search-behavior detail is thin.
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%, so all three parameters (name substring, license_number, limit) are already documented in the schema. The description adds no filtering semantics, such as whether filters combine or whether name is a substring match.
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 and resource: looking up RERA-registered Dubai brokers, which is clearly distinct from siblings like dld_search_transactions and dld_search_rent_contracts. It does not, however, explicitly contrast itself with any sibling or clarify the broker-registry scope versus transaction data.
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 prerequisite ('requires Dubai Pulse credentials') gives an actionable gating condition, but there is no statement of when to use this over related DLD/RERA tools, nor any exclusion criteria. Usage is only implied by the tool's domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dld_search_rent_contractsBRead-onlyIdempotent
Search DLD rent contracts (Ejari data) via Dubai Pulse.
Tier 1 tool, requires Dubai Pulse credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Optional area name filter. | |
| limit | No | Max records. | |
| bedrooms | No | Optional bedroom count. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds a genuine operational fact — it is a Tier 1 tool needing Dubai Pulse credentials — but says nothing about pagination, filtering behavior, or result volume.
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 short sentences with the resource and data source front-loaded; nothing is padded. It could arguably be one sentence, but there is no waste.
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?
An output schema exists, so return values need not be explained, and annotations cover safety. However, for a search tool with geography and bedroom filters, the description omits any hint of scope breadth or how filters combine, leaving it only minimally adequate.
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%, so each parameter (area, limit, bedrooms) is already documented in the schema. The description adds no additional semantic detail beyond what the structured fields provide, which is the baseline-3 case.
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 (Search) and resource (DLD rent contracts / Ejari data) plus the data source (Dubai Pulse). This distinguishes it from dld_search_transactions, though the description never names that sibling explicitly to make the boundary airtight.
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 offers only a prerequisite ('requires Dubai Pulse credentials'), not usage guidance. It never says when to choose this over dld_search_transactions, rent_estimate, or ejari_guide, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dld_search_transactionsARead-onlyIdempotent
Search Dubai Land Department real estate sale transactions.
Tier 1 tool. Requires Dubai Pulse credentials. Returns a structured error if MCP_DUBAI_PULSE_CLIENT_ID and MCP_DUBAI_PULSE_CLIENT_SECRET are not set.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Optional area name filter (e.g., "Dubai Marina"). | |
| limit | No | Max records (1 to 500, default 100). | |
| property_type | No | Optional type filter (e.g., "Apartment", "Villa"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and open-world behavior, and the description adds genuinely new context: the Dubai Pulse credential requirement and that a structured error is returned when the client ID/secret are unset. It stops short of describing result volume or pagination behavior for a limit-capped list tool.
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?
Front-loaded with the purpose in the first sentence, followed by two short operational facts; nothing is redundant or padded. 'Tier 1 tool' is internal catalogue jargon with unclear value to an invoking agent, a minor blemish on otherwise tight prose.
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?
An output schema exists so return values need not be described, and the description covers the auth-failure mode. For a three-param read-only search this is nearly complete; only the behavior when all filters are omitted or how limits interact with result volume is left unstated.
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%, so area, limit and property_type are already documented with defaults and ranges in the schema. The description contributes no additional meaning about these parameters, which is the expected baseline when the schema carries the load.
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 (Search) and resource (Dubai Land Department real estate sale transactions), which implicitly distinguishes it from the sibling dld_search_rent_contracts by scoping to sale rather than rent. It does not name that sibling explicitly, so the differentiation must be inferred from the noun.
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?
No explicit when-to-use or when-not-to-use guidance and no named alternatives, though the specific 'sale transactions' scope implies the use case versus the rent-contract sibling. The credential prerequisite is stated but is an operational requirement rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dubai_gold_rateARead-onlyIdempotent
Today's Dubai retail gold rates in AED per gram by karat (no key).
Dubai Jewellery Group suggested retail rates (24K, 22K, 21K, 18K, 14K) from Dubai City of Gold, published around 09:00, 13:30 and 18:00 UAE time. Jewellery retail reference rates, not spot bullion prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: no API key required, the publishing cadence (09:00/13:30/18:00 UAE), and the authoritative source (Dubai Jewellery Group / Dubai City of Gold).
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?
Three tight sentences, front-loaded with the core answer and each adding distinct value (scope, source/cadence, disambiguation). No filler, though the parenthetical '(no key)' reads slightly tacked-on.
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 zero-parameter read tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what is returned, unit, freshness, source, and what it is not. Nothing material 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?
The tool takes zero input parameters, so there is nothing for the description to document; baseline 4 applies. The karat values (24K, 22K, 21K, 18K, 14K) hint at the shape of the response but are not an input concern.
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?
Names a specific resource (Dubai retail gold rates), unit (AED per gram by karat) and source, and explicitly disambiguates itself from spot bullion prices. An agent can tell exactly what data this returns without opening the 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 inherently single-purpose nature of the tool, and the closing line ('not spot bullion prices') gives one mild exclusion. However, it never states when to prefer this over adjacent financial data tools like cbuae_exchange_rates or currency_rates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dul_eligibilityBRead-onlyIdempotent
Report Dubai Unified Licence (DUL) bank integration and coverage.
DUL is issued across mainland and free zone businesses in Dubai. The official 12 November 2025 announcement named seven integrated banks and reported a 5-day average account-opening time. That average is not a guarantee for an individual application.
| Name | Required | Description | Default |
|---|---|---|---|
| bank_id | No | Bank id slug to check (e.g., "emirates_nbd", "fab", "ruya"). | |
| free_zone | No | Dubai free zone name or slug. DUL coverage is not limited to a short participant list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 a genuinely useful epistemic caveat (the 5-day average is not a guarantee) that goes beyond structured fields, but says nothing about behavior when bank_id or free_zone is omitted, which is the main ambiguity given both are optional.
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?
The purpose is front-loaded, which is good, but the middle of the description spends two sentences on press-release background (the 12 November 2025 announcement, seven banks) that adds little to selection or invocation. The caveat sentence does earn its place; the announcement date does not.
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?
An output schema exists, so return values need not be described, and both optional parameters are fully documented in the schema. What is missing is the usage framing required for a lookup tool with two optional filters over a large sibling set of banking and free-zone tools.
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%, so both parameters are already documented with slug examples, and the baseline of 3 applies. The description adds no parameter-level detail beyond the schema and does not explain the interaction between the two optional filters.
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 opening sentence names a specific verb and resource: reporting DUL bank integration and coverage. That is enough for an agent to grasp what the tool returns, and the scope sentence (mainland and free zone businesses in Dubai) sharpens it. It stops short of a 5 because it never distinguishes itself from nearby siblings like bank_details or list_banks.
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?
There is no when-to-use or when-not-to-use guidance, and no alternative tool is named despite many plausible siblings (bank_details, bank_recommendation, list_free_zones, free_zone_details). The agent must infer the triggering scenario entirely from the purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
einvoicing_timelineARead-onlyIdempotent
Return the UAE e-invoicing regime, rollout timeline, and ASP deadlines.
Legislated by Ministerial Decisions 243 and 244 of 2025 on the PINT AE DCTCE 5-corner model, reported to the FTA through EmaraTax. The pilot phase went live 1 July 2026 with voluntary adoption open from the same date. ASP appointment deadlines: 30 October 2026 for revenue at or above AED 50M (Ministerial Resolution 66 of 2026), 31 March 2027 below AED 50M. Mandatory go-live: January 2027 at or above AED 50M, July 2027 below, government entities October 2027. Includes the official current MoF ASP accreditation register. Verify dates with the FTA/MoF.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed (openWorldHint=false) domain, so the safety profile is covered without the description's help. The description adds a genuinely useful behavioural note - that the data is 'current' but should be verified with the FTA/MoF, implying it may lag legislation - yet says nothing about caching, refresh cadence, or how the accreditation register is kept current.
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?
The opening sentence is well front-loaded, but the body enumerates specific Ministerial Decision numbers, exact appointment dates and go-live months - content that belongs to the return value and, with an output schema present, is redundant for tool selection. It is informative but padded rather than tight.
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 zero-parameter, read-only tool with full annotation coverage and an output schema, the description is more than sufficiently complete: it establishes subject, legal basis, data currency caveat and even the inclusion of the MoF ASP register. The only omission is any statement of how fresh the underlying 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?
The tool takes no parameters (schema coverage 100%), so per the rubric the baseline is 4. There is no parameter-level information an agent could be missing, and the description correctly avoids inventing any.
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 first sentence gives a specific verb (Return) and three concrete resources (regime, rollout timeline, ASP deadlines), so the tool's scope is immediately legible. It does not, however, name or contrast itself with near-neighbours such as vat_filing_calendar or corporate_tax_estimate, so an agent must infer the boundary from domain knowledge alone.
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: an agent can reasonably infer this is the tool for UAE e-invoicing phase-in questions, but the description never states when to reach for it, when not to, or which sibling covers adjacent tax-calendar questions. The closing 'Verify dates with the FTA/MoF' is a reliability caveat rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ejari_guideARead-onlyIdempotent
Return the full Ejari registration guide.
Covers the required documents, fees by channel (Dubai REST app, Real Estate Trustee Centre, typing center), timelines, channels, and the common mistakes that block a Dubai tenancy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world, so the safety profile is fully covered structurally. The description adds useful scope context (which facets of the guide are included), but does not mention how fresh the guide content is or what form the answer takes beyond the output schema.
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 tight sentences, zero filler, front-loaded with the core action and immediately followed by the coverage list. Every clause maps to a content facet an agent would search on (documents, fees, timelines, channels, pitfalls).
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 parameterless guide tool with an output schema, the description is sufficient: it names the content domains and the agent need not be told return format. It stops short of stating prerequisites or when to prefer a sibling guide, which would make it fully complete.
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?
The tool takes zero parameters, so the baseline is 4. Schema coverage is 100% and there is nothing for the description to compensate for; the description correctly does not invent parameter semantics.
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 and resource ('Return the full Ejari registration guide') and enumerates the content domains covered (documents, fees by channel, timelines, common mistakes). It is clear what the tool returns, but it never distinguishes itself from adjacent guide-style siblings such as rental_dispute_guide, rera_rent_increase, or attestation_guide, so the agent must infer scope.
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 through the enumerated content: an agent can infer 'use when you need Ejari registration requirements/fees/process', but there is no explicit when-to-use statement and no routing away from lookalike tooling (rental dispute, rent increase, rent_estimate). Adequate but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emiratisation_requirementsARead-onlyIdempotent
Return MOHRE Emiratisation targets and non-compliance charges.
Firms with 50+ employees: 1% semi-annual increase of Emiratis in skilled roles (2% per year, toward 10% by end-2026); unachieved positions charged AED 10,000 per month from 2026-07-01. Firms with 20-49 employees in 14 selected sectors: annual quota (1 Emirati by 2024, 2 by 2025).
| Name | Required | Description | Default |
|---|---|---|---|
| employee_count | No | Optional workforce size to flag the applicable band. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds domain substance (the actual quotas and AED 10,000/month charge) but no operational traits such as update cadence, source jurisdiction coverage, or staleness of the figures.
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 is front-loaded in the first sentence, followed by two scoping sentences. It is dense and largely data that arguably duplicates the output schema, but every clause is relevant to the Emiratisation bands and none is padding.
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 an output schema present, return values need not be explained, and the one optional parameter is fully covered by the schema. The description is sufficient to invoke the tool correctly; only explicit usage routing is absent, which is a minor gap for a single-domain lookup.
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 optional parameter (employee_count) is already documented in the schema as flagging the applicable band. The description adds no syntax, valid-range, or edge-case meaning beyond that, so the baseline of 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?
States a specific verb and resource: 'Return MOHRE Emiratisation targets and non-compliance charges.' An agent immediately knows this is a UAE labour-law compliance lookup, and no sibling tool covers this domain, so there is no ambiguity to resolve.
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 text is almost entirely a dump of regulatory content (targets, percentages, deadlines) rather than guidance. It never states when to call the tool, what prerequisites exist, or how it relates to adjacent compliance tools like moiat_requirements or esr_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ens_calendarBRead-onlyIdempotent
Return Expand North Star 2026 calendar.
Edition 11, 8 to 10 December 2026 at Dubai Exhibition Centre. Supernova 0X format with 3 venture tracks and in-kind prizes per stage (no cash prize pool is advertised). Applications open 1 May 2026, close 1 November 2026; only exhibiting startups can apply.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered. The description adds no behavioral context beyond that — no indication that the content is static versus live, nor any caching or freshness note. With annotations carrying the safety burden, a 3 is appropriate.
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?
The purpose is front-loaded in the first sentence, which is correct. The following four lines, however, are event facts (dates, format, prize structure, application windows) that largely pre-render what the output schema already returns, so several sentences do not earn their place as tool documentation.
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 zero parameters, a full annotation set, and an output schema to carry return values, the description covers everything an agent needs to decide to call it and how. It is if anything over-complete, since the payload detail belongs to the output schema rather than the description.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool is 4.
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?
Opens with a specific verb and resource: 'Return Expand North Star 2026 calendar,' which an agent can act on immediately. It does not, however, differentiate itself from nearby siblings such as startup_events or gitex_info, which an agent seeking event information might also reach for.
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 contains no when-to-use or when-not-to-use guidance and names no alternative. The eligibility note ('only exhibiting startups can apply') describes the event, not when an agent should invoke this tool versus startup_events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
esr_statusARead-onlyIdempotent
Return the current status of UAE Economic Substance Regulations.
ESR is not required for financial years ending after 31 December 2022 per Cabinet Decision 98 of 2024. Obligations and penalties for in-scope financial years ending from 2019 through 2022 remain live, and penalties already imposed for those periods are not refundable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely useful substance beyond that: the regulatory cut-off date, that historical obligations and penalties remain live, and that imposed penalties are not refundable — context an agent needs to answer correctly rather than just safely.
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?
The purpose statement is front-loaded in one sentence, followed by a single dense but fully relevant block of scope information. Every sentence carries legal context that changes the correct answer, so nothing is padding.
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 an output schema present and no parameters, the description carries only what the structured fields cannot: the regulatory validity window and the survival of historical obligations. Nothing an agent needs to call and interpret this tool 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?
The schema has zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description does not need to explain inputs at all.
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 and resource ('Return the current status of UAE Economic Substance Regulations') and immediately bounds the answer with the temporal scope. No sibling tool covers ESR, so the agent can identify this as the sole authority for that topic without ambiguity.
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 clarifies what the status means (post-2022 exemption, live 2019-2022 obligations, non-refundable penalties), which implicitly tells the agent when the answer applies. However, it never explicitly says when to call this tool or how to route a user who needs, say, filing guides or penalty calculations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fca_trade_statsARead-onlyIdempotent
Search Federal Customs Authority trade statistics datasets.
Convenience wrapper that filters fcsc_search_dataset to the
federal-customs-authority organization. Covers UAE non-oil foreign
trade by HS chapter, imports, exports, and re-exports.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds genuinely useful context — that results are implicitly constrained to a single organization — but says nothing about result volume limits, pagination, or how an empty query behaves. Comparable to the calibration case where safety is annotated and only scoping context is added.
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?
The core statement is front-loaded in the first sentence, and the wrapper relationship follows immediately. It is tight overall with no filler, though the domain-scope sentence could be folded in more economically.
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?
The presence of an output schema and rich annotations means the definition doesn't need to explain return shape or safety. However, with zero schema coverage on parameters, the description should say more about how `query` and `rows` behave; that gap is the main impediment to a correct first call.
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 0%, so both parameters (`rows`, `query`) are undocumented anywhere. The description does not explain what `query` matches (dataset names? descriptions? HS chapter terms?) or whether the empty-string default returns everything, nor what `rows` bounds. The schema does supply defaults, but the semantics an agent needs to form a good call are absent.
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 and resource ('Search Federal Customs Authority trade statistics datasets') and immediately clarifies it is a filtered wrapper over `fcsc_search_dataset` scoped to the `federal-customs-authority` organization. The domain content (UAE non-oil trade by HS chapter, imports, exports, re-exports) further pins down what an agent will get, distinguishing it clearly from the generic 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 explicitly names the underlying alternative (`fcsc_search_dataset`) and explains the selection rule implicitly: use this when you want the FCA organization's data without specifying an organization yourself. It lacks an explicit 'do not use this for other organizations / use fcsc_search_dataset instead' exclusion, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcsc_get_datasetARead-onlyIdempotent
Get full metadata for a specific FCSC dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes | CKAN dataset id or slug. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds only the 'full metadata' scope hint and says nothing about error behavior for unknown ids or about auth requirements, so it does not go meaningfully beyond the structured data.
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?
One short, front-loaded sentence with no wasted words. Nothing to trim and the scope qualifier is in the right 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?
An output schema exists, so return values need not be described, and annotations cover the safety profile; a one-line description is nearly sufficient for a single-arg read tool. The remaining gap is the missing disambiguation from fcsc_search_dataset, which an agent would otherwise have to infer.
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 single parameter is fully documented ('CKAN dataset id or slug'), so the schema carries the load. The description adds no extra meaning such as whether slug lookup is case-sensitive or how ambiguous ids are resolved.
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 ('full metadata for a specific FCSC dataset'), and the word 'specific' plus the required dataset_id signals single-record retrieval. It does not, however, name or contrast itself with the obvious sibling fcsc_search_dataset.
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: 'a specific ... dataset' suggests this is for when you already know the dataset id, versus browsing or querying. There is no explicit when-to-use, no prerequisite, and no pointer to fcsc_search_dataset for discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcsc_list_organizationsARead-onlyIdempotent
List all CKAN organizations publishing on the FCSC portal.
Useful for finding the right org slug to use as a filter on
fcsc_search_dataset.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety and idempotency profile is fully covered by structured data. The description adds no further behavioral context (no note on result size, pagination, or freshness), so with annotations carrying the load a 3 is appropriate.
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 short sentences, front-loaded with the core purpose and followed by the routing hint. Every sentence earns its place 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 parameters, rich annotations, and an output schema, the description only needs to convey purpose and placement in the workflow, which it does. A minor gap is omitting any note on ordering or result size for what is a full listing.
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?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The description correctly implies a no-argument full listing.
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 and resource with a clear scope ('List all CKAN organizations publishing on the FCSC portal'), so the agent knows exactly what comes back. It does not, however, explicitly distinguish itself from sibling list tools such as list_features or data_dubai_entities in the purpose statement itself.
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?
Explicitly names the downstream use case and the sibling it feeds: finding the right org slug to use as a filter on `fcsc_search_dataset`. That gives clear context for when to call it, though there is no explicit when-not-to-use or alternative list tool offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcsc_search_datasetCRead-onlyIdempotent
Search the FCSC UAE federal open data portal for datasets.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | Maximum results per page (1 to 100, default 10). | |
| query | No | Free-text Solr query, e.g., "trade", "population", "energy". Empty string returns recent datasets. | |
| start | No | Pagination offset. | |
| organization | No | Optional CKAN organization slug filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered and the description is not obligated to restate it. But the description adds nothing at all beyond the name: no pagination/result-window behavior, no auth or rate-limit context, no note that an empty query returns recent datasets.
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 with zero filler and no redundancy. It is efficient, though arguably undersized for a four-parameter search tool whose result semantics matter.
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?
An output schema exists and annotations are rich, so return values and safety need not be described. What is missing is routing context against fcsc_get_dataset and the other search siblings, plus any note on paging through large result sets.
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%, so rows, query, start, and organization are each already documented with defaults and formats. The description contributes no additional parameter meaning, so the baseline 3 for schema-complete tools 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?
States a specific verb and resource ('Search the FCSC UAE federal open data portal for datasets'), which is clear enough to call. However, it never distinguishes itself from close siblings like fcsc_get_dataset, fcsc_list_organizations, or data_dubai_search, so the agent must infer which catalog and which operation applies.
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 gives no when-to-use guidance, no prerequisites, and no named alternatives. There is no hint that fcsc_search_dataset is the discovery step that should precede fcsc_get_dataset for full record retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
free_zone_detailsBRead-onlyIdempotent
Get the full curated record for a single free zone by id.
| Name | Required | Description | Default |
|---|---|---|---|
| free_zone_id | Yes | Free zone id slug (e.g., "ifza", "dmcc", "difc_innovation", "jafza", "dafza", "meydan", "dubai_south", "dso_dtec", "tecom", "dhcc", "dpc_dsc", "difc_full"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and a closed world, so the safety profile is fully covered elsewhere. The description's only added behavioral signal is "full curated record," implying a complete rather than summarized payload; there is no mention of error behavior for an unknown id or rate limits.
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 with no filler; every word (single, full, curated, by id) carries information about scope and payload depth.
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 one-parameter read-only getter with a fully documented schema, an output schema already covering return values, and annotations covering safety, the description is nearly sufficient. The only meaningful omission is the upstream relationship to list_free_zones for obtaining a valid id.
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 free_zone_id property already documents the slug format with twelve concrete examples. The description adds nothing beyond restating that the lookup is keyed by id, so the baseline 3 is 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?
"Get the full curated record for a single free zone by id" names a specific verb (get), resource (free zone), and scope (single, by id), which implicitly distinguishes it from a list operation. It does not, however, name or contrast with its obvious siblings list_free_zones or compare_free_zones, so the differentiation is inferred rather than stated.
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?
There is no explicit when-to-use statement, no prerequisites, and no named alternative. The phrase "by id" faintly implies an id must first come from list_free_zones, but the agent is left to infer that workflow entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuel_price_guideARead-onlyIdempotent
Monthly UAE fuel prices in AED per litre (Super 98, Special 95, E-Plus 91, diesel): the Fuel Price Committee mechanism, the latest September 2026 snapshot, and historical August and July comparisons.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real behavioral context the annotations cannot: it discloses the content dimensions (mechanism explanation, latest September 2026 snapshot, August and July historical comparisons), which tells the agent exactly how fresh and how deep the data is.
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 sentence, front-loaded with the core resource and units before the parenthetical detail. The parenthetical grade list and the three content facets are dense but all earn their place; only minor polish (splitting mechanism from snapshot/history) would improve it.
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?
An output schema exists, so return formatting need not be described, and the description covers the full scope of what is returned. For a zero-parameter, read-only guide tool it is essentially complete; the only gap is any statement of update cadence or data staleness beyond the September 2026 date.
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?
The tool takes zero parameters, so the schema imposes no semantic burden and the baseline is 4. The description correctly does not invent parameters, and its content list implicitly communicates that the response is fixed-scope rather than filterable.
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 resource (monthly UAE fuel prices in AED per litre) and enumerates exactly what is covered: the four fuel grades, the Fuel Price Committee mechanism, a dated snapshot, and historical comparisons. No sibling tool in this catalog returns fuel price data, so an agent can identify it immediately 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 only implied by the content: an agent can infer it should call this for UAE fuel price questions. There is no explicit when-to-use statement, no exclusions, and no mention of whether the snapshot is stale relative to current months. However, no sibling tool overlaps this domain, so the absence of routing guidance is less damaging than it would otherwise be.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_statusARead-onlyIdempotent
Return freshness status of every registered business knowledge domain.
Each biz/* feature registers its KnowledgeMetadata at import time via
register_domain_knowledge. This meta-tool reads from that registry, so
bumping a single per-domain KNOWLEDGE constant flows through here
automatically. The project-wide constant records only the latest targeted
update; it never implies that every domain shares one review date.
Returns:
Dict with latest-update and full-review date ranges, total_domains,
and domains mapping each registered domain to its dates, volatility,
verify_at URL, and disclaimer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, so the safety profile is covered. The description adds genuine interpretive context beyond that: the data is read from a live registry populated at import time, per-domain constants flow through automatically, and the project-wide constant only records the latest targeted update and must not be read as a shared review date. That last point is a real misuse warning.
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?
The purpose is correctly front-loaded in sentence one. However, the middle paragraph spends several clauses on developer mechanics (`register_domain_knowledge`, `KnowledgeMetadata` at import time) that do not help an agent decide or invoke, and the 'Returns:' block largely restates what the output schema already declares.
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 an output schema present, the description need not enumerate return fields, yet it does so and still conveys the key caveat about interpreting the project-wide date. For a zero-parameter meta-tool, an agent has enough to call it correctly, though a sentence on when to reach for it 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The schema is a closed empty object, consistent with the description's picture of a no-argument registry 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 first sentence gives a specific verb and resource: return freshness status of every registered business knowledge domain. No sibling tool covers this registry/freshness surface, so the agent can place it unambiguously. The second paragraph drifts into implementation framing (import-time registration, constant bumping), which muddies rather than sharpens the stated purpose.
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 never says when an agent should call this tool, e.g. before answering a business-setup question to confirm the underlying domain data is current. There are no exclusions, no alternatives, and no prerequisites named. Usage is only inferable from the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upstream_statusARead-onlyIdempotent
Return the current health of every registered upstream endpoint.
Reads from the passive health registry in _shared/health.py. Each
upstream entry reports status (working, blocked, degraded,
credentials_missing, static, unknown), the endpoint host, whether
it requires auth, the last success and last failure timestamps, and
the latest reason string if the upstream is not working.
This tool never probes endpoints proactively. Status is derived from what happened during normal tool calls in this process, plus static state declared at bootstrap (known Cloudflare blocks, credential availability, and features that ship without any upstream call).
LLM agents should call this before attempting Tier 1 (Dubai Pulse) or FCSC work, to avoid asking the server for data it cannot fetch.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely non-obvious behavior: the tool never probes proactively, status derives from passive registry state during normal calls plus bootstrap-declared static state. It also enumerates the status values and the per-entry fields, which is exactly the context needed to interpret results.
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?
Front-loaded purpose sentence, then the field inventory, then the behavioral caveat and the when-to-call guidance — a good order. Slightly over-long: the source-module reference (`_shared/health.py`) and the full parenthetical enum listing are implementation detail an agent does not need to act.
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 no-arg, read-only introspection tool with an output schema, this covers everything an agent needs: what it reports, how the data is produced, the latency/accuracy caveat (passive, not live), and when to consult it before downstream calls.
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?
There are zero parameters, so the baseline is 4; nothing about invocation needs explaining. The description instead spends its words on the return shape, which is a sensible use of space but not parameter semantics.
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?
Opens with a specific verb+resource ('Return the current health of every registered upstream endpoint') and immediately establishes scope ('every'). It is clearly distinguishable from sibling status tools like get_knowledge_status and list_features because it is about upstream endpoint health, not knowledge coverage or feature inventory.
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?
Explicitly tells the agent when to call it: before attempting Tier 1 (Dubai Pulse) or FCSC work, with the rationale (avoiding requests the server cannot fulfill). It does not, however, exclude any situations or contrast itself against the other meta-tools (recommend_tools, get_knowledge_status) that an agent might also consult first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gitex_infoARead-onlyIdempotent
Return GITEX Global 2026 details and venue.
Confirmed 7 to 11 December 2026 in a split-venue format: GITEX Summit on 7 December at Dubai World Trade Centre, expo 8 to 11 December at the Dubai Exhibition Centre, Expo City Dubai.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds factual event context (dates, venues) beyond structured fields, but discloses nothing about auth needs, caching, or how the live data refreshes - reasonable given the low bar set by 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?
Front-loaded with the return purpose, followed by the specific detail. Every sentence is informational, though the detailed answer content arguably belongs in the output schema rather than the description.
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 zero-parameter lookup tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what it returns, the topic, and the embedded factual answer. Nothing required for correct invocation 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?
The tool takes zero parameters, so per the rubric the baseline is 4. There are no arguments whose semantics a description could clarify.
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 ('Return') and resource ('GITEX Global 2026 details and venue'), then immediately specifies the dates and split-venue structure. There is no sibling tool covering this event, so sibling differentiation isn't needed, but 'details' is left slightly generic before being clarified in the next sentence.
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 purpose implies when to call it (a GITEX 2026 lookup), but there is no explicit guidance on when to use it versus other tools, nor any prerequisites or exclusions. Implied usage only, though there is genuinely no competing alternative in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
golden_visa_checkARead-onlyIdempotent
Screen financial thresholds for Golden Visa routes; this is not final eligibility.
| Name | Required | Description | Default |
|---|---|---|---|
| project_value_aed | No | Deprecated. ICP dropped the AED 500,000 project-valuation test; a value here is not screened and only returns a note. Use annual_revenue_aed or prior_exit_value_aed. | |
| annual_revenue_aed | No | Annual revenue of the founder's UAE SME. ICP's entrepreneur route needs at least AED 1,000,000, plus approval of the venture by an accredited incubator or authority. | |
| monthly_salary_aed | No | Monthly salary for skilled-professional screening. AED 30,000 is the published threshold; qualification, employment and evidence requirements must also be met. | |
| prior_exit_value_aed | No | Total sale value of ventures the founder previously built and sold. ICP's alternative entrepreneur test needs at least AED 7,000,000. Dubai's GDRFA route uses a Dubai Future Foundation nomination with different criteria. | |
| real_estate_value_aed | No | UAE property value for the investor category. Must be at least AED 2,000,000; approved-bank mortgages and approved-developer off-plan property can count. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds the useful caveat that results are indicative thresholds, not eligibility determinations. It does not explain how partial inputs are handled or that the deprecated parameter merely returns a note — that detail lives only in the schema.
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 tight sentence with the core action front-loaded and a scope limitation appended. No filler, no restatement of the title or schema.
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?
An output schema exists and the parameter descriptions are rich, so much of the burden is carried elsewhere. Still, the description never names the routes being screened (investor, entrepreneur, skilled professional) or indicates that providing any subset of inputs returns per-route results, leaving the agent to infer structure from parameters alone.
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 each parameter carries a detailed AED threshold plus ICP-route context, so the schema does the heavy lifting. The description itself contributes nothing about the five financial inputs, which is acceptable at baseline but no better.
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 and resource: 'screen financial thresholds for Golden Visa routes', which tells an agent exactly what computation happens. The 'this is not final eligibility' clause sharpens scope. It does not, however, differentiate itself from nearby siblings such as visa_recommend, visa_details, or list_visa_types.
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 'not final eligibility' disclaimer implies this is an early-stage screen rather than an authoritative answer, which is a partial when-not signal. But there is no explicit guidance on when to prefer this over visa_recommend or visa_details, nor on whether parameters can be combined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grant_programsCRead-onlyIdempotent
List UAE government grant and funding support programs.
| Name | Required | Description | Default |
|---|---|---|---|
| grant_type | No | Optional type filter (accelerator_support_and_credit_guarantee, venture_fund, support_programs_and_loan_route, interest_free_business_loans_and_nonfinancial_support). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds nothing behavioral beyond that — no note on whether results are static or refreshed, nor any scoping caveats — so it contributes no incremental context.
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 with zero filler, appropriately sized for the operation. It is terse to the point of under-specification, but nothing in it 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 an output schema present, return values need not be explained, and annotations carry the safety profile. The remaining gap is routing: nothing tells the agent how this differs from accelerator_search, vc_list, or dcde_programs in a crowded funding-tool family.
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 single optional grant_type parameter is fully documented in the schema with its accepted filter values. The description adds no syntax or meaning beyond the schema, so the 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?
States a specific verb (List) and resource (UAE government grant and funding support programs), so the agent knows exactly what is returned. However, it offers no differentiation from adjacent funding siblings such as accelerator_search, vc_list, or dcde_programs, which an agent could easily confuse it with.
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?
There is no when-to-use guidance, no exclusions, and no alternatives named. The agent must infer on its own that this covers government grants rather than private accelerators or VC listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gregorian_to_hijriBRead-onlyIdempotent
Convert a Gregorian date to a Hijri (Islamic) date.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | Gregorian day, 1 to 31. | |
| year | Yes | Gregorian year (e.g., 2026). | |
| month | Yes | Gregorian month, 1 to 12. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, fully covering the safety profile. The description adds no behavioral context such as conversion standard (e.g., Umm al-Qura), timezone handling, or precision.
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 sentence with no wasted words, and the core operation is front-loaded immediately. It is appropriately sized for a simple conversion tool.
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?
An output schema exists, so return values need not be explained, and all required parameters are documented in the schema. The description is nearly complete for a simple conversion, though it could mention calendar-system caveats that affect Hijri results.
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 three required parameters (day, month, year) are already documented with ranges and examples. The description adds no additional meaning beyond what the schema provides, so the baseline of 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?
States a specific verb (Convert) and resource/direction (Gregorian date to Hijri date), which inherently distinguishes it from the inverse sibling hijri_to_gregorian. An agent can identify the operation without opening the 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?
Provides no explicit when-to-use, prerequisites, or alternative guidance. The inverse sibling hijri_to_gregorian exists but is not referenced, leaving the agent to infer that this tool is only for forward conversion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grocery_estimateCRead-onlyIdempotent
Monthly and weekly grocery ranges plus the staples basket.
| Name | Required | Description | Default |
|---|---|---|---|
| household_size | No | One of: single, couple, family_of_four. | single |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds only 'plus the staples basket', a content detail, and says nothing about currency, cost basis, or what drives the ranges, so it contributes little behavioral context beyond the structured fields.
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?
It is a single short clause with no wasted words and the core content is front-loaded, but it is under-specified rather than genuinely concise, leaving the agent to guess the tool's action.
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?
The tool is simple, the one parameter is fully documented in the schema, an output schema exists so return values need not be described, and annotations cover safety. The remaining gap is contextual framing — no linkage to the cost-of-living estimator family or statement of what assumptions (currency, location) the ranges rest on.
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's allowed values (single, couple, family_of_four) are documented in the schema itself. The description does not mention household_size at all, so the baseline 3 applies — the schema does all the work.
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 phrase names the resource (monthly/weekly grocery ranges and a staples basket) but is a noun fragment with no verb, so the agent infers 'estimate grocery costs' rather than reading it stated. It is distinguishable from siblings like rent_estimate or dewa_bill_estimate only by the noun 'grocery'.
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?
There is no indication of when to use this tool versus alternatives such as cost_of_living_overview, or of how it fits with the other cost estimators in the sibling set. No prerequisites, no exclusions, no context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halal_certificationARead-onlyIdempotent
Return UAE halal certification guidance.
The authority is MOIAT (Ministry of Industry and Advanced Technology), which absorbed ESMA in 2020. Standards: UAE.S GSO 2055-1, 2055-2, 2055-4, plus UAE.S 993 (slaughter). Single UAE Halal Mark.
| Name | Required | Description | Default |
|---|---|---|---|
| product_category | No | Optional filter on the products list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful regulatory context (MOIAT, absorbed ESMA, applicable standards, single mark) but does not add operational behavior details such as response shape or limitations.
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?
The description is short and front-loaded, with no filler. The authority, standards, and mark details all contribute useful context, though the line-broken formatting makes it slightly less polished.
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?
Given one optional parameter, full schema coverage, a rich annotation set, and an output schema, the description provides enough domain context for an agent to invoke the tool correctly. Only explicit usage routing 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% and the single optional parameter is already described in the schema as an optional filter on the products list. The description adds no further detail about the parameter, so the baseline of 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?
The description gives a specific verb and resource: "Return UAE halal certification guidance." It also scopes the domain with the authority and standards, though it does not explicitly distinguish itself from potentially related siblings such as moiat_requirements.
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 subject matter—an agent would infer this is for halal certification questions in the UAE. However, there is no explicit when-to-use guidance, no exclusions, and no routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hijri_to_gregorianBRead-onlyIdempotent
Convert a Hijri (Islamic) date to a Gregorian date.
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | Hijri day, 1 to 30. | |
| year | Yes | Hijri year (e.g., 1447). | |
| month | Yes | Hijri month, 1 (Muharram) to 12 (Dhu al-Hijjah). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond that – no note on which Hijri calendar variant (Umm al-Qura vs tabular) is used, which materially affects conversion results.
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 with the operation verb first and the direction explicit; nothing is wasted and nothing needs trimming for a simple conversion tool.
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?
Output schema exists so return values need not be explained, and annotations cover safety, leaving the description sufficient to call the tool. It falls short of 5 only because the Hijri calendar variant (e.g., Umm al-Qura) is not stated, a detail that changes the output date.
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%: day, month and year are each documented with ranges and even the month-name mapping (Muharram/Dhu al-Hijjah). The description adds no parameter meaning beyond the schema, so the 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?
States a specific verb (convert) and both resources (Hijri date → Gregorian date), making the conversion direction unambiguous. This directionality inherently distinguishes it from its sibling gregorian_to_hijri without needing to name it.
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 gives no when-to-use guidance, no prerequisites, and never mentions the inverse tool gregorian_to_hijri or any alternative. The agent must infer usage purely from the name and direction phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ip_protectionCRead-onlyIdempotent
Return UAE IP protection guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| ip_type | No | One of "trademark", "patent", "copyright". | trademark |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing behavioral on top of that – no mention of coverage scope, whether guidance is static or time-sensitive, or what kinds of IP it addresses beyond the parameter default. It neither contradicts nor enriches 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 short sentence that is front-loaded and wastes no words. But its brevity reflects under-specification rather than disciplined concision – the one sentence does not carry enough information to be genuinely helpful.
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?
An output schema exists, so return values need not be described, and annotations cover the safety profile. What remains missing is scope and sibling differentiation against trademark_registration. For a single-optional-param knowledge lookup this is minimally adequate but not complete.
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%, so the schema already documents ip_type with its allowed values and default. The description adds no syntax or meaning beyond the schema. Baseline 3 is appropriate when the schema carries the parameter documentation.
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 verb (Return) and a resource (UAE IP protection guidance), so the basic purpose is clear. However, 'guidance' is vague about scope, and the description does nothing to distinguish this tool from the sibling trademark_registration, which plausibly overlaps. The agent cannot tell from the text alone when this general tool applies versus the specific registration tool.
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?
There is no when-to-use statement, no prerequisite, and no named alternative. With a closely related sibling (trademark_registration) present, the absence of routing guidance is a real gap. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_uae_holidayBRead-onlyIdempotent
Check whether a specific Gregorian date is a UAE public holiday.
| Name | Required | Description | Default |
|---|---|---|---|
| date_str | Yes | ISO date YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety and idempotency profile is fully covered. The description adds only the qualifier 'Gregorian', which usefully signals that Hijri dates must be converted first (cf. hijri_to_gregorian), but says nothing about behavior such as weekend/holiday-boundary handling or whether results reflect observed vs. announced dates.
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?
One short sentence with the key constraint (specific Gregorian date) front-loaded and no filler. Every word 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?
An output schema exists, so return values need no explanation, and the single-parameter input is fully documented in the schema. The only missing piece is routing relative to the uae_holidays and uae_next_holiday siblings, which is a minor gap for such a simple tool.
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% – the single date_str parameter is fully documented as ISO YYYY-MM-DD in the schema. The description's 'Gregorian' qualifier adds a small disambiguation (not a Hijri date) but no format or range detail beyond the schema, so the 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?
States a specific verb (check) and resource (whether a Gregorian date is a UAE public holiday), so the agent knows exactly what it returns. It does not explicitly differentiate itself from close siblings uae_holidays (list) and uae_next_holiday (next upcoming), which keeps it out of 5 territory.
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?
There is no when-to-use guidance, no exclusions, and no mention of the sibling tools uae_holidays or uae_next_holiday. Usage is only inferable from the phrasing 'check whether a specific date', which is implied context rather than stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
khda_list_areasARead-onlyIdempotent
List the Dubai areas covered by schools in the snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is fully covered structurally. The description adds only the phrase 'in the snapshot', implying the result is a fixed dataset rather than a live query; it says nothing about freshness, ordering, or size. Modest added value over 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?
One sentence, front-loaded with the verb and the resource, with zero filler. Nothing to trim and nothing 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?
An output schema exists, so the description need not explain return values, and with no parameters the burden is small. It is only short of complete because it never positions itself against sibling list tools such as khda_list_curricula.
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?
The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly avoids inventing arguments that do not exist.
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 (list) and resource (Dubai areas) with a scoping qualifier ('covered by schools in the snapshot'), so an agent knows exactly what comes back. It does not distinguish itself from the nearby sibling khda_list_curricula, which is the only thing keeping it out of the top band.
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?
There is no when-to-use statement, no mention of when not to use it, and no pointer to alternatives such as khda_search_school. The usage is only inferable from the wording itself, which is the definition's main gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
khda_list_curriculaARead-onlyIdempotent
List the curricula available in the snapshot (e.g., British, IB, CBSE).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-open-world and non-destructive, so safety is covered structurally. The description's one added signal is the word 'snapshot', implying static pre-captured data rather than live results, which is genuinely useful context but is not elaborated.
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 names the resource first and puts the illustrative examples in parentheses. No filler and nothing to trim.
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 zero-parameter, read-only enumeration with an output schema and full annotation coverage, the description says enough to call it correctly. Only the meaning of 'snapshot' (which snapshot, how current) is left unstated.
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?
The tool takes zero parameters, so the schema has nothing for the description to supplement. Baseline 4 applies; there is no parameter behavior left unexplained.
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 ('List') and resource ('curricula') and grounds the result set with a concrete example list (British, IB, CBSE). It is distinguishable from khda_search_school and khda_list_areas by resource, but it never explicitly contrasts itself with those 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?
Usage is only implied: the description conveys that this enumerates the fixed set of curricula, which an agent would want before filtering schools, but it never states when to use it versus khda_search_school or any prerequisite/exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
khda_search_schoolBRead-onlyIdempotent
Search Dubai private schools by name, area, curriculum, rating, or fee.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Substring match on area / neighborhood (e.g., "Jumeirah"). | |
| name | No | Substring match on school name (case-insensitive). | |
| limit | No | Max results (1 to 200, default 20). | |
| rating | No | Exact match on KHDA inspection rating. Valid values: "Outstanding", "Very Good", "Good", "Acceptable", "Weak", "Very Weak". | |
| curriculum | No | Substring match on curriculum (e.g., "British", "IB"). | |
| max_fee_aed | No | Filter to schools whose fees_min_aed is at or below this. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds no behavioral context of its own: no pagination/result-limit behavior, no note on how multiple filters combine, no ordering of results.
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 with zero filler; the tool and its filter dimensions are conveyed immediately.
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?
An output schema exists, so return-value explanation is not needed, and the schema fully documents inputs. What is missing is routing guidance relative to the khda_list_curricula/khda_list_areas siblings and any note on result behavior, leaving the definition adequate but with clear gaps.
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 each parameter is individually documented with match semantics (substring vs. exact) and valid rating values. The description's field list mirrors the schema rather than adding new meaning, so the baseline 3 is 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?
States a specific verb and resource ("Search Dubai private schools") and enumerates the filterable dimensions, so the agent knows exactly what this tool retrieves. It does not, however, distinguish itself from the khda_list_curricula and khda_list_areas siblings that serve adjacent discovery needs.
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?
No when-to-use or when-not-to-use guidance is given, and no alternative is named. The sibling tools khda_list_curricula and khda_list_areas are obvious candidates for a 'which should I call' decision, and the description is silent on the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
late_payment_penalty_estimateARead-onlyIdempotent
Estimate the unified UAE late-payment penalty on overdue tax.
Cabinet Decision 129 of 2025 applies 14% per annum to unpaid tax, effective 14 April 2026, unifying VAT, Excise and Corporate Tax. The charge accrues monthly at 14% divided by 12 for every month or part of a month; it is not pro-rated by day. Confirm the calendar-month count with the FTA.
| Name | Required | Description | Default |
|---|---|---|---|
| days_late | Yes | ||
| tax_due_aed | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the description is free to add domain behavior — and it does: the 14% p.a. rate, the 14 April 2026 effective date, monthly accrual with no daily pro-ration. What is missing is how the accrual period is derived from the supplied day count.
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?
Front-loaded with the purpose, then legal basis and mechanics in a tight sequence. Slight redundancy in restating the 14% rate twice, but every sentence otherwise carries substantive information.
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?
An output schema exists so return values need no explanation, and the legal mechanics are well covered. The gaps are the days-to-months conversion and any guidance on when this estimate applies versus other tax tools.
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 0%, so the description must carry parameter meaning; it explains that tax is the unpaid base but never says how 'days_late' maps to the monthly charge (e.g. days/30 vs. ceiling of a calendar month). Saying the charge 'is not pro-rated by day' while the only time parameter is in days leaves a real ambiguity an agent must resolve.
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?
Opens with a specific verb+resource ('Estimate the unified UAE late-payment penalty on overdue tax') and narrows the domain to VAT, Excise and Corporate Tax under a named decree. No sibling tool computes penalties, so the resource statement alone separates it from corporate_tax_estimate or vat_filing_calendar.
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 ('on overdue tax'); there is no explicit statement of when to call this versus corporate_tax_estimate or vat_filing_calendar, and no prerequisites or exclusions. The closing line advises confirming the month count with the FTA, which is a caveat rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legal_translation_estimateARead-onlyIdempotent
Estimate legal translation cost based on page count and urgency.
Where legal translation is required, use a legal translator registered with MOJ and confirm the receiving authority's current document rules.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | Yes | Number of pages. | |
| same_day | No | True for same-day turnaround (25 to 50% uplift). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds a procedural caveat about verifying document rules with the receiving authority, but says nothing about the estimate's basis, currency, or that it is indicative rather than binding — which is the kind of behavior an agent would want here.
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 short sentences, with the core action front-loaded before the caveat. The caveat is slightly tangential to invoking the tool but is not padding.
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?
A simple read-only two-parameter estimator with full schema coverage and an output schema, so return values need no explanation. The only gap is that the description never says the output is an indicative estimate subject to verification, though the caveat sentence gestures at it.
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%, including the 25–50% uplift for same_day, so the schema carries all parameter meaning. The description only restates the parameter concepts ('page count and urgency') without adding format, range, or tiering detail — 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?
States a specific verb and resource — 'Estimate legal translation cost' — and names the two driving factors (page count, urgency). It does not explicitly distinguish itself from adjacent estimate tools in the sibling list (pro_services_estimate, attestation_guide), but no sibling is close enough to create real ambiguity.
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 second sentence implies the domain where this applies ('where legal translation is required') and names prerequisites (MOJ-registered translator, receiving authority rules), but it gives no when-to-use vs. alternative guidance and no exclusions. Usage is inferable 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_banksARead-onlyIdempotent
List every UAE business bank in the curated dataset.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 and idempotency profile is fully covered. The description's only added behavioral signal is 'curated dataset', suggesting a fixed, complete enumeration rather than a live query, which is useful but thin.
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 short sentence with the scope constraint front-loaded and no filler. Every word 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?
With an output schema present, the description needn't explain return values, and annotations cover the safety profile. For a zero-parameter catalog lister it is nearly complete; a note that this returns the full curated set rather than filtering would close the last 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?
The tool takes zero parameters, so the baseline is 4 and there is no parameter semantics for the description to clarify. It correctly says nothing about inputs because there are none.
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 ('List') and resource ('UAE business banks') plus a scope qualifier ('curated dataset'), so the agent knows this is an enumeration rather than a lookup. It does not explicitly distinguish itself from nearby siblings like bank_details or bank_recommendation, which is the only thing keeping it from a 5.
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?
There is no when-to-use guidance, no prerequisites, and no named alternative. The phrase 'curated dataset' faintly implies this is a static catalog as opposed to a live lookup, but the agent must infer whether to call this or bank_details/bank_recommendation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_featuresARead-onlyIdempotent
List every registered MCP-Dubai feature with its tool count and tier.
Returns:
One entry per feature, sorted by tier then name. Each entry has
feature, tier, requires_auth, tool_count, and tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so the safety profile is fully covered. The description adds only the sort order (tier then name) as genuine behavioral context; with annotations this strong, that is a modest addition.
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 short, front-loaded sentences with the action stated first and the return shape second. The field enumeration in the Returns block slightly overlaps the output schema, but the text is tight overall.
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 parameters, full annotation coverage, and an output schema present, the description needs only to say what the tool does and what it returns — which it does, including ordering and the per-entry fields.
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?
The tool takes zero parameters, so the baseline is 4; the description correctly makes no parameter claims and instead describes the output fields, which is the only relevant semantic content.
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 and resource — 'List every registered MCP-Dubai feature with its tool count and tier' — which is unambiguous. It does not, however, distinguish itself from adjacent discovery siblings such as recommend_tools, about, or list_plan_categories.
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 listing nature of the tool (browse/discover available features), but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative like recommend_tools for goal-driven discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_free_zonesARead-onlyIdempotent
List every Dubai free zone in the curated dataset.
Returns a compact list with id, name, sector, location, and initial license cost in AED.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered. The description adds modest context: 'every' signals an unpaginated complete enumeration, and 'curated dataset' hints at a bounded, possibly non-exhaustive source. It stops short of stating data recency or whether the list is authoritative.
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 short sentences, purpose first, return shape second — well front-loaded with no filler. The return-field sentence overlaps the output schema, costing a little redundancy.
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 an output schema present and zero parameters, the description needn't explain return values or arguments, and it doesn't. The only meaningful gap is not positioning this list relative to the detail/compare tools in the same family.
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?
Zero parameters, which is the baseline-4 case; there is nothing to disambiguate. The description correctly adds no filtering or paging claims that would contradict the empty schema.
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 ('List') and resource ('every Dubai free zone') with a clear scope limit ('in the curated dataset'). It is distinguishable from free_zone_details and compare_free_zones by implication of a full enumeration, though it never names those siblings explicitly.
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 word 'every' implies this is the entry point for enumerating the catalog before drilling into details, but no explicit when-to-use or when-not guidance is given. Alternatives such as free_zone_details, compare_free_zones, and list_offshore sit right next to it and are left unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_honorificsARead-onlyIdempotent
List bilingual UAE honorifics for use in formal correspondence.
Includes His Highness, His/Her Excellency, Mr./Ms., Dr., Engineer with Arabic equivalents and use case notes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds valuable content details beyond the annotations by listing the honorific types included and noting Arabic equivalents and use-case notes.
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 tightly written sentences front-load the purpose and then list the included honorifics. Every phrase earns its place and nothing is redundant.
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 zero-parameter listing tool with annotations and an output schema, the description is complete: it explains purpose, scope, contents, and use context. No operational gaps remain for correct invocation.
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?
There are zero parameters, so the baseline is 4. The description adds no parameter meaning because none exist, and the empty schema is sufficient.
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 ('List') and resource ('bilingual UAE honorifics') with the use case ('formal correspondence'). It also names the included categories, which lets an agent distinguish it from the sibling list_salutations.
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?
Provides a clear context for when to use it ('for use in formal correspondence') and names the kinds of recipients covered. It does not explicitly state exclusions or point to the alternative list_salutations, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_offshoreARead-onlyIdempotent
List Dubai-relevant offshore options (JAFZA Offshore, RAK ICC).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true and destructiveHint=false, so the full safety profile is covered structurally. The description adds no behavioral context beyond the resource name, but for a zero-param read-only list there is little additional nuance to disclose, so a baseline 3 fits.
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 with zero filler. The verb and resource lead, and the parenthetical examples are the only elaboration, which is appropriate.
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?
An output schema exists, so return values need not be explained, and there are no parameters to document. The brief scope statement is enough to call the tool correctly, though it could note how many option categories it covers.
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?
The tool takes no parameters, which is the baseline-4 case. Nothing in the description conflicts with the empty schema, and no parameter explanation is needed.
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 ('List') and resource ('offshore options') with concrete examples (JAFZA Offshore, RAK ICC). It is clear what the tool returns, though it does not explicitly contrast itself with the neighboring list_free_zones tool, leaving the onshore/offshore distinction implicit.
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?
No explicit when/when-not guidance is given. The scope ('Dubai-relevant offshore') implies usage, and an agent can infer it should call this instead of list_free_zones for offshore structures, but that routing is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_plan_categoriesBRead-onlyIdempotent
List the available data_analyst plan categories.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on whether the list is static, cached, or scoped to a specific plan tier, so there is no incremental behavioral value.
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 short sentence with the verb and resource front-loaded and zero padding. It is appropriately sized, though it is arguably under-specified rather than optimally terse.
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?
An output schema exists, so return values need not be explained, and the zero-parameter nature keeps the surface small. Still, the meaning of 'data_analyst plan categories' and how they relate to sibling tools such as plan_query or recommend_tools is left unstated, leaving a gap for a low-complexity tool.
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?
The tool takes zero parameters, so there is nothing for the description to clarify; the baseline of 4 applies. No parameter behavior is misrepresented.
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 ('List') and resource ('plan categories'), so the agent knows this is an enumeration tool. However, 'data_analyst plan categories' is an unusual qualifier that is not explained, and the description does not distinguish it from the sibling plan_query.
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?
No guidance on when to call this versus plan_query or any other sibling. There is no mention of prerequisites, or that the output likely feeds into a plan lookup/query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_salutationsARead-onlyIdempotent
List bilingual opening and closing salutations for UAE business letters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered. The description only adds that the content is bilingual and domain-scoped; it says nothing about volume, ordering, or filtering. With annotations doing the heavy lifting, a 3 is appropriate.
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 with no filler. The resource and its scope arrive immediately, and nothing is repeated from the name or annotations.
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 zero-argument listing tool with an output schema, the description is nearly sufficient: it tells the agent what is returned and the domain. Only the intended pairing with the letter-composition siblings is left implicit.
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?
The tool takes zero parameters, so the baseline is 4. There are no arguments whose semantics need explaining, and the description does not need to compensate for anything.
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 ('List') and a specific resource ('bilingual opening and closing salutations for UAE business letters'), which is clear enough to distinguish from nearby siblings like list_honorifics and addressee_block. It never names those siblings explicitly, so it stops short of a 5.
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 phrase 'for UAE business letters' implies the usage context, but there is no explicit when-to-use, when-not-to-use, or pointer to alternative tools such as list_honorifics or business_letter_template. Usage is inferable 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_uae_weather_citiesARead-onlyIdempotent
List the UAE cities supported by the Open-Meteo weather tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds that the list is scoped to cities the Open-Meteo weather tools actually support, which is genuinely useful context, but says nothing about list size or ordering.
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 sentence that front-loads the action and the scope, with no filler or redundant restatement of the name.
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?
An output schema exists, so return values need no explanation, and a zero-param enumeration tool is inherently simple. The only missing piece is an explicit pointer that the returned city names are the valid inputs to the weather siblings.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 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 (List) plus a specific resource (UAE cities supported by the Open-Meteo weather tools). An agent immediately knows this is an enumeration tool for the weather family, though it doesn't explicitly name the sibling tools (uae_weather, weather_by_coords) whose inputs it feeds.
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: an agent must infer that this should be called to discover valid city names before invoking a weather tool. There is no explicit when-to-use statement or contrast with siblings such as weather_uae_all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_visa_typesARead-onlyIdempotent
List every UAE visa type in the curated dataset.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety and determinism profile is fully covered by structured data. The description's only added behavioral signal is 'curated dataset', which usefully tells the agent the results are a fixed, non-exhaustive-of-reality static set rather than live data. That is a modest but real addition.
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 sentence that front-loads the verb and resource with no filler. Nothing could be removed without losing meaning, and nothing further is needed for a no-argument list tool.
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 an output schema present, return values need no explanation, and annotations carry the full safety profile. The definition is essentially complete for a zero-parameter enumeration tool; the only missing element is routing guidance relative to the visa-related siblings.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The phrase 'every UAE visa type' correctly conveys that no filtering or scope narrowing is possible, matching the empty schema.
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 (List) and resource (UAE visa types), and the qualifier 'curated dataset' signals this is a static, curated enumeration rather than a live query. It does not, however, differentiate itself from close siblings such as visa_details, visa_recommend, or golden_visa_check, which an agent must infer are for per-type detail or eligibility rather than enumeration.
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 usage is implied by the name and the word 'every' — the agent can reasonably infer this is the tool to call when it needs the full enumeration of visa types rather than details on one. There is no explicit statement of when to prefer visa_details or visa_recommend, and no exclusions or prerequisites, so guidance remains inferential rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makani_detailsARead-onlyIdempotent
Look up the building behind a 10-digit Makani number (no key).
Returns building, community, and emirate names in English and Arabic, exact coordinates, and the official makani.ae short URL.
| Name | Required | Description | Default |
|---|---|---|---|
| makani_number | Yes | Makani number, 10 digits with or without a space, e.g. "30032 95320" or "3003295320". |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds the auth requirement ('no key') and enumerates the returned fields, which is useful context, but nothing about rate limits, error behavior on invalid numbers, or lookup latency.
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, with the core action and the input constraint front-loaded. The return-value sentence is arguably redundant given an output schema exists, but it is short and readable.
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 single-parameter read tool with full annotation coverage and an output schema, the description supplies what an agent needs: what it accepts, that no key is required, and the resolution target. The only gap is sibling differentiation against the other makani_ tools.
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 schema already documents the 10-digit format with and without a space plus examples. The description only restates '10-digit Makani number', adding no format or validation detail beyond the schema, so the 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?
Names a specific verb ('look up') and resource ('the building behind a 10-digit Makani number') with a clear input format, so an agent knows exactly what the tool resolves. It does not, however, distinguish itself from the sibling makani_reverse_geocode or makani_validate, leaving the boundary between the three Makani tools ambiguous.
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 'no key' note usefully signals that this lookup requires no authentication, which is real usage context. But there is no explicit when-to-use guidance and no mention of when to prefer this over makani_reverse_geocode (coords to address) or makani_validate, so an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makani_reverse_geocodeARead-onlyIdempotent
Find the Makani numbers and building at a Dubai coordinate (no key).
Reverse geocodes against the official Dubai Municipality Makani public service: building, community, and emirate names in English and Arabic, plus every Makani number at that location with its coordinates and short URL.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude in decimal degrees (WGS84), e.g. 25.26464. | |
| longitude | Yes | Longitude in decimal degrees (WGS84), e.g. 55.31217. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuine context beyond that: the backing service (official Dubai Municipality Makani public service) and the fact that no API key is needed. It also enumerates returned content, which overlaps the output schema but reinforces it.
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 is front-loaded in the first sentence and the second elaborates the data source and return contents. It is well-sized with no filler, though the return-value sentence partly duplicates the output schema.
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 rich annotations, a full-coverage schema, and an output schema in place, the description only needs to add the 'what' and the source/auth context, which it does. Nothing critical for calling the tool correctly is missing, though explicit sibling routing would have made it fully complete.
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 both parameters carry WGS84 decimal-degree descriptions with examples, so the schema does the heavy lifting. The description adds no coordinate-format or range detail beyond what the schema already provides, making the baseline 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?
States a specific verb and resource: 'Find the Makani numbers and building at a Dubai coordinate,' which is unambiguous. It implicitly separates itself from the forward-looking siblings (makani_details, makani_validate) by framing the operation as reverse geocoding, but it never names those alternatives explicitly.
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 '(no key)' note tells the agent authentication is not required, which is useful context. However, there is no explicit when-to-use guidance or comparison against makani_details/makani_validate, so the agent must infer that this is the coordinate-to-Makani path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
makani_validateARead-onlyIdempotent
Check whether a 10-digit Makani number exists (no key).
Returns a validity boolean plus the emirate (English and Arabic) when the number is valid.
| Name | Required | Description | Default |
|---|---|---|---|
| makani_number | Yes | Makani number, 10 digits with or without a space, e.g. "30032 95320" or "3003295320". |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety profile. The description adds two things beyond that: the fact that no API key is required (an auth constraint worth surfacing) and the conditional return behavior (emirate returned in both English and Arabic only when valid). That conditional is useful context even with an output schema present.
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 tight sentences with zero filler. The core purpose is front-loaded and the return/emirate detail follows as secondary. Every clause carries information.
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 one-parameter validation tool with full annotation coverage and an output schema, the description is nearly complete: it covers the check, the format constraint, the no-key auth posture, and the conditional return. It does not mention failure/edge behavior for malformed input, which keeps it short of a 5.
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 already documents the 10-digit format with concrete examples ('30032 95320' or '3003295320'). The description's mention of '10-digit' merely restates the schema, adding no new syntax or format meaning. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Check whether a 10-digit Makani number exists.' Combined with the name makani_validate, an agent can immediately tell this is a validation/existence check rather than a lookup, which separates it from makani_details and makani_reverse_geocode. It does not name those siblings explicitly, so it falls short of a 5.
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: the '(no key)' note hints this is a cheap, unauthenticated check, which a reader could contrast with a keyed detail lookup. There is no explicit statement of when to prefer this over makani_details or makani_reverse_geocode, and no exclusions or prerequisites are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moiat_requirementsBRead-onlyIdempotent
Return MOIAT registration fees and timeline for Halal Certification Bodies.
HCB registration: AED 1,000 per domain plus AED 1,000 certificate. Total AED 2,000. Timeline: 10 working days.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds fee/timeline facts but no behavioral context such as whether the figures are static or refresh, or any auth constraints. With annotations carrying the load, a 3 is appropriate.
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?
Front-loaded and brief: purpose sentence first, then supporting detail. It is slightly padded by embedding the actual answer values (AED 1,000/AED 2,000, 10 working days), which are return data already available via the output schema, but nothing is verbose.
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 zero-parameter, read-only tool with an output schema and full annotation coverage, the description supplies what an agent needs to identify it. The one real gap is the missing distinction from the 'halal_certification' sibling, which prevents a 5.
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?
The tool takes zero parameters, so the baseline is 4 per the rubric. The description cannot and need not add parameter meaning, and it correctly avoids inventing any.
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 ('Return') and a precise resource ('MOIAT registration fees and timeline for Halal Certification Bodies'), so the agent knows exactly what it gets. It does not, however, distinguish itself from the related 'halal_certification' sibling or explain how the two differ.
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?
There is no when-to-use, when-not-to-use, or alternative guidance. Given the presence of 'halal_certification' and other *_requirements tools, the description should say when this MOIAT-specific fee tool is the right one to call, but it leaves that entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nol_card_guideARead-onlyIdempotent
Nol card guide and RTA fare structure.
Returns the 5 Nol card types (Red, Silver, Gold, Blue personalized, Blue PoD) plus the 2025 fare structure (1-zone AED 3, 2-zone AED 5, 3+ zone AED 7.50, daily caps, transfer rules, unlimited passes).
| Name | Required | Description | Default |
|---|---|---|---|
| card_type | No | Optional card type filter substring. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 genuine content scope (which card types and which fare components are returned, with concrete 2025 values), which is behaviorally useful 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?
Two sentences, front-loaded with the resource and then the returned content. The parenthetical fare enumeration is dense but every element is informative, not padding.
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 an output schema present, the description need not explain return formatting, and it does describe the content scope well. The only gap is the absence of any mention of the optional card_type filter or usage context, which keeps it just short of fully complete.
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 single optional card_type filter is fully documented in the schema. The description never mentions the filter, so it adds no meaning beyond the schema; 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?
States a specific resource (Nol card guide + RTA fare structure) and enumerates exactly what it returns (5 card types, 2025 zone fares, caps, transfer rules, passes). It is clearly distinguishable from transport siblings like rta_salik_tariff and rta_search_metro_stations, though it does not explicitly name them.
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?
There is no when-to-use, when-not, or alternative guidance. An agent must infer that this is a static reference lookup for Nol fares rather than something like rta_salik_tariff; the description offers no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
osm_list_categoriesARead-onlyIdempotent
List the curated POI categories supported by osm_search_poi.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fully covered. The description adds only the word 'curated', implying a fixed finite list, but says nothing about ordering, freshness, or scope of the category set.
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 with no filler. Every word (curated, supported by `osm_search_poi`) carries information.
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 an output schema covering return values, annotations covering safety, and no parameters, the description only needs to say what the list is and who consumes it — both are present. It could be stronger by stating the intended workflow step explicitly.
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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter-level information is needed or missing.
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 (List) and resource (curated POI categories), and names the consuming sibling `osm_search_poi`, which distinguishes it from that search tool. It is slightly vague about what 'curated' means, so it stops short of a full 5.
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?
By naming `osm_search_poi` as the consumer, it implies this should be called to discover valid category values before searching. However, it never states that explicitly, nor does it give any when-not guidance or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
osm_search_poiBRead-onlyIdempotent
Find OpenStreetMap points of interest near a Dubai location.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return. | |
| category | Yes | One of: restaurant, cafe, fast_food, pharmacy, hospital, clinic, atm, bank, fuel, school, kindergarten, mosque, supermarket, mall, bus_stop, metro_station, parking, park, gym, hotel, embassy, post_office. | |
| latitude | Yes | Centre latitude. | |
| longitude | Yes | Centre longitude. | |
| radius_meters | No | Search radius in metres (max 10000). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety semantics are covered. The description adds the meaningful coverage constraint that results are Dubai-scoped OSM data, but says nothing about data freshness, rate limits, or empty-result behavior for an open-world lookup.
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?
One efficiently front-loaded sentence with no filler or redundant clauses. It is arguably too terse for a tool with a 22-value category constraint, but nothing in it 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 an output schema present and 100% parameter coverage, the description needn't explain return values. However, for a moderately complex geospatial lookup it omits useful context: the OSM/Overpass data source, the Dubai-only geographic restriction, and the relationship to osm_list_categories for valid category values.
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%, so latitude, longitude, category, radius_meters and limit are all documented in the schema. The description adds no parameter detail (e.g. how category relates to osm_list_categories, or the 10 km radius cap), so the 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?
Clear verb ('Find') plus specific resource ('OpenStreetMap points of interest') and a scope constraint ('near a Dubai location'). An agent understands the operation immediately, but the description never distinguishes it from the related osm_list_categories sibling or from other location tools like makani_reverse_geocode.
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 phrase 'near a Dubai location' implies a coordinate-based proximity search, but there is no explicit when-to-use statement, no when-not-to-use, and no pointer to alternatives. An agent wanting to discover valid categories has no hint that osm_list_categories exists for that purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parking_zonesARead-onlyIdempotent
Dubai Parkin zones, tariffs, VAT, free periods, and mParking shortcode.
Variable tariffs since 4 April 2025: peak 4 to 6 AED/h, off-peak 2 to
4 AED/h. From 1 June 2026 a 5% VAT applies on top (displayed prices are
VAT-inclusive) and cash payments at meters are phased out (Nol cards
still accepted). Free Sundays, public holidays, and 22:00 to 08:00.
mParking SMS shortcode is 7275 (PARK), format <plate> <zone> <hours>.
CRITICAL: 'Mawaqif' is the Abu Dhabi parking system. Dubai parking is operated by Parkin Company PJSC (DFM:PARKIN), spun out of RTA in December 2023.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description goes beyond that by disclosing time-dependent behavior (tariff changes since 4 April 2025, VAT from 1 June 2026, cash phase-out) and the free-period rules, which materially affects how an agent should answer.
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?
Content is front-loaded and every block (tariffs, VAT, free periods, SMS format, Mawaqif disambiguation) carries real information. It is dense and reads more like an FAQ excerpt than a tight tool definition, but nothing is wasted or redundant.
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 zero-parameter reference tool with an output schema (so return structure needn't be explained), the description covers the domain facts an agent needs. The main omission is an explicit statement of what the tool returns versus what it merely summarizes.
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?
The tool takes zero parameters and the schema is an empty object, so there are no parameter semantics to document. Baseline for a zero-parameter tool is 4, and nothing in the description contradicts the schema.
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 the specific resource and its scope: Dubai parking zones, tariffs, VAT, free periods, and the mParking shortcode. It is not a tautology and it clearly distinguishes itself from the Abu Dhabi 'Mawaqif' system. It stops short of stating an explicit verb (e.g., 'returns reference data for'), so it is clear but not perfectly framed.
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. The 'CRITICAL' note effectively tells the agent when NOT to use this (Abu Dhabi/Mawaqif queries), which is genuinely helpful routing, but there is no explicit when-to-use statement nor routing to relevant siblings like rta_salik_tariff for tolls or nol_card_guide for Nol cards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdpl_complianceBRead-onlyIdempotent
Return data protection compliance details for a UAE jurisdiction.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | No | One of "uae_federal" (Federal Decree-Law 45/2021), "difc" (DIFC Law 5/2020), "adgm" (ADGM DPR 2021). | uae_federal |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is fully covered by structured data. The description adds only that results are jurisdiction-scoped, and the existence of an output schema removes the need to describe return values. It adds a little context but no behavioral detail beyond 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 efficient sentence with the resource and scope front-loaded and no filler. It is arguably under-specified rather than over-long, but structurally it wastes nothing.
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 annotations covering safety and an output schema covering returns, the definition is functional but thin: it never indicates what 'compliance details' comprise (obligations, penalties, law citations) or whether the output differs materially across the three jurisdictions. For a reference-lookup tool this is adequate but leaves the agent guessing at the payload's nature.
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 schema itself enumerates the three valid jurisdiction values with their underlying laws, so the parameter is fully documented. The description's phrase 'for a UAE jurisdiction' merely echoes the schema and adds no syntax or default information beyond it, making the baseline 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?
States a specific verb (Return) plus resource (data protection compliance details) and scopes it to a UAE jurisdiction, so an agent can tell it apart from non-compliance siblings like aml_requirements or esr_status. The only gap is that it doesn't distinguish this from any closely related privacy/compliance tool, though none obvious exists in the sibling list.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives or related tools. The agent must infer that this is the lookup to call for PDPL questions, with nothing in the text confirming that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_queryBRead-onlyIdempotent
Build a multi-tool execution plan for a query category.
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | No | Optional dict of named inputs to substitute into the plan's args templates. | |
| category | Yes | One of: founder_setup, market_research, compliance_checkup, relocation. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds the one trait annotations cannot convey - that the output is a multi-tool execution plan - but says nothing about what the plan contains or how it should be consumed.
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 with no filler. It is efficient, though arguably too terse for a planning tool whose output type needs framing.
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?
An output schema exists so return values need not be explained, and parameters are fully documented. However, for a tool whose job is generating an executable multi-tool plan, the description never conveys what a 'plan' is or how it should be used, leaving the workflow context thin.
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%, with the schema enumerating category values and explaining the inputs substitution dict, so the baseline is 3. The description's 'query category' wording maps to the category parameter but adds no format or semantic detail beyond the schema.
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 (build) and resource (multi-tool execution plan) scoped to a query category, so an agent can distinguish it from list_plan_categories or recommend_tools. The notion of a 'query category' is only clarified by the schema's enum, not the description.
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 offers no when-to-use guidance, no prerequisites, and no reference to alternatives such as recommend_tools or list_plan_categories, which an agent would need to decide between. Usage is only implied by the phrase 'for a query category'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
portal_guideBRead-onlyIdempotent
Look up a UAE government portal by id or by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | Substring search across portal name, type, and operator. | |
| portal_id | No | Portal id slug, e.g., "uae_pass", "basher", "invest_in_dubai", "emaratax", "mohre", "gdrfa_dubai", "icp", "u_ae", "dubai_now", "dubai_rest", "developer_dubai". |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is fully covered. The description adds nothing beyond that: it does not say what happens if neither parameter is supplied, whether results are exhaustive or paginated, or any auth/rate constraints. With annotations carrying the burden, a low-but-not-failing score is appropriate.
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 with zero filler; the lookup target and both access paths come first. Nothing in the sentence is redundant with the title or repeated.
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?
An output schema exists, so return values need not be explained, and annotations cover safety. However, the tool accepts two optional parameters with zero required ones, and the description never states the behavior when neither is provided (return all portals vs. error), which is the one real gap for an agent deciding how to call it.
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 schema itself is rich (keyword substring scope across name/type/operator, plus id slug examples). The description merely restates "by id or by keyword" without adding format or matching semantics, so it sits at the baseline for well-documented schemas.
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 and resource ("Look up a UAE government portal") and the two access modes (by id or by keyword), which is concrete and unambiguous. It does not differentiate from sibling tools that also surface UAE government information (e.g. data_dubai_search, list_banks), but no near-duplicate sibling exists, so the gap is minor.
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?
There is no guidance on when to prefer portal lookup over related siblings like data_dubai_search or chamber_of_commerce_info, and no statement of exclusions or prerequisites. The agent is left to infer usage entirely from the one-line purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prayer_times_calendarCRead-onlyIdempotent
Get prayer times for an entire month in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City name (e.g., "Dubai"). | |
| year | Yes | Gregorian year. | |
| month | Yes | Month number, 1 to 12. | |
| method | No | Calculation method ID. 8 = Gulf Region (default). | |
| school | No | Asr school. 0 = Shafi (default). | |
| country | No | Country name. Defaults to "United Arab Emirates". | United Arab Emirates |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing behavioral beyond that — no note on data source, calculation-method effects on results, or whether results vary by country/method. It neither contradicts nor enriches 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 tight sentence with the resource and scope front-loaded and no filler. 'In one call' is mildly redundant with 'entire month' but costs little.
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?
An output schema exists so return values need no explanation, and the schema fully documents inputs. The remaining gap is the absence of any routing information versus prayer_times_for, which is the one thing an agent needs beyond structured fields.
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% with all six parameters (city, year, month, method, school, country) documented including defaults and examples. The description adds no parameter-level meaning, so the baseline 3 applies 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (prayer times) with an explicit scope qualifier (entire month in one call), so an agent knows this is the bulk/monthly variant. It does not name the sibling prayer_times_for, so the differentiation from the single-day tool is left to inference.
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 phrase 'in one call' hints at a batching use case but there is no explicit when-to-use guidance, no exclusion conditions, and no mention of prayer_times_for as the alternative for a single day. The agent must infer the routing decision entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prayer_times_forARead-onlyIdempotent
Get the five daily prayer times for a UAE city or arbitrary coordinates.
Pass either a city name OR a latitude+longitude pair, not both. The response includes Fajr, Sunrise, Dhuhr, Asr, Sunset, Maghrib, Isha, plus Imsak (start of fasting), Midnight, Firstthird, and Lastthird, along with the matching Hijri and Gregorian dates.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City name (default Dubai). Use this OR coordinates. | |
| method | No | Calculation method ID. 8 = Gulf Region (default for UAE), 16 = Dubai experimental (matches Dubai mosque announcements), 4 = Umm Al-Qura Makkah, 3 = Muslim World League. | |
| school | No | Asr school. 0 = Shafi (default for UAE), 1 = Hanafi. | |
| country | No | Country name. Defaults to "United Arab Emirates". | United Arab Emirates |
| date_str | No | ISO date YYYY-MM-DD. Defaults to today. | |
| latitude | No | Latitude in decimal degrees, -90 to 90. | |
| longitude | No | Longitude in decimal degrees, -180 to 180. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety and idempotency profile is fully covered. The description adds the enumerated return fields, but that content largely overlaps the output schema and adds no auth, rate-limit, or fallback behavior context.
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?
Three sentences, front-loaded with the core purpose, followed by the input constraint and the return contents. No filler. The response-field enumeration is slightly long and partially redundant with the output schema, keeping it short of a 5.
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?
An output schema exists, so return values need not be explained. The description covers both input modes and their exclusivity, which is what an agent needs to invoke it correctly. Only the sibling disambiguation against prayer_times_calendar 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 description coverage is 100% (each of the 7 params including method/school IDs is documented), so the baseline is 3. The description goes beyond the schema by stating the mutual-exclusivity rule between city and coordinates, a cross-parameter constraint the schema cannot express, which lifts it above baseline.
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') plus resource ('the five daily prayer times') and both supported scopes (UAE city or arbitrary coordinates). An agent immediately knows the operation. It does not, however, distinguish itself from the sibling prayer_times_calendar, which an agent could easily confuse for this tool.
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?
Gives a concrete input constraint — 'Pass either a city name OR a latitude+longitude pair, not both' — which is genuine usage guidance. But it offers no when-to-use/when-not guidance relative to alternatives such as prayer_times_calendar, 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.
pro_services_estimateBRead-onlyIdempotent
Estimate annual PRO service cost.
| Name | Required | Description | Default |
|---|---|---|---|
| use_retainer | No | True to force a monthly retainer estimate. | |
| visas_per_year | No | How many visa transactions are expected per year. | |
| license_renewals_per_year | No | How many license renewals per year. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds no behavioral context beyond the purpose—it does not mention assumptions, calculation basis, or what the output includes.
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 with zero wasted words. It is appropriately sized for a simple estimation tool.
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?
Given that the schema fully documents all parameters, annotations cover safety traits, and an output schema exists, the description only needs to state the purpose—which it does. It could optionally mention calculation assumptions or when to prefer it over other estimates.
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%, so all three parameters are fully documented in the schema. The description adds no additional parameter meaning, which matches the baseline for high-coverage schemas.
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 (Estimate) and resource (annual PRO service cost). It is clear what the tool does, but it does not explicitly differentiate itself from the many other *_estimate sibling tools beyond the subject matter itself.
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 provides no guidance on when to use this tool versus alternatives like rent_estimate, setup_timeline_estimate, or legal_translation_estimate. No prerequisites or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qfzp_checkBRead-onlyIdempotent
Check QFZP eligibility for a free zone business.
Returns one of: not_eligible, potentially_qualifying, verify, with the reason. SaaS requires assessment of the counterparty, exclusions and any qualifying intellectual-property income.
| Name | Required | Description | Default |
|---|---|---|---|
| industry | No | general | |
| is_free_zone | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description adds the fact that results enumerate three outcomes plus a reason and that SaaS income triggers counterparty/exclusion/IP assessment, but with an output schema present this return-value detail is largely redundant.
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?
Front-loads the purpose in one line, then adds the outcome set and a domain caveat in two tight sentences. Slight waste in restating the enumerated return values that the output schema already provides.
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 simple read-only check with an output schema and full annotation coverage, the definition is adequate, but it omits any explanation of its two input parameters. An agent can call it, but cannot reason about how industry or is_free_zone affect the verdict.
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 0% for the two parameters (industry, is_free_zone), and the description never mentions either, so neither field's meaning or accepted values are explained anywhere. The description fails to compensate for the coverage gap.
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 and resource ('Check QFZP eligibility for a free zone business'), which is a distinct corporate-tax concept an agent can tell apart from eligibility-adjacent siblings like dul_eligibility or golden_visa_check. It does not explicitly name a sibling, so it falls short of a 5.
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?
There is no guidance on when to invoke this check versus the other eligibility/compliance tools in the family (dul_eligibility, esr_status, golden_visa_check). The SaaS sentence hints at scope but is a domain caveat, not a when/when-not instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qibla_directionARead-onlyIdempotent
Get the Qibla compass bearing from a given location toward Mecca.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Latitude in decimal degrees. | |
| longitude | Yes | Longitude in decimal degrees. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that the bearing is computed from a location toward Mecca, but provides no additional behavioral context beyond what the annotations and schema already supply.
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?
The description is a single, front-loaded sentence with no wasted words. It states the operation, input source, and target efficiently.
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 simple two-parameter read-only computation with an output schema and rich annotations, the description is complete enough. It need not explain return values because the output schema exists, and the annotations cover safety behavior.
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%, so latitude and longitude are fully documented in the schema. The description only says 'from a given location' and does not add syntax, coordinate system, or format details beyond the schema baseline.
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 states a specific verb ('Get'), resource ('Qibla compass bearing'), source ('from a given location'), and target ('toward Mecca'). It is clearly distinguishable from siblings such as prayer_times_for or weather tools.
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 the tool is used to obtain a Qibla bearing from coordinates, but it does not explicitly state when to use it versus alternatives or any prerequisites. Usage is inferable from the purpose, but no routing guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quran_ayahARead-onlyIdempotent
Get a single ayah by reference (e.g., "2:255" for Ayat al-Kursi).
| Name | Required | Description | Default |
|---|---|---|---|
| edition | No | Edition slug. Default `quran-uthmani`. | quran-uthmani |
| reference | Yes | surah:ayah (e.g., "2:255") or absolute ayah number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, fully covering the safety/behavior profile, so the description's burden is light. It adds nothing beyond that – no note on edition fallback behavior, missing-ayah handling, or external API dependence despite openWorldHint=true.
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 with zero waste; the resource and its scoping are stated before the illustrative example. Nothing extraneous.
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 simple single-verse lookup with an output schema present (so return shape need not be described) and 100% schema coverage, the description is largely sufficient. It is only slightly thin on distinguishing itself from the neighboring Quran tools.
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%, so both the reference format ("surah:ayah" or absolute number) and the edition slug with default are already documented in the schema. The description's example duplicates the schema's own example, adding no new parameter meaning. Baseline 3 is correct.
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 and resource ("Get a single ayah") and scopes it to a single verse by reference, which implicitly distinguishes it from quran_surah/quran_juz/quran_search. The inline example clarifies intent, but no sibling is named explicitly, so differentiation still requires inference.
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 "a single ayah by reference" – the agent can infer this is for looking up one specific verse rather than a range or text search. However, it never states when to prefer quran_surah, quran_juz, or quran_search instead, nor any preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quran_juzBRead-onlyIdempotent
Get a full juz (1 to 30) in a specific edition.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Juz number, 1 to 30. | |
| edition | No | Edition slug. Default `quran-uthmani`. | quran-uthmani |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context of its own (no return format, no pagination, no edition fallback behavior), which is acceptable but unremarkable given the annotation coverage.
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 short sentence with the scope constraint front-loaded and zero filler. Nothing could be removed without losing meaning.
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?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description is adequate for a simple read-only retrieval tool; only the routing relative to verse-level siblings is left implicit.
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%, so both 'number' (1-30) and 'edition' (default quran-uthmani) are fully documented in the schema itself. The description restates the 1-30 range and the edition concept without adding syntax or format detail, so 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?
States a specific verb and resource ('Get a full juz') with the valid range (1 to 30) and the edition qualifier. An agent can distinguish it from the verse-level siblings, but it never names quran_surah/quran_ayah/quran_search to clarify the granularity boundary.
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?
No when-to-use guidance and no mention of alternatives, even though the sibling list contains quran_surah, quran_ayah, and quran_search that overlap in domain. The agent must infer that this is for whole-juz retrieval rather than surah or single-ayah access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quran_searchCRead-onlyIdempotent
Search the Quran for a phrase.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return, from 1 to 100. Defaults to 25. | |
| query | Yes | Phrase to search for. | |
| surah | No | Surah number or "all". | all |
| offset | No | Zero-based match offset for pagination. | |
| edition | No | Edition slug or language code (e.g., "en" or "ar"). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no note on how results are ranked, whether matching is exact-phrase or fuzzy, or how language/edition affects matches.
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 with zero filler. It is efficient, though its brevity is close to under-specification rather than disciplined concision.
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?
An output schema exists so return values need not be explained, and the input schema is fully documented, which keeps the tool usable. Still, for a 5-parameter search with a surah filter and edition/language switch, the description gives no hint that results can be scoped or paginated, leaving the agent to discover capability entirely from the schema.
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% with defaults and ranges documented for every parameter, so the schema carries parameter meaning entirely. The description mentions 'phrase' which loosely maps to the required query, but adds no semantics for surah scoping, edition, limit or offset — baseline 3 is 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?
States a specific verb (search) and resource (the Quran) plus the search unit ('a phrase'), which is enough to tell it apart from the reference-style siblings quran_surah, quran_ayah and quran_juz. It stops short of explicitly contrasting itself with those siblings, so it is clear but not maximally differentiating.
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?
There is no guidance on when to use this versus quran_surah/quran_ayah (e.g., 'use when you don't know the verse reference'), no mention of language/edition selection behavior, and no exclusions. The agent must infer the routing decision from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quran_surahARead-onlyIdempotent
Get a full surah by number (1 to 114) in a specific edition.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Surah number, 1 (Al-Fatiha) to 114 (An-Nas). | |
| edition | No | Edition slug. Default `quran-uthmani` (Arabic Uthmani). Common alternatives: `en.sahih` (Sahih International English), `en.pickthall`, `ur.jalandhry` (Urdu). | quran-uthmani |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered without the description. The description adds no further behavioral context (no note on edition fallback, rate limits, or what happens with an invalid number), so it neither helps nor contradicts.
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 with no wasted words; the resource, the key constraint, and the variation axis all appear immediately.
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 two-parameter, read-only lookup with a 100%-covered schema and an output schema, the description covers everything needed to invoke it correctly. Only the sibling-routing guidance 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 description coverage is 100%, with the number range and edition slug alternatives already documented in the schema. The description merely restates both ("by number (1 to 114)", "in a specific edition") without adding format or validation detail, so 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?
The description gives a specific verb and resource ("Get a full surah") plus scope ("by number (1 to 114) in a specific edition"), which is more precise than the bare name. It does not explicitly name how it differs from quran_ayah or quran_search, though "full surah" implicitly distinguishes it from a single-verse lookup.
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: "full surah" suggests this is for retrieving an entire chapter rather than a verse (quran_ayah) or a search (quran_search), but no alternative is named and no condition for choosing between them is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_toolsARead-onlyIdempotent
Recommend MCP-Dubai tools for a natural-language query.
Uses BM25 over every registered tool's name, description, and tags so the LLM can find the right tool without scanning the full catalogue.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What you are trying to do, in plain English or Arabic. | |
| top_k | No | Maximum number of recommendations to return (default 5). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered; the description adds genuinely new context by disclosing the ranking mechanism (lexical BM25 over name/description/tags), which tells an agent results are keyword-matched rather than semantically inferred. It does not mention ranking order or the limits of lexical matching, but the added context is substantial 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?
Two short sentences with the action front-loaded and the mechanism as supporting detail; nothing is wasted or repeated.
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 an output schema present, the description needn't explain return values, and annotations cover the safety profile; parameters are fully documented in the schema. The remaining gap is the absence of guidance on how this discovery tool relates to sibling routing tools, but for a two-parameter lookup this is nearly complete.
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 both parameters (query, top_k with default 5) are already documented in the schema. The description adds no format, length, or specificity guidance for the query beyond what the schema states, so the 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?
States a specific verb and resource ('Recommend MCP-Dubai tools') plus the retrieval mechanism (BM25 over names, descriptions, tags), which is enough for an agent to know this is a meta-discovery tool rather than a domain lookup. It does not explicitly distinguish itself from sibling routing-style tools such as plan_query or list_features, which is the only thing keeping it off a 5.
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 clause 'so the LLM can find the right tool without scanning the full catalogue' implies the situation to use it (unknown tool choice, large catalogue) but never states when not to use it or names an alternative like plan_query or list_features. Usage is inferable rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rental_dispute_guideARead-onlyIdempotent
Return the Rental Disputes Centre (RDC) filing guide.
If annual_rent is provided, also compute the filing fee (3.5% of annual rent, AED 500 floor, AED 20,000 cap).
| Name | Required | Description | Default |
|---|---|---|---|
| annual_rent | No | Optional annual rent in AED to compute the filing fee. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds genuinely new behavioral detail: the fee is computed only when annual_rent is supplied, using an explicit formula (3.5%, AED 500 floor, AED 20,000 cap). No contradiction with 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?
Two short sentences with zero waste; the primary purpose is front-loaded and the conditional behavior follows immediately.
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?
An output schema exists, so return values need no explanation, and the one optional parameter plus its conditional fee logic are fully covered. Nothing an agent needs to invoke this read-only guide tool correctly 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%, so the baseline is 3, but the description goes beyond the schema's terse 'optional annual rent' note by spelling out exactly what supplying it produces and the full fee formula. That is meaningful added semantics for the single optional parameter.
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 and resource — 'Return the Rental Disputes Centre (RDC) filing guide' — and describes the conditional fee computation. The resource is concrete and distinct from rental-adjacent siblings like ejari_guide or rera_rent_increase, though it never names or contrasts those alternatives explicitly.
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: an agent can infer this is for RDC filing questions, but there is no statement of when to prefer it over ejari_guide, rera_rent_increase, or other 'guide' siblings, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rent_estimateARead-onlyIdempotent
Annual rent range (AED) for an area and bedroom size.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Area name, case-insensitive (e.g. Dubai Marina, JLT, JVC). | Dubai Marina |
| bedrooms | No | One of: studio, 1BR, 2BR. | 1BR |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, non-destructive, and not open-world, so safety behavior is covered. The description adds that the value is an annual range in AED, but it does not disclose source, freshness, coverage assumptions, or limitations.
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?
The description is a single front-loaded sentence with no wasted words. For a simple lookup tool, this is appropriately concise.
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?
Given the simple two-parameter input, full schema coverage, annotations, and an output schema, the description is largely complete for calling the tool. The main omissions are provenance/freshness and explicit sibling-tool routing, which are secondary for this straightforward estimate.
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 area and bedrooms parameters are already well documented in the schema. The description restates both parameters but adds no extra syntax, constraints, or interpretation beyond the schema.
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 states a specific resource and metric: annual rent range in AED for an area and bedroom size. It is clear what the tool returns, though it does not explicitly differentiate itself from rental-related siblings such as dld_search_rent_contracts or rera_rent_increase.
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 description: estimate rent for a given area and bedroom size. However, there is no explicit guidance on when to use this versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rera_rent_increaseARead-onlyIdempotent
Compute the maximum legal rent increase under Dubai Decree 43 of 2013.
Maps how far the current rent sits below the area average market rent (RERA Rent Index) to the allowed increase slab and returns the gap percentage, the max increase percentage, and the max new rent.
| Name | Required | Description | Default |
|---|---|---|---|
| area_average_rent | Yes | The area average market rent in AED (RERA Rent Index). | |
| current_annual_rent | Yes | The current annual rent in AED. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lowered. The description earns credit beyond that by disclosing the underlying mechanism: it maps the gap versus the RERA Rent Index to the allowed 'increase slab' and reports gap %, max increase %, and max new rent, making the derivation transparent.
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 short, front-loaded sentences that lead with the regulation and then the mechanism; no filler. It lightly describes return values that the output schema already covers, a minor redundancy, but the text is tight overall.
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?
An output schema exists, so return values need not be spelled out, and annotations carry the safety profile. The description covers purpose and methodology adequately; the only shortfall is the absence of invocation context relative to the many rental-domain siblings.
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%, with both required AED parameters documented in the schema, so the baseline is 3. The description adds no extra meaning (units, rounding, edge cases) beyond what the schema already provides.
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 and resource ('Compute the maximum legal rent increase') tied to a named regulation (Dubai Decree 43 of 2013), so the agent knows exactly what computation runs. It does not explicitly name or contrast the nearest sibling (rent_estimate/rental_dispute_guide), so it stops short of the top band.
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 use case is inferable from the domain ('maximum legal rent increase' when a tenancy renewal is in question), but there is no explicit when-to-use, no when-not, and no routing to alternatives such as rent_estimate or rental_dispute_guide. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rta_gtfs_static_urlARead-onlyIdempotent
Return download details for the RTA GTFS static feed.
The direct file download is anonymous (a 7z archive, no credentials); only the credentialed query API requires OAuth. The old Transitland mirror is dead (HTTP 401, 2021-era data). No GTFS-RT (real-time) feed exists for Dubai RTA.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the credential model (anonymous 7z download, OAuth only for the query API), a dead alternate source (Transitland mirror returning 401 with 2021-era data), and the absence of any real-time feed. These are actionable facts an agent cannot infer from the schema or 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?
The purpose is front-loaded and each following sentence carries a distinct fact (auth model, dead mirror, no RT feed). It is slightly longer than the minimum but nothing is 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 an output schema present and no parameters, the description need not explain return values or inputs. It covers the access/auth situation, a deprecated alternative, and feed scope, leaving no obvious question for the caller.
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?
There are zero parameters, so the baseline is 4 and there is nothing parameter-wise for the description to add or omit. No syntax detail is required.
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 first sentence gives a specific verb and resource ('Return download details for the RTA GTFS static feed'), which is unambiguous. It does not explicitly name a sibling or contrast itself with the rta_* tools, so it stops short of a 5, but the resource is distinctive enough that an agent can place it.
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 resource name rather than stated. There is no explicit 'use this when...' and no named alternative tool, though the note that no GTFS-RT feed exists faintly bounds the use case. Adequate but with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rta_salik_tariffARead-onlyIdempotent
Return Salik toll tariff reference data.
Tier 1, requires Dubai Pulse credentials.
From 2026-06-01 a 5% VAT applies to tolls and tag activation fees (AED 4 becomes AED 4.20, peak AED 6 becomes AED 6.30); the response includes the VAT-inclusive amounts.
Only the tariff is public. Account balances, trips, and violations are NOT exposed via any public API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuinely non-redundant behavior: the credential tier, the 2026-06-01 5% VAT change with concrete before/after amounts, and the fact that returned amounts are VAT-inclusive.
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?
Four short sentences, front-loaded with the purpose, then credential requirement, then the VAT detail, then the scope limitation. Every sentence carries information an agent needs; the VAT parentheticals are specific rather than padding.
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 zero params, an output schema present, and rich annotations, the description only needs to supply credentials, timing nuance, and scope. It does all three, so nothing an agent needs to call this correctly 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?
There are zero parameters and the schema forbids additional properties, so the baseline is 4. The description correctly adds nothing about parameters because none exist, leaving no semantic gap.
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 and resource ('Return Salik toll tariff reference data'), which is clearly distinct from the sibling estimator tool salik_toll_estimate. However, it never names that sibling or explicitly contrasts reference data with an estimate, so the differentiation is inferred rather than stated.
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?
Gives a clear precondition ('Tier 1, requires Dubai Pulse credentials') and a scope exclusion ('Account balances, trips, and violations are NOT exposed via any public API'), which steers the agent away from expecting account-level data. It does not name an alternative tool for estimates or violations, so guidance is contextual but not a full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rta_search_bus_routesCRead-onlyIdempotent
Search Dubai bus routes via Dubai Pulse.
Tier 1, requires Dubai Pulse credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| origin | No | ||
| route_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety behavior is covered. The description adds genuinely new behavioral context by disclosing the credential/Tier-1 requirement, but says nothing about pagination, the meaning of limit, or the shape of results for an open-world remote source.
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 short sentences with the core purpose front-loaded and no filler. It is efficient, though arguably under-specified rather than tight — the credential note is useful but the whole definition is very thin for a 3-parameter tool.
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?
An output schema exists, so return values need not be explained. But with three fully undocumented parameters, no usage guidance, and no sibling differentiation, the definition leaves significant gaps for an agent deciding whether and how to call it.
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 0% and the three parameters (limit, origin, route_number) are completely undocumented in both schema and description. The description gives no hint that origin and route_number act as optional filters or that limit caps result count, leaving the agent to guess parameter intent entirely.
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 and resource ('Search Dubai bus routes') plus the underlying data source (Dubai Pulse), so the agent knows what is being queried. However, it makes no attempt to differentiate from adjacent RTA siblings such as rta_search_metro_stations or rta_gtfs_static_url, which an agent with ~100 siblings would benefit from.
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 only guidance is the prerequisite 'Tier 1, requires Dubai Pulse credentials', which tells the agent about access requirements but not when to select this tool over metro station search or the GTFS static URL. There is no explicit when-to-use, when-not-to-use, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rta_search_metro_stationsARead-onlyIdempotent
Search Dubai Metro stations via Dubai Pulse.
Tier 1, requires Dubai Pulse credentials.
Covers operating lines only. Blue Line (under construction, opening 2029-09-09) and Gold Line (approved 2026, opening 2032-09-09) stations are not in the dataset yet.
| Name | Required | Description | Default |
|---|---|---|---|
| line | No | Optional line filter (Red, Green, Route 2020). | |
| limit | No | Max records. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: the credential/tier requirement and the fact that Blue and Gold Line stations are absent from the dataset, which prevents the agent from wrongly concluding a station doesn't exist.
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?
Three short, front-loaded sentences with no filler: purpose, access requirement, coverage caveat. The construction-date details for Blue/Gold Line are slightly verbose but they directly justify why those lines are missing.
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 an output schema present, return values need not be described. The description covers the source, the access tier, and the dataset boundary — everything an agent needs beyond the structured fields to call this correctly.
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% — the schema already documents 'line' (Red, Green, Route 2020) and 'limit' (max records). The description adds no syntax or format guidance beyond that, so the 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?
States a specific verb+resource ('Search Dubai Metro stations') and names the upstream source (Dubai Pulse), so the agent knows exactly what data is returned. Sibling differentiation is only implicit — it doesn't say it is the metro counterpart to rta_search_bus_routes — but the resource is unambiguous.
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 gives prerequisites ('Tier 1, requires Dubai Pulse credentials') and a scope constraint ('operating lines only'), which tells the agent when this tool is valid. However, it never names an alternative tool or states when not to use it (e.g. vs rta_search_bus_routes or rta_gtfs_static_url), so routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salik_toll_estimateARead-onlyIdempotent
Deterministic Salik toll (AED) for a time of day using the official variable-pricing windows. Figures are VAT-inclusive (5% VAT applies at the point of use from 2026-06-01).
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | 'weekday' or 'sunday' (Sunday has a flat toll outside the free window). | weekday |
| time_of_day | No | 24-hour HH:MM, e.g. '08:00'. | 08:00 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, closed-world safety. The description adds genuinely new context: results are deterministic (no rate fluctuation or randomness), figures are VAT-inclusive, and the 5% VAT rule takes effect from 2026-06-01 — a time-dependent behavior an agent could not get from the schema. It stops short of stating what happens in the free window or which timezone applies.
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 output and currency, followed by the VAT qualifier. No wasted text; the parenthetical VAT note is dense but earns its place. Slight loss for the line-wrapped formatting that makes the qualifier feel like an afterthought.
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?
An output schema exists, so return-value explanation is unnecessary, and the tool is a cheap read with only two optional parameters. The remaining gap is minor but real: no statement about timezone assumptions or behavior inside the free window, which matters for a toll estimator.
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%, so both parameters (day, time_of_day) are already documented with defaults and allowed values. The description reinforces the temporal framing but adds no syntax or edge-case detail beyond the schema. 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?
States a specific verb+resource: returns a deterministic Salik toll in AED for a given time of day, computed from the official variable-pricing windows. That is concrete and actionable. It does not, however, contrast itself with the sibling rta_salik_tariff, so the agent must infer which of the two to call.
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: it is the tool to call when a specific toll amount for a specific time is needed. There is no explicit 'use this instead of rta_salik_tariff when...' routing, no mention of prerequisites, and no statement of what the tool does not cover (e.g. multiple gates, monthly passes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
school_fee_estimateBRead-onlyIdempotent
British-curriculum annual school fee range plus the KHDA fee rules, including the 2026-27 fee freeze (no increase allowed that year).
| Name | Required | Description | Default |
|---|---|---|---|
| stage | No | One of: foundation_primary, primary, secondary. | primary |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 safety is covered. The description contributes real domain behavior by stating that the output is a range (not a precise figure) and that KHDA fee rules incl. the 2026-27 freeze are baked in, but it says nothing about where the numbers come from, how current they are, or whether non-British curricula are excluded.
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 dense sentence with no filler, and the most decision-relevant element (annual fee range, British curriculum) is front-loaded. It is a sentence fragment rather than a stated action, which slightly weakens it.
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?
An output schema exists, so return shape need not be explained, and annotations cover the safety profile. However, for a cost-estimate tool the description leaves open whether the result covers one school, a cohort of schools, or a typical range, and how it relates to the sibling khda school-lookup tools — a gap the agent must guess at.
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 'stage' parameter is documented in the schema with an enum list and a default, so the description need not restate it. It does implicitly constrain the domain to British-curriculum (relevant to the stage values), but adds no new parameter meaning. Baseline 3 applies when the schema does the heavy lifting.
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 states a concrete deliverable: an annual fee range for British-curriculum schools plus the applicable KHDA fee rules, with the 2026-27 freeze called out. An agent can tell this apart from khda_search_school or khda_list_curricula, though the description never uses an explicit verb (estimate/return) and never names the sibling it replaces.
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?
There is no when-to-use statement, no prerequisites, and no routing to or away from alternatives such as khda_search_school (for finding a specific school) or rent_estimate/dewa_bill_estimate for other cost categories. The scope is implied by the subject matter only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_advisorARead-onlyIdempotent
Recommend the best jurisdiction for setting up a business in Dubai.
Cross-references curated free zones, visas, banks, and tax rules
(the headline biz/* feature). Returns a ToolResponse envelope with a
structured recommendation: jurisdiction (mainland, an eligible free
zone with the applicable DET licence or permit, or offshore), candidate
free zones, reasoning, warnings, estimated cost range, timeline, and
next steps. Always returns a knowledge block with its latest recorded
date, any targeted scope, volatility, verify_at, and disclaimer.
| Name | Required | Description | Default |
|---|---|---|---|
| activity | Yes | Business activity description (e.g., "SaaS", "consulting", "trading", "ecommerce"). | |
| industry | No | Industry category. One of: general, saas, tech, ecommerce, consulting, fintech, ai, blockchain, crypto, trading, import_export, manufacturing, logistics, healthcare, media, education, real_estate, fb, retail. | general |
| budget_aed | Yes | Total first-year budget in AED for setup, license, visas, and bank account. | |
| needs_visa | No | True if the founder needs a UAE residence visa from this license. | |
| visa_count | No | How many visas the company needs in total. | |
| needs_local_trade | No | True if the business expects to conduct customer-facing or other licensed activity onshore in Dubai. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: the ToolResponse envelope, the specific recommendation fields (jurisdiction, candidates, warnings, cost range, timeline, next steps), and the always-present `knowledge` block with volatility/verify_at/disclaimer metadata.
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 is front-loaded in the first sentence, followed by feature scope and a compact return-shape summary. Every sentence carries information; nothing is 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 an output schema present and rich annotations, the description needn't explain return values, yet it still summarizes them usefully and covers the knowledge/verification caveats. The only real gap is the absent routing guidance against near-identical siblings.
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%, so every parameter is already documented in the schema with defaults and the industry enum spelled out. The description adds no input-parameter meaning of its own, so the baseline of 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?
States a specific verb and resource: 'Recommend the best jurisdiction for setting up a business in Dubai.' It is unmistakably a recommendation/setup tool, but it never differentiates itself from close siblings such as analyze_setup_decision, compare_free_zones, or setup_timeline_estimate, so an agent still has to guess at routing.
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 gives no when-to-use, when-not, or alternative guidance. It bills itself as 'the headline biz/* feature' but that is promotional rather than a routing rule, leaving the agent to infer whether this supersedes or complements the many other setup-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_timeline_estimateBRead-onlyIdempotent
Return realistic end-to-end timelines for a Dubai setup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the full safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), and the description adds nothing beyond a restatement of the output type. It omits meaningful behavioral context such as whether the timeline is deterministic, what assumptions it encodes (free zone vs mainland, visa vs licence phases), or the granularity of the estimates.
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 with no filler, preamble, or repetition of the tool name. Nothing in it is wasted, even if the content is thin.
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?
An output schema exists, so return-value explanation is not required, and the absence of parameters limits what must be documented. Still, for a tool sitting among many overlapping setup/estimate siblings, the description does not say which setup phases or assumptions the timeline covers, leaving the agent to infer scope.
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?
The tool takes zero parameters, so there are no parameter semantics for the description to clarify; this is the baseline 4 case. Schema description coverage is also reported as 100%, leaving nothing for the description to compensate for.
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 (Return) and resource (realistic end-to-end timelines) scoped to Dubai setup, which is more precise than a bare restatement of the name. However, it never differentiates itself from closely related siblings such as setup_advisor, analyze_setup_decision, pro_services_estimate, or einvoicing_timeline, so an agent must guess which timeline/estimate tool applies.
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?
There is no statement of when to use this tool, when not to, or which sibling to prefer for adjacent questions (e.g. setup_advisor vs pro_services_estimate vs einvoicing_timeline). Usage is only inferable from the name and the phrase 'Dubai setup', which is minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startup_eventsBRead-onlyIdempotent
List Dubai and UAE startup and tech events.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional substring filter on event type or name. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only the geographic scope and topic, with nothing about result volume, ordering, or freshness; with annotations and an output schema present, a 3 is appropriate.
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 with no filler. The scope (Dubai and UAE) and the resource are stated immediately, which is exactly what an agent needs to route the call.
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 simple, read-only list tool with full annotation coverage, a complete output schema, and a documented parameter, the description supplies the essential subject and scope. Only minor details such as result ordering or typical volume are absent, and those are largely covered by the output schema.
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 there is a single optional category parameter already documented as a substring filter. The description does not mention the filter at all, so it adds no meaning beyond the schema; 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?
States a specific verb (List) plus a well-scoped resource (Dubai and UAE startup and tech events), which is unambiguous about what comes back. It does not explicitly differentiate from event-adjacent siblings such as gitex_info or ens_calendar, but the domain is distinct enough that confusion is unlikely.
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?
There is no when-to-use statement, no exclusions, and no pointer to an alternative tool. The agent must infer from the name alone that this is the tool for discovering startup/tech events rather than, say, gitex_info or ens_calendar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submission_guideARead-onlyIdempotent
Return submission guidance for Create Apps Championship.
Includes evaluation criteria, application URL, and the full program list (Championship, Emirati Training Academy, Learning Lab).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world, and non-destructive behavior, so the safety profile is covered. The description adds the content dimensions of the response (evaluation criteria, application URL, program list), but it does not add behavioral context such as caching, permissions, or rate limits. With full annotation coverage, this is adequate but not rich.
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?
The description is two short sentences with the primary purpose front-loaded and a compact list of returned contents. It is appropriately sized for a zero-parameter informational tool and contains 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?
Because the tool takes no parameters and has an output schema, the description only needs to establish purpose and scope. It does that and names the specific response contents, so an agent has enough information to call it correctly.
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?
The tool has zero parameters, so per the baseline rule parameter semantics starts at 4. There is no parameter behavior to explain, and the description correctly does not pretend otherwise.
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 states a specific verb and resource: return submission guidance for Create Apps Championship. It also lists what the guidance includes, so the agent can understand the tool's purpose without opening the schema. It does not explicitly distinguish itself from nearby siblings such as createapps_championship or dcde_programs.
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 specific purpose: this is the tool for submission guidance. However, the description gives no explicit when-to-use guidance, no exclusions, and no named alternative such as createapps_championship for related program information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
synthesize_reportARead-onlyIdempotent
Build a structured Markdown report from named sections.
The freshness footer lists only caller-declared source domains with their recorded update and full-review dates. Omitted sources leave report freshness unverified.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Report title. | |
| sections | No | List of {heading, body} dicts. Each becomes an H2 section. | |
| domains_referenced | No | Knowledge domain names actually used in the report. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds genuinely new context beyond them: a freshness footer is emitted, it lists only caller-declared domains with update and full-review dates, and omitting sources degrades verification. That is meaningful output-side behavior disclosure.
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 short paragraphs, purpose front-loaded in the first sentence, with the second paragraph supplying consequence detail. No filler or restated boilerplate; every sentence carries information.
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 an output schema present, return values need not be described, and the three parameters are fully documented in the schema. The description covers purpose, inputs, and the notable footer side-effect, leaving only minor items (e.g., section formatting constraints, null-section behavior) unstated.
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 baseline is 3. The description still adds meaning beyond the schema by explaining that 'caller-declared source domains' drive the freshness footer and that omissions leave freshness unverified, which gives the agent a reason to populate domains_referenced rather than leave its null default.
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 (Build) plus resource (structured Markdown report) and scope (from named sections). An agent knows exactly what it produces. There is no close sibling producing reports, so the lack of explicit sibling differentiation is a minor gap rather than a defect.
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: the footer paragraph tells the agent that omitting source domains leaves report freshness unverified, which indirectly signals that domains_referenced should be supplied. There is no explicit 'use this when / use X instead' routing, but no sibling overlaps enough to make that critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trademark_registrationARead-onlyIdempotent
Return UAE trademark registration steps, fees, and timeline.
The IP authority is MOET (Ministry of Economy and Tourism, formerly Ministry of Economy). Cabinet Resolution 102 of 2025 introduced new fees with a 50% reduction for members of the UAE National Programme for SMEs.
| Name | Required | Description | Default |
|---|---|---|---|
| is_sme | No | True only for a qualifying member of the UAE National Programme for SMEs. | |
| expedited | No | True to replace the AED 750 regular examination with the AED 2,250 one-day expedited examination (AED 1,500 net surcharge). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint=false. The description adds regulatory context beyond annotations: the authority is MOET and Cabinet Resolution 102 of 2025 introduced new fees with a 50% SME reduction, which helps the agent explain fee differences. It does not cover rate limits or auth needs, but for a static read-only info tool that is reasonable.
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?
Front-loads the core action in the first sentence, then uses the second paragraph for relevant regulatory context. No wasted words; the structure aids scanning.
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 simple read-only knowledge tool with full schema descriptions, clear annotations, and an output schema, the description supplies the essential purpose and regulatory context. Nothing critical is missing for correct invocation.
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%, so baseline is 3. The description adds material meaning beyond the schema for the is_sme parameter by explaining that qualifying SMEs receive a 50% fee reduction, though it does not add meaning for the expedited parameter.
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 ('Return'), resource ('UAE trademark registration'), and scope ('steps, fees, and timeline'). Although it does not name a sibling, the narrow trademark-registration focus implicitly separates it from broader siblings like ip_protection.
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 purpose statement, but the description gives no explicit when-to-use guidance, no exclusions, and does not name alternatives (e.g., ip_protection) for broader IP questions. The regulatory context helps interpret the result but does not route the agent among tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uae_holidaysARead-onlyIdempotent
List all UAE federal public holidays for a Gregorian year.
Lunar holidays (Eid al-Fitr, Eid al-Adha, Hijri New Year, Mawlid,
Arafat Day) are returned with provisional: true until the relevant
MOHRE and FAHR observance circulars are published. Every lunar record
carries official_observance_announced; false identifies a religious-
date candidate rather than a confirmed day off.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Gregorian year. Defaults to the current year in Asia/Dubai. Currently 2026 and 2027 are shipped (2027 lunar dates are astronomical expectations). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, but the description adds valuable data-quality context: lunar holidays are provisional until MOHRE/FAHR circulars are published, and official_observance_announced=false identifies a candidate rather than a confirmed day off. It does not cover rate limits or auth, but the provisional-status caveat is meaningful 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?
The purpose is front-loaded in the first sentence, and the second paragraph explains the non-obvious provisional-flag behavior. It is appropriately sized, though the lunar-holiday caveat could be tightened slightly.
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?
An output schema exists and annotations cover safety traits, so the description need not explain return values. It completes the picture by explaining the provisional and official_observance_announced semantics, which are essential for correct interpretation of lunar holiday records.
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 single parameter is fully documented in the schema, including the Asia/Dubai default and 2026/2027 coverage. The description adds no parameter syntax or constraints beyond what the schema already provides, so the baseline of 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?
The description states a specific verb and resource: 'List all UAE federal public holidays for a Gregorian year.' This clearly distinguishes the tool's scope from next-holiday or single-date tools, though it does not explicitly name sibling alternatives like uae_next_holiday or is_uae_holiday.
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 'for a Gregorian year,' but the description provides no explicit when-to-use guidance, no exclusions, and no routing to alternatives such as uae_next_holiday or is_uae_holiday.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uae_next_holidayARead-onlyIdempotent
Find the next confirmed UAE public holiday on or after a reference date.
An earlier unannounced lunar-date candidate is returned separately as
next_provisional_candidate; it is not presented as a confirmed day off.
| Name | Required | Description | Default |
|---|---|---|---|
| from_date_str | No | ISO date YYYY-MM-DD. Defaults to today. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it discloses that an earlier unannounced lunar-date candidate is returned separately as `next_provisional_candidate` and is deliberately not treated as confirmed, which the agent could not learn from annotations alone.
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 short sentences, front-loaded with the core action and followed by the one caveat that matters. Nothing is 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?
An output schema exists, so return formatting need not be explained, and the description covers the one subtlety an agent must know (confirmed vs provisional). Complete for a single-optional-parameter read tool, with only the sibling routing left implicit.
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 single parameter already documents 'ISO date YYYY-MM-DD. Defaults to today.' The description adds only the notion of a 'reference date' that the search starts from, which is a marginal restatement rather than new semantics.
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 and resource ('Find the next confirmed UAE public holiday') plus the scoping condition ('on or after a reference date'). The word 'next' plus 'confirmed' implicitly distinguishes it from the broader uae_holidays and the boolean is_uae_holiday without ambiguity.
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 phrase 'on or after a reference date,' and the second sentence clarifies what the tool does and does not present as a day off. However, it never explicitly names when to prefer this over uae_holidays or is_uae_holiday, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uae_weatherARead-onlyIdempotent
Current weather and today's high/low for a UAE city (no API key needed).
Covers plain temperature, feels-like, humidity, wind, and conditions,
the everyday weather that the METAR/TAF aviation_weather tools do not
present in a human-friendly way.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | A UAE city. Supported: Dubai, Abu Dhabi, Sharjah, Ajman, Ras Al Khaimah, Fujairah, Umm Al Quwain, Al Ain. | Dubai |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds one useful non-annotation detail — 'no API key needed' — plus an enumeration of returned fields, but says nothing about rate limits, caching, or error 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 short sentences, zero filler, with the core purpose and the differentiator front-loaded. Every clause 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?
An output schema exists, so return values need no explanation, and annotations carry the safety profile. The only real gap is that the description does not route against the forecast/coords weather siblings, leaving that selection to the agent.
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 documents the single `city` parameter with its default and the full supported-city list. The description only restates 'for a UAE city', adding no syntax or format detail beyond the schema, so the baseline of 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?
States a specific verb and resource ('current weather and today's high/low for a UAE city') and explicitly distinguishes itself from the METAR/TAF aviation weather tools. However, it does not name the sibling uae_weather_forecast, so an agent must still infer the boundary between 'today's high/low' and a forecast tool.
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 gives an implied usage rule by contrasting itself with the aviation `weather_uae_icao`/`weather_uae_all` tools ('human-friendly' everyday weather), which is genuine routing guidance. But it never mentions the closer alternatives uae_weather_forecast or weather_by_coords, and there are no explicit when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uae_weather_forecastBRead-onlyIdempotent
Multi-day daily weather forecast for a UAE city (no API key needed).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | A UAE city (see `uae_weather`). | Dubai |
| days | No | Number of forecast days, 1 to 16 (clamped to range). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, and an output schema exists, so the safety/format profile is covered structurally. The description adds 'no API key needed', which usefully signals no auth setup, but omits rate limits, forecast freshness, or error 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?
A single front-loaded sentence with no wasted words. The parenthetical is efficient, though the description is arguably too terse to carry routing guidance.
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?
Output schema and rich annotations cover return values and safety, and the schema documents both params, so the description is only required to add routing context. It largely fails to do so, leaving no explicit differentiation from the several other weather tools.
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%: city and days are both documented with defaults and the 1–16 clamping rule. The description adds no parameter detail beyond what the schema provides, so the 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?
States a specific verb+resource: a multi-day daily weather forecast for a UAE city. This is clear enough to separate it from a current-conditions tool, but it never explicitly names the sibling it differs from (e.g. uae_weather, weather_by_coords, weather_uae_icao), so an agent must infer the distinction.
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 phrase 'multi-day' implies when this tool is chosen over a current-conditions sibling, but no when-to-use, when-not, or alternative is stated. Usage is left to inference from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ubo_filing_guideARead-onlyIdempotent
Return UBO (Ultimate Beneficial Owner) filing requirements.
Cabinet Decision 109 of 2023, in force since 16 November 2023 (it superseded Cabinet Decision 58 of 2020). 25% threshold. 15-day update window. Administrative penalties come from Cabinet Decision 132 of 2023 and are graduated: warning, then up to AED 50,000, then up to AED 100,000.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations confirm safety (readOnlyHint=true), the description adds behavioral context by specifying the data's nature, such as the legal source (Cabinet Decision 109), the effective date, and the specific penalty structure. This informs the agent of the data quality and scope.
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?
The description is dense, but every piece of information (the decision number, date, threshold, penalty figures) is highly relevant and critical knowledge. It is not wasted content, even if it is long.
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?
The description is maximally complete for a knowledge-based lookup tool. It provides the full context of the regulatory requirements, including superseding laws and administrative penalties, which is likely all an AI agent would need to fulfill a complex user query.
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?
There are zero input parameters and the schema coverage is 100%. Therefore, the baseline score of 4 applies. The description does not need to elaborate on parameters that do not exist.
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 purpose is stated explicitly: 'Return UBO (Ultimate Beneficial Owner) filing requirements.' This is precise and clearly differentiates this knowledge retrieval tool from the massive list of sibling operational and market-data tools.
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 tool provides excellent content but poor guidance on intent. It does not instruct the agent on *when* to use this tool versus general regulatory search tools, although its highly specific topic implies a narrow usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vat_filing_calendarARead-onlyIdempotent
Determine the UAE VAT registration requirement and filing frequency.
Treats the input as taxable supplies and imports in the past 12 months: mandatory above AED 375,000, voluntary above AED 187,500. Filing frequency is indicative; the FTA assigns the actual period. Standard rate is 5%. Includes the Federal Decree-Law 16 of 2025 amendments effective 1 January 2026 (reverse-charge invoicing, 5-year VAT credit carry-forward cap, evasion-linked input VAT denial).
| Name | Required | Description | Default |
|---|---|---|---|
| annual_revenue_aed | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 real substance beyond that: the AED 375,000/187,500 thresholds, the caveat that filing frequency is indicative with the FTA assigning the actual period, the 5% standard rate, and the 2026 legal amendments. It stops short of stating the output shape (though an output schema exists).
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?
Front-loads the core purpose, then thresholds, then the legal caveat. Every sentence carries information relevant to invoking the tool correctly. The legal-amendment tail is dense but defensible for a compliance tool.
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?
An output schema exists, so return values need not be described, and annotations cover safety. The description supplies thresholds, rate, and the FTA-discretion caveat an agent would need. The only gap is the slight disconnect between the 'calendar' framing and the actual registration/frequency content.
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?
With one parameter and 0% schema description coverage, the description has to compensate, and it does: 'Treats the input as taxable supplies and imports in the past 12 months' explains what annual_revenue_aed represents and the basis for evaluation. It does not disambiguate units/scope (e.g. imports-only vs combined) explicitly, keeping it below full marks.
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 and resource: 'Determine the UAE VAT registration requirement and filing frequency.' This is clearly distinguishable from siblings since no other tool covers VAT registration. Minor friction: the name references a 'calendar' yet the description covers no actual deadlines/dates, so purpose and name are slightly out of step.
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?
No explicit when-to-use statement or exclusion criteria, and no sibling is referenced (e.g. corporate_tax_estimate or einvoicing_timeline). Usage is only implied by the description of the input basis ('taxable supplies and imports in the past 12 months'). An agent can infer context but is not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vc_listBRead-onlyIdempotent
List active UAE / MENA VCs by stage and sector.
| Name | Required | Description | Default |
|---|---|---|---|
| stage | No | Optional stage focus, one of: pre_seed, seed, series_a, series_b, growth. | |
| sector | No | Optional sector substring (e.g., "fintech", "saas"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds only the useful scope qualifier that it lists 'active' VCs, without explaining result shape, filtering behavior, or pagination; this is adequate but limited given the annotation coverage.
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?
The definition is a single front-loaded sentence with no wasted words. It communicates the resource and the two filter dimensions immediately.
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?
Given the simple read-only nature, full schema descriptions, annotations, and an output schema, the description is largely sufficient for correct invocation. Its main omission is routing guidance versus similar discovery tools, which is reflected in the usage dimension.
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%, with both optional parameters clearly documented. The description restates that filtering is available 'by stage and sector,' but adds no syntax, format, or edge-case guidance beyond what the schema already provides.
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 gives a specific verb and resource: 'List active UAE / MENA VCs' with filtering by stage and sector. It is clear what the tool does, though it does not explicitly distinguish itself from nearby tools such as accelerator_search or grant_programs.
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 implies the tool is used to list VCs, but provides no explicit when-to-use guidance, prerequisites, or alternatives. There is no statement about when to use this versus accelerator_search or other discovery tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visa_detailsARead-onlyIdempotent
Get the full curated record for a single UAE visa type.
| Name | Required | Description | Default |
|---|---|---|---|
| visa_id | Yes | Visa id slug. Examples: "investor_partner", "property_investor_2yr", "employment", "golden_specialized_talent", "golden_investor_real_estate", "golden_entrepreneur", "green_skilled_employee", "green_freelancer", "freelance_permit", "virtual_working", "retirement", "family_dependent", "tourist_30", "tourist_60", "visa_on_arrival". |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only the phrase 'full curated record', conveying that this returns comprehensive detail rather than a summary; it says nothing about auth, caching, or failure behavior for unknown slugs.
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 with zero waste. Nothing to trim and the key qualifier (single, curated) appears early.
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 an output schema to describe the return shape, a fully documented single parameter, and annotations covering safety, the description is largely sufficient. It would be stronger if it pointed at list_visa_types as the way to obtain valid visa_id values.
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 visa_id property carries an extensive list of example slugs, so the schema carries the semantic load. The description adds nothing about the parameter beyond what the schema already documents; 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?
The description states a specific verb (Get) and resource (full curated record for a single UAE visa type), and the word 'single' distinguishes it from a listing tool. However, it never names list_visa_types or visa_recommend, so sibling differentiation is left to inference.
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?
Implicit usage: an agent can infer this is a detail-lookup that requires a known visa_id (as opposed to list_visa_types or visa_recommend). There is no explicit when-to-use/when-not statement or reference to the alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visa_recommendBRead-onlyIdempotent
Recommend a UAE visa type for a given founder/employee profile.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | Age in years (used for retirement visa). | |
| profile | Yes | One of: founder, salaried_employee, freelancer, remote_worker, investor, real_estate_investor, specialized_talent, spouse_or_dependent, retiree, tourist. | |
| has_uae_employer | No | True if there is a UAE-registered employer. | |
| annual_income_aed | No | Annual income in AED for freelancer profiles. | |
| duration_years_min | No | Optional minimum residency duration. | |
| monthly_salary_aed | No | Monthly salary in AED for preliminary screening. | |
| has_uae_trade_license | No | True if the user already holds a UAE trade license. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds no behavioral context beyond that, such as whether the recommendation is advisory only, what factors influence the output, or any limitations. With annotations covering the safety profile, a 3 is the minimum viable score.
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?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a simple recommendation tool.
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?
The description covers the basic purpose and required input, and an output schema exists so return values need not be explained. However, it omits guidance on when to use this tool instead of sibling visa tools, leaving a gap in an environment with many related tools.
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%, so the input schema already documents all seven parameters thoroughly. The description only mentions 'profile' and does not add extra meaning or constraints beyond what the schema provides. Baseline of 3 applies when the schema does the heavy lifting.
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 states a specific verb and resource: 'Recommend a UAE visa type' for a founder/employee profile. It clearly identifies the tool's purpose without being tautological. However, it does not explicitly distinguish itself from sibling tools like list_visa_types, visa_details, or golden_visa_check.
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 gives no when-to-use or when-not-to-use guidance and does not mention alternatives. It only states the input context ('for a given founder/employee profile'), leaving the agent to infer when this tool is preferred over related visa tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weather_by_coordsARead-onlyIdempotent
Current weather plus a short forecast for any latitude/longitude.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of forecast days, 1 to 16 (clamped to range). | |
| latitude | Yes | Latitude, -90 to 90. | |
| longitude | Yes | Longitude, -180 to 180. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds only that the response contains current conditions plus a short forecast, which is useful but thin given an output schema is present.
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 compact sentence with the resource stated first and no filler. Nothing is wasted and it is fully front-loaded.
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 rich annotations, a complete input schema and an output schema, the description only needs to state what the tool returns and its coordinate scope, which it does. The remaining gap is routing guidance between this and the several UAE-specific weather siblings.
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% with clear lat/long bounds and the 'days' range documented in the schema. The description adds no coordinate format, units, or default-day detail beyond that, so the 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?
States a specific verb+resource ('Current weather') plus a scope qualifier ('any latitude/longitude') and mentions a forecast component. It implicitly distinguishes itself from the UAE-specific siblings (uae_weather, weather_uae_icao), but never names an alternative, so the differentiation is left to inference.
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?
No explicit when-to-use or when-not-to-use statement. The phrase 'any latitude/longitude' implies this is the generic/global coordinate-based option versus the UAE-only weather tools, but the agent must infer that routing decision without confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weather_uae_allARead-onlyIdempotent
Get METAR observations for all 6 UAE airports in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| include_taf | No | If True, also fetch TAF forecasts (slower). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered without the description. The description adds only the batch-efficiency trait ('all 6 ... in a single call'); the TAF slowness note lives in the schema, not the description. Useful but modest added value.
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?
One sentence, front-loaded with the verb and resource, with the scoping detail ('all 6 UAE airports') and the batch benefit placed where it is read first. 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?
For a zero-required-parameter, single-boolean tool with an output schema and full annotation coverage, this is sufficient: the agent knows it returns METAR for exactly six airports, that TAF is opt-in via the schema, and that the operation is a safe read.
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 optional parameter (include_taf) is documented there, including its default and the 'slower' trade-off. The description adds nothing beyond the schema, so the 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?
States a specific verb and resource ('Get METAR observations') and adds a concrete scope ('all 6 UAE airports'), which implicitly separates it from the single-airport sibling weather_uae_icao. It stops short of naming that sibling, so the differentiation requires the agent to infer it from the sibling list.
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 phrase 'in a single call' implies this tool is the batch option, but there is no explicit when-to-use statement, no exclusion, and no named alternative (e.g. 'for a single airport use weather_uae_icao'). Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weather_uae_icaoBRead-onlyIdempotent
Get METAR (current weather observation) and optional TAF (forecast) for a UAE airport.
| Name | Required | Description | Default |
|---|---|---|---|
| icao | Yes | ICAO code. Valid: OMDB (Dubai International), OMDW (Al Maktoum), OMSJ (Sharjah), OMAA (Zayed International), OMAL (Al Ain), OMRK (Ras Al Khaimah). | |
| include_taf | No | If True, fetch the TAF forecast as well. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the content distinction between current METAR and forecast TAF, but discloses nothing further (rate limits, coverage gaps, latency) beyond what annotations and schema already convey.
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 with zero filler. The primary resource (METAR) precedes the optional one (TAF), matching the call pattern.
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?
An output schema exists, so return values need not be described, and annotations cover safety semantics. The only material gap is routing against sibling weather tools, which is not an invocation-correctness blocker.
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%, including the enumerated valid ICAO codes and the include_taf default, so the schema carries parameter meaning. The description only echoes the optional TAF behavior, adding no syntax or format detail beyond the schema. 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?
States a specific verb (Get) and specific resources (METAR current observation, optional TAF forecast) scoped to a UAE airport. An agent understands the tool's output well. However, it does not differentiate itself from the many weather siblings (weather_uae_all, uae_weather, uae_weather_forecast, weather_by_coords), leaving the ICAO-based selection criterion implicit.
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?
No when-to-use or when-not-to-use guidance is given. With at least four sibling weather tools in the list, the agent is left to infer that this one is chosen only when an ICAO code is available and city/coordinate lookups are not. No alternative is named.
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.
12 tool updates
v0.4.1- Changed
accelerator_search1 field changed- changed
Input schema / properties / free_only / descriptionPrevious value: -"True to exclude paid accelerators (e.g., AstroLabs)."New value: +"True to return only records explicitly verified free.\nPaid, subsidized, equity-linked, and unknown-cost records are\nexcluded."
- Changed
corporate_tax_estimate2 fields changed- changed
Input schema / properties / industry / descriptionPrevious value: -"Industry category. SaaS triggers a critical warning\nsince it is NOT a Qualifying Activity under MD 229/2025."New value: +"Industry category. SaaS triggers an income-classification\nwarning because qualification depends on the specific transaction." - added
Input schema / properties / is_qfzpAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Explicit QFZP status, including when qualifying income is zero.\nOmission retains inference from a positive qualifying percentage." +}
- Changed
dul_eligibility1 field changed- changed
Input schema / properties / free_zone / descriptionPrevious value: -"Free zone name or slug to check (e.g., \"DMCC\", \"JAFZA\",\n\"IFZA\")."New value: +"Dubai free zone name or slug. DUL coverage is not limited\nto a short participant list."
- Changed
golden_visa_check5 fields changed- added
Input schema / properties / annual_revenue_aedAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Annual revenue of the founder's UAE SME. ICP's\nentrepreneur route needs at least AED 1,000,000, plus approval\nof the venture by an accredited incubator or authority." +} - changed
Input schema / properties / monthly_salary_aed / descriptionPrevious value: -"Basic monthly salary for the specialized talent\ncategory. Must be at least AED 30,000 (verified over the prior\n24 months as of early 2026)."New value: +"Monthly salary for skilled-professional screening.\nAED 30,000 is the published threshold; qualification, employment\nand evidence requirements must also be met." - added
Input schema / properties / prior_exit_value_aedAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Total sale value of ventures the founder\npreviously built and sold. ICP's alternative entrepreneur test\nneeds at least AED 7,000,000. Dubai's GDRFA route uses a Dubai\nFuture Foundation nomination with different criteria." +} - changed
Input schema / properties / project_value_aed / descriptionPrevious value: -"Business project value for the entrepreneur\ncategory. Must be at least AED 500,000 in technical / future\nfields with Ministry of Economy or accredited incubator approval."New value: +"Deprecated. ICP dropped the AED 500,000\nproject-valuation test; a value here is not screened and only\nreturns a note. Use annual_revenue_aed or prior_exit_value_aed." - changed
Input schema / properties / real_estate_value_aed / descriptionPrevious value: -"UAE property value for the investor category.\nMust be at least AED 2,000,000 in approved areas."New value: +"UAE property value for the investor category.\nMust be at least AED 2,000,000; approved-bank mortgages and\napproved-developer off-plan property can count."
- Changed
grant_programs1 field changed- changed
Input schema / properties / grant_type / descriptionPrevious value: -"Optional type filter (guarantee_loan, venture_fund,\nsupport_programs, loan_grant)."New value: +"Optional type filter\n(accelerator_support_and_credit_guarantee, venture_fund,\nsupport_programs_and_loan_route,\ninterest_free_business_loans_and_nonfinancial_support)."
- Changed
quran_search2 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 25, + "description": "Maximum matches to return, from 1 to 100. Defaults to 25.", + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Zero-based match offset for pagination.", + "type": "integer" +}
- Changed
setup_advisor1 field changed- changed
Input schema / properties / needs_local_trade / descriptionPrevious value: -"True if the business needs to invoice mainland\nUAE consumers (B2C) directly without a local distributor."New value: +"True if the business expects to conduct\ncustomer-facing or other licensed activity onshore in Dubai."
- Changed
synthesize_report1 field changed- added
Input schema / properties / domains_referencedAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Knowledge domain names actually used in the report." +}
- Changed
trademark_registration2 fields changed- changed
Input schema / properties / expedited / descriptionPrevious value: -"True for AED 2,250 one-day expedited examination."New value: +"True to replace the AED 750 regular examination with the\nAED 2,250 one-day expedited examination (AED 1,500 net surcharge)." - changed
Input schema / properties / is_sme / descriptionPrevious value: -"True if the applicant qualifies for the 50% SME discount."New value: +"True only for a qualifying member of the UAE National\nProgramme for SMEs."
- Changed
uae_holidays4 fields changed- added
Input schema / properties / year / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / year / defaultPrevious value: -2026New value: +null - changed
Input schema / properties / year / descriptionPrevious value: -"Gregorian year. Currently 2026 and 2027 are shipped\n(2027 lunar dates are astronomical expectations)."New value: +"Gregorian year. Defaults to the current year in Asia/Dubai.\nCurrently 2026 and 2027 are shipped (2027 lunar dates are\nastronomical expectations)." - removed
Input schema / properties / year / typeRemoved value: -"integer"
- Changed
visa_recommend1 field changed- changed
Input schema / properties / monthly_salary_aed / descriptionPrevious value: -"Monthly basic salary in AED, if relevant."New value: +"Monthly salary in AED for preliminary screening."
- Changed
weather_uae_icao1 field changed- changed
Input schema / properties / icao / descriptionPrevious value: -"ICAO code. Valid: OMDB (Dubai International), OMDW (Al Maktoum),\nOMSJ (Sharjah), OMAA (Abu Dhabi), OMAL (Al Ain), OMRK (Ras Al Khaimah)."New value: +"ICAO code. Valid: OMDB (Dubai International), OMDW (Al Maktoum),\nOMSJ (Sharjah), OMAA (Zayed International), OMAL (Al Ain),\nOMRK (Ras Al Khaimah)."
120 tool updates
v0.4.0- First observed
about - First observed
accelerator_search - First observed
addressee_block - First observed
air_quality_by_coords - First observed
air_quality_dubai - First observed
air_quality_dubai_stations - First observed
aml_requirements - First observed
analyze_setup_decision - First observed
attestation_guide - First observed
bank_details - First observed
bank_recommendation - First observed
business_letter_template - First observed
cbuae_base_rate - First observed
cbuae_exchange_rates - First observed
chamber_membership - First observed
chamber_of_commerce_info - First observed
common_founder_mistakes - First observed
compare_free_zones - First observed
corporate_tax_estimate - First observed
cost_of_living_overview - First observed
createapps_championship - First observed
currency_convert - First observed
currency_rates - First observed
data_dubai_entities - First observed
data_dubai_search - First observed
data_dubai_themes - First observed
dcde_programs - First observed
dewa_bill_estimate - First observed
dfm_index - First observed
dfm_list_securities - First observed
dfm_stock_quote - First observed
dld_lookup_broker - First observed
dld_search_rent_contracts - First observed
dld_search_transactions - First observed
dubai_gold_rate - First observed
dul_eligibility - First observed
einvoicing_timeline - First observed
ejari_guide - First observed
emiratisation_requirements - First observed
ens_calendar - First observed
esr_status - First observed
fca_trade_stats - First observed
fcsc_get_dataset - First observed
fcsc_list_organizations - First observed
fcsc_search_dataset - First observed
free_zone_details - First observed
fuel_price_guide - First observed
get_knowledge_status - First observed
get_upstream_status - First observed
gitex_info - First observed
golden_visa_check - First observed
grant_programs - First observed
gregorian_to_hijri - First observed
grocery_estimate - First observed
halal_certification - First observed
hijri_to_gregorian - First observed
ip_protection - First observed
is_uae_holiday - First observed
khda_list_areas - First observed
khda_list_curricula - First observed
khda_search_school - First observed
late_payment_penalty_estimate - First observed
legal_translation_estimate - First observed
list_banks - First observed
list_features - First observed
list_free_zones - First observed
list_honorifics - First observed
list_offshore - First observed
list_plan_categories - First observed
list_salutations - First observed
list_uae_weather_cities - First observed
list_visa_types - First observed
makani_details - First observed
makani_reverse_geocode - First observed
makani_validate - First observed
moiat_requirements - First observed
nol_card_guide - First observed
osm_list_categories - First observed
osm_search_poi - First observed
parking_zones - First observed
pdpl_compliance - First observed
plan_query - First observed
portal_guide - First observed
prayer_times_calendar - First observed
prayer_times_for - First observed
pro_services_estimate - First observed
qfzp_check - First observed
qibla_direction - First observed
quran_ayah - First observed
quran_juz - First observed
quran_search - First observed
quran_surah - First observed
recommend_tools - First observed
rent_estimate - First observed
rental_dispute_guide - First observed
rera_rent_increase - First observed
rta_gtfs_static_url - First observed
rta_salik_tariff - First observed
rta_search_bus_routes - First observed
rta_search_metro_stations - First observed
salik_toll_estimate - First observed
school_fee_estimate - First observed
setup_advisor - First observed
setup_timeline_estimate - First observed
startup_events - First observed
submission_guide - First observed
synthesize_report - First observed
trademark_registration - First observed
uae_holidays - First observed
uae_next_holiday - First observed
uae_weather - First observed
uae_weather_forecast - First observed
ubo_filing_guide - First observed
vat_filing_calendar - First observed
vc_list - First observed
visa_details - First observed
visa_recommend - First observed
weather_by_coords - First observed
weather_uae_all - First observed
weather_uae_icao
TDQS
Scored across 120 tools
Most tools target distinct resources, and the unusually detailed descriptions do a lot of work to separate near-duplicates. However, there are genuine overlap clusters: weather_uae_icao vs weather_uae_all vs uae_weather vs uae_weather_forecast vs weather_by_coords, air_quality_dubai vs air_quality_by_coords, currency_rates vs cbuae_exchange_rates vs currency_convert, and recommend_tools vs list_features vs plan_query. An agent can usually pick correctly only by reading full descriptions rather than names.
Everything is snake_case and readable, but conventions are mixed: domain-prefixed noun forms (cbuae_exchange_rates, dfm_index, dld_search_transactions, khda_search_school, makani_details), verb-first forms (list_banks, list_free_zones, get_knowledge_status), verb-last forms (prayer_times_for), and bare single words (about). The prefix grouping is somewhat systematic but not a predictable verb_noun pattern throughout.
120 tools is an extreme mismatch for a single server, spanning air quality, prayer times, Quran, free zones, tax, banking, Makani geocoding, and business letters. Even with recommend_tools as a BM25 discovery aid, the catalogue is far too large for an agent to reason over coherently, and many tools are near-redundant variants.
The surface covers an unusually broad range of Dubai/UAE domains with search, details, list, and estimate/advisor patterns repeated per domain, plus cross-tool synthesis helpers. Gaps are minor and largely inherent to a read-only reference server (no write/update operations, and some domains like FCSC/Dubai Pulse depend on external credentials) rather than dead ends in the tool set.
Maintenance
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Agent-native MCP server over 49M+ US public and government records, privacy-first, always current.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server that provides cryptocurrency project data to AI agents11MIT
- AlicenseAqualityDmaintenanceAn MCP server that gives AI agents access to US business entity data, enabling searches across 9 state registries, SEC EDGAR filings, federal contracts, and lobbying disclosures.61MIT
- AlicenseNot gradedqualityBmaintenanceA comprehensive MCP server that makes official UAE open data queryable through natural language, offering tools for source discovery, dataset search, spatial joins, and intelligence recipes.2 npmMIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI assistants access to a multi-agent business operations platform with specialized AI services covering real estate, legal, translation, research, content creation, training, and more.18 npmMIT