verify_contractor_license
Verify contractor licenses in California, Texas, Florida, and New York by license number, name, or business. Check license status, expiration dates, classifications, and contact information from official state licensing boards.
Instructions
Verify a contractor's license across US states (CA, TX, FL, NY). Search by license number, person name, or business name. Returns license status, expiration, classifications, and contact info from official state licensing boards.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | US state code: CA (California CSLB), TX (Texas TDLR), FL (Florida DBPR), NY (New York City) | |
| licenseNumber | No | License number to look up (e.g. "1096738" for CA, "CGC1507744" for FL) | |
| lastName | No | Last name for person name search | |
| firstName | No | First name for person name search (optional) | |
| businessName | No | Business or company name to search for | |
| limit | No | Number of results to return (max 25) |
Implementation Reference
- src/index.ts:132-187 (handler)The implementation of the verify_contractor_license tool, including schema validation with zod and the handler logic that calls a backend service.
server.tool( "verify_contractor_license", "Verify a contractor's license across US states (CA, TX, FL, NY). Search by license number, person name, or business name. Returns license status, expiration, classifications, and contact info from official state licensing boards.", { state: z .enum(["CA", "TX", "FL", "NY"]) .describe("US state code: CA (California CSLB), TX (Texas TDLR), FL (Florida DBPR), NY (New York City)"), licenseNumber: z .string() .optional() .describe('License number to look up (e.g. "1096738" for CA, "CGC1507744" for FL)'), lastName: z .string() .optional() .describe("Last name for person name search"), firstName: z .string() .optional() .describe("First name for person name search (optional)"), businessName: z .string() .optional() .describe("Business or company name to search for"), limit: z .number() .int() .min(1) .max(25) .default(10) .describe("Number of results to return (max 25)"), }, async ({ state, licenseNumber, lastName, firstName, businessName, limit }) => { const params = new URLSearchParams(); params.set("state", state); params.set("limit", String(limit)); if (licenseNumber) params.set("licenseNumber", licenseNumber); if (lastName) params.set("lastName", lastName); if (firstName) params.set("firstName", firstName); if (businessName) params.set("businessName", businessName); const url = `${BACKEND_URL}/contractor-license/verify?${params.toString()}`; const res = await fetch(url); const data = await res.json(); if (!data.success) { return { isError: true, content: [{ type: "text", text: `Error: ${data.error}` }], }; } return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }], }; } );