# MarketCode (ai.marketcode/marketcode): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/ai.marketcode%2Fmarketcode/versions/latest)
- Connected to: https://mcp.marketcode.ai/mcp
- Scoring rules: v2
- Tools: 99
- Average: 54.7 / 100 (Cloudy)
- Near-identical pairs: 3

This page shows how MarketCode (ai.marketcode/marketcode)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 99 tools. Above 40, models choose less accurately.

## Tools

- `ownership_by_title`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: title_number.
  - Minor: String arguments with no constraint or example: title_number.
- `mixed_use_buildings`: 38 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: area_id, min_commercial, min_residential, limit.
  - Minor: String arguments with no constraint or example: area_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: area_id. Name the tool or the place that returns it, or models look it up first.
- `address_resolve`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: query, country, max_results.
  - Minor: String arguments with no constraint or example: query.
  - Minor: The description mentions none of its 3 or more arguments.
- `area_reverse_geocode`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: lat, lng, type_id.
  - Minor: String arguments with no constraint or example: type_id.
  - Minor: Required identifiers whose description does not say where the value comes from: type_id. Name the tool or the place that returns it, or models look it up first.
- `area_stock_profile`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: area_id.
  - Minor: String arguments with no constraint or example: area_id.
- `auction_discount`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: postcode_district, postcode_area, months, is_commercial, min_lots.
  - Minor: No `required` list, so every argument is optional.
- `entity_relationships`: 42 / 100
  - Major: Arguments without a description: kind, entity_id, depth, limit.
  - Minor: String arguments with no constraint or example: entity_id.
  - Minor: The description mentions none of its 3 or more arguments.
- `listing_stock_series`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: area_code, area_type, channel, bedroom_band, start, end, limit.
  - Minor: No `required` list, so every argument is optional.
- `planning_designations`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: postcode, location.
  - Minor: No `required` list, so every argument is optional.
- `supply_demand`: 42 / 100
  - Major: Arguments without a description: area_code, area_type, channel, bedroom_band, months.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
- `valuation_accuracy`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: asset_class, model_version, since.
  - Minor: No `required` list, so every argument is optional.
- `ask_question`: 43 / 100
  - Major: Arguments without a description: question, place_slug.
  - Minor: String arguments with no constraint or example: question.
- `data_coverage`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: area.
  - Minor: String arguments with no constraint or example: area.
- `ownership_by_company`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: company_number, limit.
  - Minor: String arguments with no constraint or example: company_number.
- `address_by_postcode`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: postcode.
  - Minor: String arguments with no constraint or example: postcode.
- `market_volume_ranking`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: county, area, months, order_by, limit.
  - Minor: No `required` list, so every argument is optional.
- `property_flood_risk`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprn.
- `transactions_by_uprn`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprn.
- `market_forecast`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: area_code, area_type, frequency, horizon.
  - Minor: String arguments with no constraint or example: area_code.
- `address_by_uprn`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprn.
- `agent_activity`: 48 / 100
  - Major: Arguments without a description: area_id, months, listing_type, limit.
  - Minor: String arguments with no constraint or example: area_id.
- `lha_rate`: 48 / 100
  - Major: Arguments without a description: postcode, bedrooms.
  - Minor: String arguments with no constraint or example: postcode.
- `property_reconcile`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprn.
- `property_summary`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprn.
- `valuation_full`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprn.
- `actor_network`: 50 / 100
  - Major: Arguments without a description: kind, entity_id, depth, limit.
  - Minor: String arguments with no constraint or example: entity_id.
  - Minor: Required identifiers whose description does not say where the value comes from: entity_id. Name the tool or the place that returns it, or models look it up first.
- `area_report`: 50 / 100
  - Major: Arguments without a description: lad_code, postcode_district, sector.
  - Minor: No `required` list, so every argument is optional.
- `lookup_entities`: 50 / 100
  - Major: Arguments without a description: q, limit.
  - Minor: String arguments with no constraint or example: q.
- `retrofit_candidates`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: area_id, bands, fuel, limit.
  - Minor: String arguments with no constraint or example: area_id.
- `build_cost`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: sector, region, gia_m2, basis, rate_gbp_m2, rate_period.
- `auction_comps`: 52 / 100
  - Major: Arguments without a description: postcode_district, postcode_area, months, is_commercial, min_beds, max_beds, limit.
  - Minor: No `required` list, so every argument is optional.
- `commercial_index_series`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: sector, area, start, end, limit.
  - Minor: No `required` list, so every argument is optional.
- `energy_profile`: 52 / 100
  - Major: Arguments without a description: area_id.
  - Minor: String arguments with no constraint or example: area_id.
- `h3_density`: 52 / 100
  - Major: Arguments without a description: area_id, limit.
  - Minor: String arguments with no constraint or example: area_id.
  - Minor: Required identifiers whose description does not say where the value comes from: area_id. Name the tool or the place that returns it, or models look it up first.
- `market_profile`: 52 / 100
  - Major: Arguments without a description: profile_id, window.
  - Minor: String arguments with no constraint or example: profile_id.
- `owner_profile`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: company_number, name, limit.
  - Minor: No `required` list, so every argument is optional.
- `planning_applications`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: postcode, location.
  - Minor: No `required` list, so every argument is optional.
- `area_resolve`: 53 / 100
  - Major: Arguments without a description: area_name, include_h3, h3_resolution.
  - Minor: String arguments with no constraint or example: area_name.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument include_h3 is unclear.
- `comps_adjustments`: 53 / 100
  - Major: Arguments without a description: uprn, lookback_months, relisted_uprns.
- `plot_utilisation`: 53 / 100
  - Major: Arguments without a description: area_id, min_area_m2, max_built_coverage, limit.
  - Minor: String arguments with no constraint or example: area_id.
  - Minor: Required identifiers whose description does not say where the value comes from: area_id. Name the tool or the place that returns it, or models look it up first.
- `property_comps`: 53 / 100
  - Major: Arguments without a description: uprn, max_backfills.
- `property_lease`: 53 / 100
  - Major: Arguments without a description: uprn.
- `property_lease_batch`: 53 / 100
  - Major: Arguments without a description: uprns.
- `property_planning_history`: 53 / 100
  - Major: Arguments without a description: uprn.
- `property_planning_history_batch`: 53 / 100
  - Major: Arguments without a description: uprns.
- `property_report`: 53 / 100
  - Major: Arguments without a description: uprn, include_precedents.
  - Minor: The meaning of the boolean argument include_precedents is unclear.
- `property_risk_report`: 53 / 100
  - Major: Arguments without a description: uprn.
- `property_risk_report_batch`: 53 / 100
  - Major: Arguments without a description: uprns.
- `query_semantic`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: entity, select, metrics, dimensions, filters, period, joins, order_by, limit.
  - Minor: String arguments with no constraint or example: entity.
- `entity_search_capabilities`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
- `market_yields`: 54 / 100
  - Major: Arguments without a description: area_code, area_type, bedroom_band, months.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
- `commercial_rent_index_series`: 55 / 100
  - Major: Arguments without a description: sector, area, start, end.
  - Minor: No `required` list, so every argument is optional.
- `cost_index`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: basis, sector, freq, from_period, to_period.
- `epc_certificates`: 55 / 100
  - Major: Arguments without a description: uprn.
- `long_held_high_equity`: 55 / 100
  - Major: Arguments without a description: area_id, min_years, min_gain_pct, limit.
  - Minor: String arguments with no constraint or example: area_id.
- `property_history`: 55 / 100
  - Major: Arguments without a description: uprn, max_drilldowns.
- `property_lookup`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprn.
- `search_entities`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: query, limit, cursor.
- `solar_potential`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: uprns.
- `sourcing_strategies`: 55 / 100
  - Major: Arguments without a description: area.
  - Minor: No `required` list, so every argument is optional.
- `time_adjustment`: 55 / 100
  - Major: Arguments without a description: postcode, from_date, property_type, lookback_years.
  - Minor: String arguments with no constraint or example: postcode, from_date.
- `sourcing_owners`: 56 / 100
  - Major: Arguments without a description: parcel_ids, asset.
- `asking_rent_index_series`: 57 / 100
  - Major: Arguments without a description: area_code, area_type, frequency, method, start, end, limit.
  - Minor: No `required` list, so every argument is optional.
- `commercial_property`: 57 / 100
  - Major: Arguments without a description: uprn, uarn.
  - Minor: No `required` list, so every argument is optional.
- `distressed_assets`: 57 / 100
  - Major: Arguments without a description: postcode_district, postcode_area, min_auctions, years, max_guide_to_avm, is_commercial, limit, offset.
  - Minor: No `required` list, so every argument is optional.
- `equity_estimate`: 57 / 100
  - Major: Arguments without a description: uprns.
- `land_assembly`: 57 / 100
  - Major: Arguments without a description: parcel_id, inspire_id, title_number, uprn, ring_m, tolerance_m, same_owner_only, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument same_owner_only is unclear.
- `listing_market_series`: 57 / 100
  - Major: Arguments without a description: area_code, area_type, channel, bedroom_band, start, end, limit.
  - Minor: No `required` list, so every argument is optional.
- `building_physical`: 58 / 100
  - Major: Arguments without a description: uprns.
- `address_autocomplete`: 59 / 100
  - Major: Arguments without a description: q, country, max_results.
  - Minor: String arguments with no constraint or example: q.
  - Minor: The description mentions none of its 3 or more arguments.
- `auction_stats`: 59 / 100
  - Major: Arguments without a description: postcode_district, quarter_from, quarter_to, is_commercial, limit.
  - Minor: No `required` list, so every argument is optional.
- `market_volume_series`: 59 / 100
  - Major: Arguments without a description: district, area, county, metrics, start, end.
  - Minor: No `required` list, so every argument is optional.
- `planning_check`: 59 / 100
  - Major: Arguments without a description: postcode, location, checks.
  - Minor: No `required` list, so every argument is optional.
- `actor_path`: 60 / 100
  - Major: Arguments without a description: source_kind, source_id, target_kind, target_id, depth, limit.
  - Minor: String arguments with no constraint or example: source_id, target_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: source_id, target_id. Name the tool or the place that returns it, or models look it up first.
- `commercial_market`: 60 / 100
  - Major: Arguments without a description: sector, lad_code, area_key.
  - Minor: No `required` list, so every argument is optional.
- `sourcing_commercial`: 60 / 100
  - Major: Arguments without a description: lad_code, sectors, scat_codes, min_rv, max_rv, with_owner, single_hereditament, limit, offset.
  - Minor: String arguments with no constraint or example: lad_code.
  - Minor: The meaning of the boolean argument with_owner is unclear.
  - Minor: The meaning of the boolean argument single_hereditament is unclear.
- `sourcing_live_listings`: 60 / 100
  - Major: Arguments without a description: postcode_districts, channel, min_price, max_price, min_beds, max_beds, tenure, epc_in, min_gross_yield_pct, area_geojson, auction_only, new_homes, limit, offset.
  - Minor: The meaning of the boolean argument auction_only is unclear.
- `subject_transaction_anchor`: 62 / 100
  - Major: Arguments without a description: uprn.
- `valuation_estimate`: 62 / 100
  - Major: Arguments without a description: uprn.
- `listing_history`: 63 / 100
  - Major: Arguments without a description: uprn.
- `sourcing_offmarket_owners`: 63 / 100
  - Major: Arguments without a description: lad_code, postcode_district, strategy, strategy_overrides, min_units, limit.
  - Minor: No `required` list, so every argument is optional.
- `valuation_comparables`: 63 / 100
  - Major: Arguments without a description: uprn, as_of, limit.
- `valuation_rent_comparables`: 63 / 100
  - Major: Arguments without a description: uprn, as_of, limit, beds, property_type, floor_area_m2.
- `auction_lots`: 64 / 100
  - Major: Arguments without a description: postcode_district, postcode_area, auctioneer, date_from, date_to, is_commercial, sold_only, with_achieved_price, with_yield, limit, offset.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument sold_only is unclear.
  - Minor: The meaning of the boolean argument with_achieved_price is unclear.
  - Minor: The meaning of the boolean argument with_yield is unclear.
- `asking_price_index_series`: 65 / 100
  - Major: Arguments without a description: area_code, area_type, frequency, method, start, end, limit.
  - Minor: No `required` list, so every argument is optional.
- `parcel_lookup`: 65 / 100
  - Major: Arguments without a description: parcel_id, inspire_id, title_number, uprn.
  - Minor: No `required` list, so every argument is optional.
- `property_energy_retrofit`: 65 / 100
  - Major: Arguments without a description: uprn.
- `changes_since`: 67 / 100
  - Major: Arguments without a description: cursor, event_types, postcode_districts, uprns, channel, since, limit.
  - Minor: No `required` list, so every argument is optional.
- `planning_precedents`: 67 / 100
  - Major: Arguments without a description: lat, lon, radius_m, lpa_code, application_types, years, examples.
  - Minor: No `required` list, so every argument is optional.
- `property_media`: 67 / 100
  - Major: Arguments without a description: uprn, types, ttl_seconds.
- `council_tax_band`: 68 / 100
  - Major: Arguments without a description: uprn.
- `market_index_series`: 68 / 100
  - Major: Arguments without a description: area_code, area_type, frequency, start, end, limit, include_forecast.
  - Minor: String arguments with no constraint or example: area_code.
  - Minor: The meaning of the boolean argument include_forecast is unclear.
- `search_summary`: 68 / 100
  - Major: Arguments without a description: query, group_by, measures, top.
- `property_rental_estimate`: 70 / 100
  - Major: Arguments without a description: uprn, beds.
- `site_appraisal`: 72 / 100
  - Minor: The description is long (433 words). It helps selection but costs steps and tokens.
  - Major: Arguments without a description: uprn, land_id, include_designations, scheme_gia_m2, scheme_units, rate_gbp_m2, rate_period, sector, region, include_precedents, precedent_radius_m.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument include_designations is unclear.
  - Minor: The meaning of the boolean argument include_precedents is unclear.
- `sourcing_search`: 72 / 100
  - Minor: The description is long (451 words). It helps selection but costs steps and tokens.
  - Major: Arguments without a description: asset, area_geojson, min_area_m2, max_area_m2, min_floor_area_m2, max_floor_area_m2, max_unexpired_years, min_floors, max_floors, min_units, max_units, offset, location, bbox, landuse, max_built_coverage, property_types, min_beds, max_beds, epc_in, tenure, owner_types, exclude_owner_types, require_owner, min_years_owned, company_status, min_score, min_rlv, opportunities_only, include_undevelopable, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument require_owner is unclear.
  - Minor: The meaning of the boolean argument opportunities_only is unclear.
  - Minor: The meaning of the boolean argument include_undevelopable is unclear.
- `market_facts`: 75 / 100
  - Minor: The description is long (462 words). It helps selection but costs steps and tokens.
  - Major: Arguments without a description: postcode, lsoa_code, ward_code, lad_code, h3_cell, asset_class, asset_subtype, bedroom_band, period, max_periods, metrics.
  - Minor: No `required` list, so every argument is optional.
- `market_ranking`: 75 / 100
  - Major: Arguments without a description: area_type, parent_area_code, area_codes, asset_class, bedroom_band, hmo, metrics, sort, order, limit, window_months, lag_months, min_stock.
  - Minor: No `required` list, so every argument is optional.
- `mortgage_rates`: 79 / 100

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
