DouxProcess Directory

Find a US business by what you need and where, with licences checked against the issuer's file.

사용해야 할까요

품질 및 안전성

A
설명 품질
98%
스키마 완전성
89%
이름 품질
89%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,992토큰 (도구 정의)
~3.9 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.12%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "white-pages": {
      "url": "https://douxprocess.directory/mcp"
    }
  }
}

원격 엔드포인트

https://douxprocess.directory/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (9)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢find_businesses(query, where, category, state, city, ...)

Search the DouxProcess Directory for US businesses by what the person needs (roofer, electrician, insurance agency...) and where (a city and state, a ZIP, or a state). Returns the matches in the published ranking order with license, how it was checked, phone, website and listing page. covered=false with a note means the directory does not hold that kind of business or place yet: say so, do not guess. Nobody pays for placement; listings affiliated with DouxProcess's owner carry a disclosure, pass it on. Do not rank, rate or recommend; show the options and let the person choose.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "What the person needs, in their words."
    },
    "where": {
      "type": "string",
      "description": "A place: 'Pasadena, CA', a 5-digit ZIP, or a state. Never the person's own address or GPS."
    },
    "category": {
      "type": "string",
      "description": "A category id from list_categories, e.g. roofer."
    },
    "state": {
      "type": "string",
      "description": "Two-letter US state."
    },
    "city": {
      "type": "string"
    },
    "postal_code": {
      "type": "string",
      "description": "A 5-digit ZIP."
    },
    "radius_miles": {
      "type": "number",
      "minimum": 1,
      "maximum": 250
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    },
    "cursor": {
      "type": "string",
      "description": "next_cursor from the previous call."
    },
    "page": {
      "type": "integer",
      "minimum": 0,
      "description": "Older clients: a page number. Prefer cursor."
    }
  }
}

출력 스키마

{
  "type": "object",
  "properties": {
    "intent": {
      "type": "object"
    },
    "covered": {
      "type": "boolean"
    },
    "note": {
      "type": "string"
    },
    "total": {
      "type": [
        "integer",
        "null"
      ]
    },
    "count": {
      "type": "integer"
    },
    "has_more": {
      "type": "boolean"
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    },
    "ranking": {
      "type": "string"
    },
    "businesses": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "page"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "page": {
            "type": "string"
          },
          "about": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "quote_link": {
            "type": "string"
          },
          "booking_link": {
            "type": "string"
          },
          "mcp_url": {
            "type": "string"
          },
          "street": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "postal": {
            "type": "string"
          },
          "service_area": {
            "type": "object"
          },
          "languages": {
            "type": "array"
          },
          "licences": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "issuer": {
                  "type": "string"
                },
                "number": {
                  "type": "string"
                },
                "classification": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "expires": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "source_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "checked_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "basis": {
                  "type": "string",
                  "enum": [
                    "issuer_file",
                    "stated"
                  ]
                }
              },
              "required": [
                "issuer",
                "number"
              ]
            }
          },
          "licenses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "issuer": {
                  "type": "string"
                },
                "number": {
                  "type": "string"
                },
                "classification": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "expires": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "source_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "checked_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "basis": {
                  "type": "string",
                  "enum": [
                    "issuer_file",
                    "stated"
                  ]
                }
              },
              "required": [
                "issuer",
                "number"
              ]
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "seeded",
              "claimed",
              "verified"
            ]
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "disclosure": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "request_contact": {
            "type": "string"
          },
          "can_take_requests": {
            "type": "boolean"
          },
          "agent": {
            "type": "object",
            "properties": {
              "mcp": {
                "type": "string"
              },
              "a2a": {
                "type": "string"
              },
              "agent_card": {
                "type": "string"
              },
              "json": {
                "type": "string"
              },
              "markdown": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "businesses",
    "count",
    "has_more",
    "covered",
    "ranking"
  ]
}
🟢get_business(slug)

One business's details: licenses with their basis (issuer_file = matched against the issuer's own published file on checked_at; stated = given by the business, not yet matched, send the person to source_url), contact, whether it takes requests, and its own agent addresses (MCP and A2A).

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The slug from find_businesses."
    }
  },
  "required": [
    "slug"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "page": {
      "type": "string"
    },
    "about": {
      "type": "string"
    },
    "website": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "quote_link": {
      "type": "string"
    },
    "booking_link": {
      "type": "string"
    },
    "mcp_url": {
      "type": "string"
    },
    "street": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "postal": {
      "type": "string"
    },
    "service_area": {
      "type": "object"
    },
    "languages": {
      "type": "array"
    },
    "licences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "issuer": {
            "type": "string"
          },
          "number": {
            "type": "string"
          },
          "classification": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "expires": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "checked_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "basis": {
            "type": "string",
            "enum": [
              "issuer_file",
              "stated"
            ]
          }
        },
        "required": [
          "issuer",
          "number"
        ]
      }
    },
    "licenses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "issuer": {
            "type": "string"
          },
          "number": {
            "type": "string"
          },
          "classification": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "expires": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "checked_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "basis": {
            "type": "string",
            "enum": [
              "issuer_file",
              "stated"
            ]
          }
        },
        "required": [
          "issuer",
          "number"
        ]
      }
    },
    "status": {
      "type": "string",
      "enum": [
        "seeded",
        "claimed",
        "verified"
      ]
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "disclosure": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "request_contact": {
      "type": "string"
    },
    "can_take_requests": {
      "type": "boolean"
    },
    "agent": {
      "type": "object",
      "properties": {
        "mcp": {
          "type": "string"
        },
        "a2a": {
          "type": "string"
        },
        "agent_card": {
          "type": "string"
        },
        "json": {
          "type": "string"
        },
        "markdown": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "slug",
    "name",
    "page"
  ]
}
🟢verify_license(number, name, phone, issuer)

Look up a license by number, business name or phone and say which listings carry it and how it was checked. When nothing matches, tell the person to check the issuer's own lookup; never say a license is valid without a match.

입력 스키마

{
  "type": "object",
  "properties": {
    "number": {
      "type": "string",
      "description": "The license number."
    },
    "name": {
      "type": "string",
      "description": "The business name."
    },
    "phone": {
      "type": "string"
    },
    "issuer": {
      "type": "string",
      "description": "The issuer code, e.g. CA-CSLB."
    }
  }
}

출력 스키마

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "found": {
      "type": "boolean"
    },
    "note": {
      "type": "string"
    },
    "why": {
      "type": "string"
    },
    "query": {
      "type": "object"
    },
    "how_checked": {
      "type": "string"
    },
    "matches": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "page": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "disclosure": {
            "type": "string"
          },
          "workers_comp": {
            "type": "string"
          },
          "business_type": {
            "type": "string"
          },
          "discrepancies": {
            "type": "array"
          },
          "licenses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "issuer": {
                  "type": "string"
                },
                "number": {
                  "type": "string"
                },
                "classification": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "expires": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "source_url": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "checked_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "basis": {
                  "type": "string",
                  "enum": [
                    "issuer_file",
                    "stated"
                  ]
                }
              },
              "required": [
                "issuer",
                "number"
              ]
            }
          }
        }
      }
    }
  },
  "required": [
    "ok",
    "matches"
  ]
}
🟢list_categories

Every category with its id, NAICS 2022 code, plain name, Google Business Profile names, how many listings it has, and whether requests for it are sent (health is listed but never routed).

입력 스키마

{
  "type": "object",
  "properties": {}
}

출력 스키마

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer"
    },
    "note": {
      "type": "string"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "naics": {
            "type": [
              "string",
              "null"
            ]
          },
          "naics_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "gbp": {
            "type": "array"
          },
          "takes_requests": {
            "type": "boolean"
          },
          "count": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      }
    }
  },
  "required": [
    "categories"
  ]
}
🟢ask(question, where)

Ask in plain words ('licensed electrician near 92101 who does EV chargers') and get a short answer built only from listings, plus the businesses it rests on, in the published order. Same rules as find_businesses: no ranking or recommendation language, coverage stated honestly.

입력 스키마

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "description": "The person's question, in their words."
    },
    "where": {
      "type": "string",
      "description": "A place, if it is not in the question."
    }
  },
  "required": [
    "question"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "label": {
      "type": "string"
    },
    "businesses": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "page"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "page": {
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "phone": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "licenses": {
            "type": "array"
          },
          "status": {
            "type": "string"
          },
          "can_take_requests": {
            "type": "boolean"
          },
          "health": {
            "type": "boolean"
          },
          "disclosure": {
            "type": "string"
          },
          "agent": {
            "type": "object",
            "properties": {
              "mcp": {
                "type": "string"
              },
              "a2a": {
                "type": "string"
              },
              "agent_card": {
                "type": "string"
              },
              "json": {
                "type": "string"
              },
              "markdown": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "intent": {
      "type": "object"
    },
    "covered": {
      "type": "boolean"
    },
    "note": {
      "type": "string"
    },
    "followups": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "has_more": {
      "type": "boolean"
    },
    "more_url": {
      "type": "string"
    },
    "ranking": {
      "type": "string"
    }
  },
  "required": [
    "text",
    "businesses",
    "ranking"
  ]
}
🟡request_contact(slug, name, email, phone, details, ...)

Sends the person's request to the ONE business they chose, so it can reply to them. Only claimed listings take requests, and health businesses never do. Before calling, show the person this sentence and get their agreement: 'I agree that DouxProcess sends my name, my contact details and this request to <business>, and only to them, so they can reply to me about it.' Set consent=true only if they agreed. Clients that support forms get a consent form instead. Never include health details, card numbers, ID numbers or passwords.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The slug from find_businesses or get_business."
    },
    "name": {
      "type": "string",
      "description": "The person's name."
    },
    "email": {
      "type": "string",
      "description": "An email address the business can reply to."
    },
    "phone": {
      "type": "string",
      "description": "Or a phone number the business can reply to."
    },
    "details": {
      "type": "string",
      "description": "What they need, in their words. No health details, card numbers, ID numbers or passwords."
    },
    "consent": {
      "type": "boolean",
      "description": "True only if the person read and agreed to the consent sentence."
    }
  },
  "required": [
    "slug",
    "name",
    "details",
    "consent"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "sent": {
      "type": "boolean"
    },
    "routed": {
      "type": "boolean"
    },
    "business": {
      "type": "string"
    },
    "reference": {
      "type": "string"
    },
    "next": {
      "type": "string"
    },
    "why": {
      "type": "string"
    },
    "consent_text": {
      "type": "string"
    },
    "contact_directly": {
      "type": "object"
    }
  },
  "required": [
    "sent"
  ]
}
🟢request_service(business_id)

Open the request form for one business the person chose (ChatGPT local services Get Quote). The form shows the consent sentence and sends only when the person ticks it. For a business that does not take requests it shows the business's own phone and website.

입력 스키마

{
  "type": "object",
  "properties": {
    "business_id": {
      "type": "string",
      "description": "The business id (its slug) from find_businesses or the business feed."
    }
  },
  "required": [
    "business_id"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "business": {
      "type": "object",
      "required": [
        "slug",
        "name",
        "page"
      ],
      "properties": {
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "page": {
          "type": "string"
        },
        "about": {
          "type": "string"
        },
        "website": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "quote_link": {
          "type": "string"
        },
        "booking_link": {
          "type": "string"
        },
        "mcp_url": {
          "type": "string"
        },
        "street": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "postal": {
          "type": "string"
        },
        "service_area": {
          "type": "object"
        },
        "languages": {
          "type": "array"
        },
        "licences": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "issuer": {
                "type": "string"
              },
              "number": {
                "type": "string"
              },
              "classification": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "expires": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "source_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "checked_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "basis": {
                "type": "string",
                "enum": [
                  "issuer_file",
                  "stated"
                ]
              }
            },
            "required": [
              "issuer",
              "number"
            ]
          }
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "issuer": {
                "type": "string"
              },
              "number": {
                "type": "string"
              },
              "classification": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "expires": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "source_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "checked_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "basis": {
                "type": "string",
                "enum": [
                  "issuer_file",
                  "stated"
                ]
              }
            },
            "required": [
              "issuer",
              "number"
            ]
          }
        },
        "status": {
          "type": "string",
          "enum": [
            "seeded",
            "claimed",
            "verified"
          ]
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "disclosure": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "request_contact": {
          "type": "string"
        },
        "can_take_requests": {
          "type": "boolean"
        },
        "agent": {
          "type": "object",
          "properties": {
            "mcp": {
              "type": "string"
            },
            "a2a": {
              "type": "string"
            },
            "agent_card": {
              "type": "string"
            },
            "json": {
              "type": "string"
            },
            "markdown": {
              "type": "string"
            }
          }
        }
      }
    },
    "can_request": {
      "type": "boolean"
    },
    "consent_text": {
      "type": "string"
    },
    "how": {
      "type": "string"
    }
  },
  "required": [
    "business",
    "can_request",
    "consent_text"
  ]
}
🟢license_history(license)

A California contractor license's record in the CSLB's public file, and every change since the directory began reading it daily: status and suspensions, workers' comp type and dates, bond amounts and dates, classes, expiry. Give a CSLB license number or a listing link. It never includes an insurer, surety or person's name, or a policy, bond or case number. Report what it says; do not judge the business. Not for decisions about a person's credit, employment, insurance or housing.

입력 스키마

{
  "type": "object",
  "properties": {
    "license": {
      "type": "string",
      "description": "A CSLB license number (e.g. 1000002), or a listing link or slug from find_businesses."
    }
  },
  "required": [
    "license"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "found": {
      "type": "boolean"
    },
    "license": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "page": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "how_checked": {
      "type": "string"
    },
    "watch": {
      "type": "string"
    },
    "licenses": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "issuer",
          "number",
          "status"
        ],
        "properties": {
          "issuer": {
            "type": "string"
          },
          "number": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "expires": {
            "type": "string"
          },
          "as_of": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "record": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "history": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "day": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "change": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "found"
  ]
}
🟡watch_licenses(email, licenses)

Emails the person a link to watch these CSLB licenses: once they open it, they get one short email on any day something changes on one (status, workers' comp, bonds, classes, expiry). Nothing is watched until the person opens the link. Use the person's own email, only when they asked. Free watches 25 licenses, Pro up to 500 for $99 a year, Unlimited every license they add for $999 a year. Not for decisions about a person's credit, employment, insurance or housing.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "The person's own email address."
    },
    "licenses": {
      "type": "array",
      "maxItems": 500,
      "items": {
        "type": "string"
      },
      "description": "CSLB license numbers or listing links, up to 500."
    }
  },
  "required": [
    "email",
    "licenses"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "sent": {
      "type": "boolean"
    },
    "email": {
      "type": "string"
    },
    "licenses": {
      "type": "integer"
    },
    "unknown": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "note": {
      "type": "string"
    },
    "why": {
      "type": "string"
    },
    "tiers": {
      "type": "string"
    }
  },
  "required": [
    "sent"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 9개