dfwmetro.net directory

Verified DFW home-services directory. AI agents submit listings and find bookable pros.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
92%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,062Tokens (tool definitions)
~6.7 KBTypical response size
Moderate attention impact (1.61% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "dfwmetro-directory": {
      "url": "https://dfwmetro.net/mcp"
    }
  }
}

Remote endpoints

https://dfwmetro.net/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡submit_listing(legal_name, dba, trade, description, city, ...)

Submit a DFW service business to the dfwmetro.net verified directory. The business MUST be genuinely online-bookable: booking_url must point at a real scheduling flow (date/time picker or booking widget) — quote forms, contact forms, phone-only, and login-gated flows fail verification. You do not need to categorize it yourself: describe what the business does in 'description' and the trade is assigned automatically (send 'trade' only if you are sure of the category id). Find the business's real street address BEFORE submitting — check its website (footer/contact page) or the JSON-LD LocalBusiness block on its site or booking page — and send it as 'street_address': it drives the exact map pin. When the trade requires a state license (plumbing, electrical, HVAC, personal & specialty services), also send 'license_number' (e.g. 'TACLA40925C', 'TECL 12345', 'M-12345') — the server pre-checks the format and the human desk verifies it against the state registry. You may also send 'starting_price_cents' (integer cents, e.g. 8500 = $85.00, shown publicly as 'from $X') and 'price_note' (short qualifier, e.g. 'per visit'). Accepted submissions start as NOT_YET_VERIFIED and pass human review before going live.

Input Schema

{
  "type": "object",
  "properties": {
    "legal_name": {
      "type": "string",
      "maxLength": 200,
      "description": "Legal business name."
    },
    "dba": {
      "type": "string",
      "maxLength": 200,
      "description": "Trade/DBA name shown publicly. Defaults to legal_name."
    },
    "trade": {
      "type": "string",
      "description": "OPTIONAL. Category id from https://dfwmetro.net/categories.json (e.g. 'plumbing', 'electrical', 'personal_specialty'). Pre-v2 ids (e.g. 'nail-salon') are accepted and stored as their v2 industry. If omitted, the server assigns the trade from your description — you do not need to get this right yourself."
    },
    "description": {
      "type": "string",
      "maxLength": 1000,
      "description": "What the business DOES, in plain words (e.g. 'mobile piano tuning, in-home appointments'). Used to categorize the listing when trade is omitted, and shown to the verification desk. The more specific, the better the categorization."
    },
    "city": {
      "type": "string",
      "maxLength": 200,
      "description": "DFW city, e.g. 'Plano'."
    },
    "zip_code": {
      "type": "string",
      "maxLength": 20
    },
    "street_address": {
      "type": "string",
      "maxLength": 200,
      "description": "STRONGLY RECOMMENDED. The business's real street address, e.g. '2818 Satsuma Drive'. Find it on the business's website (footer / contact page) or in the JSON-LD LocalBusiness block on its site or booking page BEFORE submitting. It drives the exact map pin; without it the listing gets only a city-level dot. Not required — submissions without it are still accepted."
    },
    "phone": {
      "type": "string",
      "maxLength": 40
    },
    "website": {
      "type": "string",
      "maxLength": 300
    },
    "license_number": {
      "type": "string",
      "maxLength": 60,
      "description": "STRONGLY RECOMMENDED when the trade requires a state license (plumbing, electrical, HVAC, personal & specialty services). The trade's license number, e.g. 'TACLA40925C' (HVAC), 'TECL 12345' (electrical), 'M-12345' (plumbing). The server checks the format against the Texas pattern; the human desk verifies it against the state registry before VERIFIED."
    },
    "license_type_detail": {
      "type": "string",
      "maxLength": 120,
      "description": "Free-text license detail, e.g. 'Master Plumber' or 'Class A ACR Contractor'. Shown to the verification desk alongside license_number."
    },
    "booking_url": {
      "type": "string",
      "format": "uri",
      "maxLength": 500,
      "description": "REQUIRED. Direct URL of the business's real online scheduling flow (date/time picker or booking widget). Generic contact/quote forms, phone-only, and login-gated flows fail verification — do not submit them."
    },
    "service_area": {
      "type": "string",
      "maxLength": 200,
      "description": "Defaults to 'DFW'."
    },
    "subcategories": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "string",
        "maxLength": 80
      },
      "description": "Must match the trade's subcategory labels in categories.json."
    },
    "years_in_business": {
      "type": "integer",
      "minimum": 0,
      "maximum": 200
    },
    "starting_price_cents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "OPTIONAL. Starting price in cents, e.g. 8500 = $85.00. Shown publicly as 'from $X'. Omit when pricing varies too much to quote a starting point."
    },
    "price_note": {
      "type": "string",
      "maxLength": 120,
      "description": "OPTIONAL. Short qualifier shown next to the starting price, e.g. 'per visit', 'up to shoulder length'."
    },
    "submitted_by": {
      "type": "string",
      "pattern": "^(agent:[A-Za-z0-9._-]{1,64}|human)$",
      "description": "Agent identifier, e.g. 'agent:my-booking-bot'. Defaults to 'agent:unknown'."
    }
  },
  "required": [
    "legal_name",
    "city",
    "booking_url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "dfwmetro.net listing submission",
  "description": "Submit a DFW service business to the dfwmetro.net verified directory. Every submission starts as NOT_YET_VERIFIED and must pass human verification-desk review before appearing as verified. status is always forced to NOT_YET_VERIFIED and license_required is derived from the directory taxonomy — any values you send for those fields are ignored. trade is optional: omit it and describe the business in 'description' and the server assigns the category deterministically. Unknown extra fields are ignored.",
  "additionalProperties": true
}
🟡find_verified_listings(trade, city, subcategory, limit, verified_only)

Find VERIFIED service businesses in the dfwmetro.net directory for booking. Only listings that passed human verification-desk review are returned — this tool can never surface unverified businesses and can never change verification status. Each result includes the business's booking_url plus machine-booking capability and endpoint health when known. Use booking_url for human-style booking flows; use capability endpoints only when present. Kept for backward compatibility; new integrations should prefer find_listings with verified_only:true.

Input Schema

{
  "type": "object",
  "properties": {
    "trade": {
      "type": "string",
      "description": "Category id from https://dfwmetro.net/categories.json, e.g. 'plumbing'. Legacy display labels ('Plumbing', 'Heating & Air Conditioning', 'Electrical') are also accepted and normalized."
    },
    "city": {
      "type": "string",
      "description": "DFW city filter, e.g. 'Plano'."
    },
    "subcategory": {
      "type": "string",
      "description": "Subcategory label filter, e.g. 'Drain cleaning'."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20,
      "description": "Max listings to return (1-50)."
    },
    "verified_only": {
      "type": "boolean",
      "default": false,
      "description": "True returns only VERIFIED listings (the strict premium shelf); false (default) returns all listings with verification status labeled, VERIFIED ranked first."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "dfwmetro.net listing discovery",
  "description": "Find genuinely online-bookable service businesses in the dfwmetro.net directory. Every listing is returned with its verification status labeled: VERIFIED businesses (human verification-desk reviewed) rank first and carry machine-booking capability and endpoint health; NOT_YET_VERIFIED businesses are clearly labeled — trust_level 'pending' means awaiting desk review and ranks last — and carry machine_ready:false. Pass verified_only:true for the strict VERIFIED-only shelf. Nothing here can change verification status.",
  "additionalProperties": true
}
🟡find_listings(trade, city, subcategory, limit, verified_only)

Find service businesses in the dfwmetro.net directory for booking. Returns every listing with its verification status labeled: VERIFIED businesses (human verification-desk reviewed) rank first and carry machine-booking capability and endpoint health; NOT_YET_VERIFIED businesses are clearly labeled, ranked by automated pre-check score, and carry machine_ready:false. Pass verified_only:true for the strict VERIFIED-only shelf. This tool can never change verification status.

Input Schema

{
  "type": "object",
  "properties": {
    "trade": {
      "type": "string",
      "description": "Category id from https://dfwmetro.net/categories.json, e.g. 'plumbing'. Legacy display labels ('Plumbing', 'Heating & Air Conditioning', 'Electrical') are also accepted and normalized."
    },
    "city": {
      "type": "string",
      "description": "DFW city filter, e.g. 'Plano'."
    },
    "subcategory": {
      "type": "string",
      "description": "Subcategory label filter, e.g. 'Drain cleaning'."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20,
      "description": "Max listings to return (1-50)."
    },
    "verified_only": {
      "type": "boolean",
      "default": false,
      "description": "True returns only VERIFIED listings (the strict premium shelf); false (default) returns all listings with verification status labeled, VERIFIED ranked first."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "dfwmetro.net listing discovery",
  "description": "Find genuinely online-bookable service businesses in the dfwmetro.net directory. Every listing is returned with its verification status labeled: VERIFIED businesses (human verification-desk reviewed) rank first and carry machine-booking capability and endpoint health; NOT_YET_VERIFIED businesses are clearly labeled — trust_level 'pending' means awaiting desk review and ranks last — and carry machine_ready:false. Pass verified_only:true for the strict VERIFIED-only shelf. Nothing here can change verification status.",
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools