DoorProfit Crime & Neighborhood Data
US crime scores, incidents, neighborhood demographics, rent data, and offender search by address.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"doorprofit": {
"url": "https://api.doorprofit.com/mcp"
}
}
}遠端端點
https://api.doorprofit.com/mcpstreamable-http它能做什麼
工具清單
工具(4)
🟢get_crime_data(address, lat, lng)
Crime safety grade and incident history for one US address or coordinate pair: a letter score (A+ safest through F), a per-crime-type breakdown against the national average, and the individual incidents recorded within 1000ft over a rolling 90-day window. Use this for "is this address/neighborhood safe?" questions. Do NOT use it for demographics, income, rent or schools (use get_neighborhood_data) or for registered offenders (use search_offenders) — neither is included here. Pass either address or lat+lng, not both. US locations only; requires a DoorProfit API key and consumes 1 call from that key's quota, except for the free test address "500 Main St, Dallas, TX 75202".
輸入結構描述
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Full US street address, e.g. \"500 Adams St, Tulsa, OK\". Provide either address OR lat+lng."
},
"lat": {
"type": "number",
"description": "Latitude (use together with lng, as an alternative to address)."
},
"lng": {
"type": "number",
"description": "Longitude (use together with lat, as an alternative to address)."
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"test_mode": {
"type": "boolean",
"description": "True when querying the free test address."
},
"location": {
"type": "object",
"description": "The resolved location for the query.",
"properties": {
"address": {
"type": [
"string",
"null"
],
"description": "Formatted address."
},
"city": {
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
],
"description": "Two-letter state code."
},
"zipcode": {
"type": [
"string",
"null"
]
},
"county": {
"type": [
"string",
"null"
]
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": true
},
"crime_score": {
"type": [
"string",
"null"
],
"description": "Letter safety grade from A+ (safest) to F."
},
"crime_numeric": {
"type": [
"number",
"null"
],
"description": "0-1 scale where 1 is safest."
},
"crime_description": {
"type": [
"string",
"null"
],
"description": "Human-readable explanation of the score."
},
"crime_breakdown": {
"type": [
"object",
"null"
],
"description": "Per-crime-type comparison vs the national average (e.g. assault, burglary, theft).",
"additionalProperties": true
},
"incidents": {
"type": "object",
"description": "Recent crime incidents near the location.",
"properties": {
"radius_feet": {
"type": "integer"
},
"date_from": {
"type": "string"
},
"date_to": {
"type": "string"
},
"count": {
"type": "integer"
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": [
"string",
"null"
],
"description": "Crime type."
},
"date": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD."
},
"address": {
"type": [
"string",
"null"
]
},
"distance_feet": {
"type": [
"integer",
"null"
]
},
"lat": {
"type": [
"number",
"null"
]
},
"lng": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
},
"required": [
"success"
],
"additionalProperties": true
}🟢get_neighborhood_data(address, lat, lng)
Profile of the neighborhood (or census block group) containing one US address or coordinate pair: demographics, median household income, home values, rent by bedroom count, education attainment, cost-of-living indices, climate and natural-disaster risk. Use this when the question is about who lives in an area or what it costs to live there. Do NOT use it for crime or safety scores (use get_crime_data) — no crime data is returned here. Pass either address or lat+lng, not both. The neighborhood field is null where no data exists for the location. US locations only; requires a DoorProfit API key and consumes 1 call from that key's quota, except for the free test address "500 Main St, Dallas, TX 75202".
輸入結構描述
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Full US street address, e.g. \"500 Adams St, Tulsa, OK\". Provide either address OR lat+lng."
},
"lat": {
"type": "number",
"description": "Latitude (use together with lng, as an alternative to address)."
},
"lng": {
"type": "number",
"description": "Longitude (use together with lat, as an alternative to address)."
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"test_mode": {
"type": "boolean",
"description": "True when querying the free test address."
},
"location": {
"type": "object",
"description": "The resolved location for the query.",
"properties": {
"address": {
"type": [
"string",
"null"
],
"description": "Formatted address."
},
"city": {
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
],
"description": "Two-letter state code."
},
"zipcode": {
"type": [
"string",
"null"
]
},
"county": {
"type": [
"string",
"null"
]
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"additionalProperties": true
},
"neighborhood": {
"type": [
"object",
"null"
],
"description": "Neighborhood data; null when no data exists for the location.",
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "Named neighborhood, when one exists."
},
"data_source": {
"type": "string",
"description": "\"neighborhood\" or \"block_group\"."
},
"demographics": {
"type": "object",
"description": "Population, density, median age, gender, race, and age distribution.",
"additionalProperties": true
},
"income": {
"type": "object",
"description": "Median/average household income and income distribution.",
"additionalProperties": true
},
"housing": {
"type": "object",
"description": "Median home value, households, year built, occupancy.",
"additionalProperties": true
},
"education": {
"type": "object",
"description": "Education attainment percentages.",
"additionalProperties": true
},
"cost_of_living": {
"type": "object",
"description": "Cost indices (100 = national average).",
"additionalProperties": true
},
"rent": {
"type": "object",
"description": "Median/average rent, by bedroom count.",
"additionalProperties": true
},
"weather": {
"type": "object",
"description": "Temperatures, precipitation, and natural disaster risk indices.",
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"required": [
"success"
],
"additionalProperties": true
}🟢search_offenders(address, lat, lng, radius, first_name, ...)
Search US registered offenders in one of two modes. Location mode: pass address or lat+lng, plus an optional radius in miles (default 1, capped at 3); results include each offender's distance from the search point. Name mode: pass at least one of first_name, last_name or dob, optionally narrowed by city/state/zipcode — those three filters alone are not accepted. Location parameters take precedence when both are supplied. Use this only for registered-offender questions; for an overall safety grade use get_crime_data instead. Results are paginated (page, limit, max 100 per page) and each page requested requires a DoorProfit API key and consumes 1 call from that key's quota.
輸入結構描述
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Full US street address, e.g. \"500 Adams St, Tulsa, OK\". Provide either address OR lat+lng."
},
"lat": {
"type": "number",
"description": "Latitude (use together with lng, as an alternative to address)."
},
"lng": {
"type": "number",
"description": "Longitude (use together with lat, as an alternative to address)."
},
"radius": {
"type": "number",
"description": "Search radius in miles for location searches (default 1, max 3)."
},
"first_name": {
"type": "string",
"description": "First name for name-based searches."
},
"last_name": {
"type": "string",
"description": "Last name for name-based searches."
},
"dob": {
"type": "string",
"description": "Date of birth, YYYY-MM-DD."
},
"city": {
"type": "string",
"description": "City filter for name-based searches."
},
"state": {
"type": "string",
"description": "Two-letter state code filter, e.g. \"OK\"."
},
"zipcode": {
"type": "string",
"description": "Zipcode filter for name-based searches."
},
"page": {
"type": "integer",
"description": "Page number (default 1)."
},
"limit": {
"type": "integer",
"description": "Results per page (default 50, max 100)."
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"test_mode": {
"type": "boolean"
},
"search_type": {
"type": "string",
"description": "\"gis\" for location searches, \"name\" for name searches."
},
"offenders": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"address": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
]
},
"zipcode": {
"type": [
"string",
"null"
]
},
"lat": {
"type": [
"number",
"null"
]
},
"lng": {
"type": [
"number",
"null"
]
},
"distance": {
"type": [
"number",
"null"
],
"description": "Miles from the search point."
},
"photo": {
"type": [
"string",
"null"
],
"description": "Photo URL."
},
"age": {
"type": [
"integer",
"string",
"null"
]
},
"risk_level": {
"type": [
"string",
"null"
]
},
"offense": {
"type": [
"string",
"null"
],
"description": "Primary offense description."
}
},
"additionalProperties": true
}
},
"offenders_count": {
"type": "integer",
"description": "Results on this page."
},
"total_count": {
"type": "integer",
"description": "Total matching results."
},
"page": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"radius": {
"type": [
"number",
"null"
],
"description": "Search radius in miles (location searches only)."
}
},
"required": [
"success"
],
"additionalProperties": true
}🟢get_api_usage
Report the plan, monthly and daily call usage, remaining quota, reset times, rate limit and overage status for the DoorProfit API key authenticating this session. Takes no arguments — it always describes the calling key, never another account. Call it when the user asks how many calls they have left, or after any other tool returns QUOTA_EXCEEDED or DAILY_LIMIT_EXCEEDED, to confirm the limit and reset time before suggesting an upgrade. This is the only tool that never consumes quota.
輸入結構描述
{
"type": "object",
"properties": {}
}輸出結構描述
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"data": {
"type": "object",
"properties": {
"plan": {
"type": "object",
"description": "Plan type, name, and monthly price.",
"additionalProperties": true
},
"monthly": {
"type": "object",
"description": "Monthly limit, used, remaining, and reset time.",
"additionalProperties": true
},
"daily": {
"type": "object",
"description": "Daily limit, used, remaining, and reset time.",
"additionalProperties": true
},
"rate_limit": {
"type": "object",
"description": "Requests-per-second limit.",
"additionalProperties": true
},
"overage": {
"type": "object",
"description": "Overage billing status (paid plans).",
"additionalProperties": true
},
"account": {
"type": "object",
"description": "Account and subscription status.",
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"required": [
"success"
],
"additionalProperties": true
}社群
證據