DoorProfit Crime & Neighborhood Data
Server Details
US crime scores, incidents, neighborhood demographics, rent data, and offender search by address.
- Status
- Healthy
- Uptime
- 100.0% over 55 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
Each tool has a distinct, clearly delineated purpose (API usage, crime data, neighborhood data, offender search) with explicit cross-references and 'do not use' guidance, making misselection nearly impossible.
All tool names follow a consistent snake_case verb_noun pattern (get_api_usage, get_crime_data, get_neighborhood_data, search_offenders); the variation between 'get' and 'search' is appropriate and readable.
Four tools appropriately cover the API's core functions (crime, neighborhood, offenders, usage) without redundancy or bloat; each tool clearly earns its place.
The surface covers the main data types (crime grade, neighborhood demographics, offender search) and API usage, but there is a minor gap: schools are referenced as being in get_neighborhood_data, yet that tool does not mention them, and no dedicated school tool exists. Also, no tool for individual crime incidents (though this appears intentional). Core workflows are otherwise complete.
Available Tools
4 toolsget_api_usageCheck API Usage & QuotaARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: it explicitly states 'Takes no arguments — it always describes the calling key, never another account' and 'This is the only tool that never consumes quota,' two non-obvious behavioral traits an agent would otherwise not know. This is a strong addition; a 5 would require even richer detail on output structure or rate-limit nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the report contents and scope, the second gives concrete usage triggers, the third adds the unique no-quota-consumption trait. No filler, no repetition of schema information, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return-value details are handled structurally. The description covers what the tool reports (plan, usage, quota, resets, limits, overage), when to call it, its zero-argument nature, and its unique non-consuming property. For a 0-parameter read-only tool with strong annotations, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters, so the description's job is to confirm the no-argument contract, which it does explicitly ('Takes no arguments'). The baseline for 0 params is 4, and the description earns the extra point by explicitly stating the no-arguments contract and clarifying that it always operates on the calling key, removing ambiguity about what 'no arguments' might default to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Report') with a clear resource ('the plan, monthly and daily call usage, remaining quota, reset times, rate limit and overage status') and explicitly scopes it to 'the DoorProfit API key authenticating this session,' distinguishing it from any other-account tool. It clearly differentiates from siblings like get_crime_data and get_neighborhood_data, which handle different domains entirely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Call it when the user asks how many calls they have left, or after any other tool returns QUOTA_EXCEEDED or DAILY_LIMIT_EXCEEDED.' It also adds a concrete workflow suggestion ('before suggesting an upgrade'), giving the agent actionable context beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_crime_dataGet Crime Data & Safety ScoreARead-onlyIdempotentInspect
Crime safety grade and nearby incident counts for one US address or coordinate pair. Returns a letter score (A+ safest through F), a short description of that grade, and — in cities where police publish incident data — counts by crime type within 1000ft for the same period the grade was built from (date_from/date_to; this varies by city and is not a live feed). incidents is null where we do not have incident data; a count of 0 means none were reported in that period. There is no national-average breakdown and no list of individual incidents. 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".
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude (use together with lng, as an alternative to address). | |
| lng | No | Longitude (use together with lat, as an alternative to address). | |
| address | No | Full US street address, e.g. "500 Adams St, Tulsa, OK". Provide either address OR lat+lng. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | |
| location | No | The resolved location for the query. |
| incidents | No | Incident counts within radius_feet for date_from through date_to. Null when this city does not publish incident data. |
| test_mode | No | True when querying the free test address. |
| crime_score | No | Letter safety grade from A+ (safest) to F. |
| crime_numeric | No | 0-1 scale where 1 is safest. |
| crime_description | No | Human-readable explanation of the score. |
| crime_score_source | No | "incidents" when the grade comes from reported incidents on that block, "block_group" otherwise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, but the description adds material context beyond them: that data is not a live feed, that incidents is null vs. 0 semantics, that incidents only exist in some cities, that a DoorProfit API key is required consuming 1 quota call, and a free test address. This is unusually rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the core purpose and return shape come first, then caveats, then usage routing, then constraints. Every clause carries information, though the single long paragraph could be split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't describe return values, yet it clarifies the grade scale, null-vs-zero semantics, and coverage limits — exactly the ambiguities an agent would otherwise guess at. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a real constraint not in the schema: 'Pass either address or lat+lng, not both.' That mutual-exclusivity rule is genuine value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Crime safety grade and nearby incident counts') and scopes it to 'one US address or coordinate pair.' It also explicitly names what it is not (neighborhood data, offenders), so an agent can separate it from siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('is this address/neighborhood safe?' questions) plus two named exclusions routing to alternatives: get_neighborhood_data for demographics/income/rent/schools and search_offenders for registered offenders. When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_neighborhood_dataGet Neighborhood Demographics & EconomicsARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude (use together with lng, as an alternative to address). | |
| lng | No | Longitude (use together with lat, as an alternative to address). | |
| address | No | Full US street address, e.g. "500 Adams St, Tulsa, OK". Provide either address OR lat+lng. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | |
| location | No | The resolved location for the query. |
| test_mode | No | True when querying the free test address. |
| neighborhood | No | Neighborhood data; null when no data exists for the location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is established. The description adds valuable behavioral context beyond annotations: quota consumption (1 call), requires an API key, the neighborhood field can be null when no data exists, and a free test address exception. This is strong supplementary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but organized logically: what's returned, when to use, when not to use, input rules, edge case (null neighborhood), and constraints (US only, API key, quota). Front-loaded with the data profile. Slightly long but every sentence carries distinct value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent, open-world tool with an output schema and 100% schema coverage, the description covers purpose, boundaries, input constraints, edge cases, and operational requirements. There's an output schema present, so return-value documentation is handled structurally. Nothing essential is missing for this moderate-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 3 parameters documented in schema), so baseline is 3. The description adds the mutually-exclusive constraint between address and lat+lng and specifies address format with an example, going slightly beyond schema. However, it doesn't describe lat/lng ranges or precision requirements beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb+resource (Profile of the neighborhood/census block group) and enumerates the specific data dimensions returned: demographics, income, home values, rent, education, cost-of-living, climate/disaster risk. It also explicitly distinguishes itself from get_crime_data, a sibling tool, by stating what it does NOT return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('Use this when the question is about who lives in an area or what it costs to live there'), explicit when-not-to-use with the named alternative ('Do NOT use it for crime or safety scores (use get_crime_data)'), and input constraints ('Pass either address or lat+lng, not both', 'US locations only'). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_offendersSearch Registered OffendersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dob | No | Date of birth, YYYY-MM-DD. | |
| lat | No | Latitude (use together with lng, as an alternative to address). | |
| lng | No | Longitude (use together with lat, as an alternative to address). | |
| city | No | City filter for name-based searches. | |
| page | No | Page number (default 1). | |
| limit | No | Results per page (default 50, max 100). | |
| state | No | Two-letter state code filter, e.g. "OK". | |
| radius | No | Search radius in miles for location searches (default 1, max 3). | |
| address | No | Full US street address, e.g. "500 Adams St, Tulsa, OK". Provide either address OR lat+lng. | |
| zipcode | No | Zipcode filter for name-based searches. | |
| last_name | No | Last name for name-based searches. | |
| first_name | No | First name for name-based searches. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | |
| radius | No | Search radius in miles (location searches only). |
| success | Yes | |
| offenders | No | |
| test_mode | No | |
| search_type | No | "gis" for location searches, "name" for name searches. |
| total_count | No | Total matching results. |
| total_pages | No | |
| offenders_count | No | Results on this page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is safe. The description adds valuable behavioral context beyond annotations: results include distance from search point, radius default/cap, pagination details (page, limit, max 100), and importantly that each page request requires a DoorProfit API key and consumes 1 call. This is meaningful disclosure beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is densely informative with no wasted sentences, covering modes, parameter grouping, precedence rules, exclusions, and API-usage implications in a compact form. It could be split into clearer sub-sections for readability, but every sentence earns its place and the critical information (mode selection, API key cost) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 12 parameters and no required fields, the description fully explains mode selection, parameter constraints, precedence, pagination, and API call costs. The output schema exists so return-value documentation is handled structurally. For a complex multi-mode tool, this is remarkably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents all 12 parameters. The description adds value by explaining parameter relationships and constraints beyond what the schema states: which params belong to which mode, the 'three filters alone not accepted' rule for city/state/zipcode, radius default/cap semantics, and pagination defaults. This exceeds the baseline 3 for full coverage documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (search) and resource (US registered offenders), and explicitly defines two operation modes (location and name) with their respective parameter requirements. It distinguishes itself from the sibling get_crime_data by specifying this tool is only for registered-offender questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance and names the alternative (get_crime_data for safety grades). It also specifies mode-specific requirements — location needs address or lat+lng, name needs at least one of first_name/last_name/dob — and states that location takes precedence when both are supplied. This is model guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_crime_data10 fields changed- removed
Output schema / properties / crime_breakdownRemoved value: -{ - "additionalProperties": true, - "description": "Per-crime-type comparison vs the national average (e.g. assault, burglary, theft).", - "type": [ - "object", - "null" - ] -} - added
Output schema / properties / crime_score_sourceAdded value: +{ + "description": "\"incidents\" when the grade comes from reported incidents on that block, \"block_group\" otherwise.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / incidents / additionalPropertiesPrevious value: -trueNew value: +false - changed
Output schema / properties / incidents / descriptionPrevious value: -"Recent crime incidents near the location."New value: +"Incident counts within radius_feet for date_from through date_to. Null when this city does not publish incident data." - added
Output schema / properties / incidents / properties / by_typeAdded value: +{ + "additionalProperties": false, + "description": "Counts for the 12 types the grade uses. Every key is present; 0 means none reported.", + "properties": { + "arson": { + "type": "integer" + }, + "assault": { + "type": "integer" + }, + "burglary": { + "type": "integer" + }, + "drug_offense": { + "type": "integer" + }, + "kidnapping": { + "type": "integer" + }, + "murder": { + "type": "integer" + }, + "robbery": { + "type": "integer" + }, + "sexual_offense": { + "type": "integer" + }, + "shooting": { + "type": "integer" + }, + "theft": { + "type": "integer" + }, + "vandalism": { + "type": "integer" + }, + "weapons": { + "type": "integer" + } + }, + "type": "object" +} - added
Output schema / properties / incidents / properties / count / descriptionAdded value: +"Sum of by_type." - removed
Output schema / properties / incidents / properties / dataRemoved value: -{ - "items": { - "additionalProperties": true, - "properties": { - "address": { - "type": [ - "string", - "null" - ] - }, - "date": { - "description": "YYYY-MM-DD.", - "type": [ - "string", - "null" - ] - }, - "distance_feet": { - "type": [ - "integer", - "null" - ] - }, - "lat": { - "type": [ - "number", - "null" - ] - }, - "lng": { - "type": [ - "number", - "null" - ] - }, - "type": { - "description": "Crime type.", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / incidents / properties / date_from / descriptionAdded value: +"YYYY-MM-DD start of the city scoring period." - added
Output schema / properties / incidents / properties / date_to / descriptionAdded value: +"YYYY-MM-DD end of the city scoring period." - changed
Output schema / properties / incidents / typePrevious value: -"object"New value: +[ + "object", + "null" +]
4 tool updates
- First observed
get_api_usage - First observed
get_crime_data - First observed
get_neighborhood_data - First observed
search_offenders
Related MCP Connectors
US ZIP code intelligence: demographics, weather, tax, crime, housing, voting, and more.
U.S. real-estate data: property records, AVM value + rent estimates, sale/rental listings.
- HoodExOAuthapp.hoodex
Neighbourhood intelligence for any address: livability scores, community and street data.
US property data: powerlines, noise, crime, hazards, schools and more
Related MCP Servers
- AlicenseAqualityBmaintenanceUS crime safety scores, recent incidents, neighborhood demographics, rent data, and registered-offender search by address. Free tier available.4MIT
- AlicenseAqualityDmaintenanceProvides US real estate data including housing stats, demographics, nearby amenities, area comparisons, cost-of-living analysis, and neighborhood search via free public APIs without any API keys.6MIT
- FlicenseNot gradedqualityCmaintenanceEnables location intelligence for US ZIP codes, allowing users to search, profile, and compare ZIP codes across various domains like crime, income, schools, and more.-
- FlicenseNot gradedqualityDmaintenanceProperty intelligence API for US real estate. Returns 16+ data points for any US address: noise levels, wetlands, slope, natural light, powerline proximity, crime rates, property facing direction, zoning, public record, radon risk, natural hazards (earthquake, flood, wildfire), neighborhood demographics, falling tree risk, RF/cell tower exposure, and nearby school.-
Glama MCP Gateway
Add one secure layer between your agents and this server.