# Precisely MCP

> Precisely gives your AI client accurate location intelligence by connecting it to a global geospatial network. Use it to geocode addresses, verify property boundaries down to the rooftop level, calculate local sales taxes, and score environmental or crime risks for any coordinate set.

## Overview
- **Category:** data-analytics
- **Price:** Free
- **Tags:** data-integrity, location-intelligence, geocoding, risk-assessment, demographics, spatial-data

## Description

You gotta feed your agent the **Precisely** intelligence network so it knows what's actually at a location. This connection lets your client pull accurate geospatial data—everything from tax rates to flood risks—without needing a dozen different map APIs. It gives you real-world context for any coordinate set.

### Resolving Coordinates and Addresses

When you have an address, even if it's partial, the agent doesn't guess; it resolves precise global coordinates using `**geocode_address**`. You feed it a full or partial street name, and it spits out latitude/longitude. It also tells you *how* accurate that match is—did it nail the rooftop level, or did it just hit the general street segment? If you're still typing an address, use `**autocomplete_address**`; this gives up to ten ranked suggestions from a massive global database of structured addresses right as your user types.

But if you start with coordinates instead of text, you can go backward. The `**reverse_geocode**` tool takes those lat/long points and converts them back into a complete, structured postal address, confirming the nearest rooftop-level street components. For full validation, use `**verify_address**`. This checks any input postal address against official databases, correcting formatting issues and telling you straight up if the location is actually deliverable.

### Calculating Financial and Property Data

Need to know what people are paying in taxes? The agent determines the combined sales tax rate for a specific coordinate using `**get_local_tax**`. It doesn't just give you one number; it breaks down exactly where that money goes—the state contribution, the county split, and the city portion. For property-specific numbers on US addresses, `**get_property_info**` retrieves comprehensive records. You get lot size measurements, building square footage counts, assessed values, and even the year the structure was built.

If you just need to know what time zone it is right now, use `**get_timezone**`. It resolves the IANA timezone identifier and gives you the current UTC offset for any coordinate, making sure it handles Daylight Saving Time shifts correctly.

### Analyzing Risk and Demographics

The agent reads specific risk scores tied to location. If flood concerns come up, `**enrich_flood_risk**` evaluates coordinates against FEMA data, returning the official flood zone classification (like A, AE, X, or V) plus a calculated risk index. For crime analysis, `**enrich_crime_risk**` calculates the specific crime risk index for those coordinates. It normalizes scores across categories like burglary and theft relative to national averages.

Want to know who lives there? `**enrich_demographics**` pulls detailed socioeconomic profiles. This includes household income brackets, population density counts, and education level data for the area. You're getting deep insights into the community surrounding those coordinates.

## Tools

### autocomplete_address
Provides up to 10 ranked address suggestions as a user types, drawing from a global database of structured addresses.

### enrich_crime_risk
Calculates the crime risk index for coordinates, returning normalized scores across categories like burglary and theft relative to national averages.

### enrich_demographics
Pulls rich socioeconomic profiles for a location, including household income brackets, population density, and education levels.

### enrich_flood_risk
Returns flood zone classification (A, AE, X, V) and risk index by evaluating coordinates against FEMA data.

### geocode_address
Converts a full or partial address string into precise global latitude/longitude coordinates, identifying the match depth (e.g., rooftop vs. street).

### get_local_tax
Determines the combined sales tax rate and its individual components (state, county, city) for a given coordinate.

### get_property_info
Retrieves comprehensive property data for US addresses, including lot size, building square footage, assessed value, and year built.

### get_timezone
Resolves the IANA timezone identifier and current UTC offset for any geographic coordinate, accounting for DST changes.

### reverse_geocode
Converts coordinates back into a structured postal address, identifying the nearest rooftop-level street components.

### verify_address
Validates and standardizes any input postal address against authoritative datasets, confirming deliverability status.

## Prompt Examples

**Prompt:** 
```
What is the exact sales tax for an e-commerce order delivered to '1 Market St, San Francisco, CA'?
```

**Response:** 
```
First I geocoded '1 Market Street, San Francisco, CA'. I retrieved coordinates `37.794, -122.395`. Evaluating `get_local_tax`, the combined sales tax rate there is exactly 8.625% (State: 6.0%, County: 0.25%, City: 1.25%, Special: 1.125%).
```

**Prompt:** 
```
Check the crime risk around the latitude 40.7128 and longitude -74.0060 relative to the national average.
```

**Response:** 
```
I queried `enrich_crime_risk` for `40.7128, -74.0060` (Lower Manhattan). The overall crime index is 231, meaning the risk is 2.3x higher than the national baseline score of 100. The highest driver is the Personal Property theft index.
```

**Prompt:** 
```
Can you verify if '350 5th Ave New York 10118' is a real deliverable address? If yes, give me its timezone.
```

**Response:** 
```
Using `verify_address`, I confirm it standardizes perfectly to '350 5TH AVE, NEW YORK, NY 10118-0110' (The Empire State Building), fully deliverable. Extracting `get_timezone` with its coordinates, it operates under `America/New_York` (UTC-05:00).
```

## Capabilities

### Resolve Coordinates from Addresses
The agent takes a full or partial address string and returns precise global latitude/longitude coordinates.

### Validate and Standardize Addresses
It checks an input address against official postal databases, correcting formatting and confirming if the location is deliverable.

### Calculate Local Tax Rates
The agent determines the combined sales tax rate for a specific coordinate, breaking down the contribution from state, county, and city levels.

### Analyze Socioeconomic Data
It pulls detailed demographic reports for an area, including household income brackets, population density, and education levels.

### Assess Environmental/Crime Risk
The agent reads specific risk scores—like FEMA flood zones or normalized crime indices—for a given location.

## Use Cases

### New E-commerce Checkout Flow
A customer enters an address. Your agent first runs `verify_address` to clean and confirm the format. Then, it uses `geocode_address` for coordinates. Finally, it calls `get_local_tax` to calculate the exact tax total before showing the final price, preventing checkout errors.

### Real Estate Due Diligence
An analyst needs a full picture of a property. They feed coordinates into the agent which then runs `get_property_info` (for square footage), `enrich_flood_risk` (for risk scores), and `enrich_demographics` (for local wealth indicators) in one conversational turn.

### Logistics Route Planning
A logistics worker needs to check a delivery point. The agent uses `reverse_geocode` on the GPS coordinates to confirm the nearest street address, then calls `get_timezone` so the tracking status updates correctly for that locale.

### Fraud Detection and Risk Scoring
A payments system flags an order. The agent queries both `enrich_crime_risk` and `enrich_demographics` using the coordinates to see if the location shows unusually high risk or a demographic profile inconsistent with typical buyers.

## Benefits

- Stop guessing tax rates. Use `get_local_tax` to instantly know the exact combined state, county, and city sales tax rate for any delivery ZIP code.
- Minimize shipping risk with `verify_address`. It standardizes messy input formats (USPS/Royal Mail) and confirms if an address is actually deliverable before you write a single line of validation logic.
- Go beyond simple maps. Use `enrich_demographics` to pull population density, income brackets, and age distribution for a coordinate, allowing your agent to tailor marketing copy instantly.
- Assess risk upfront. Running `enrich_flood_risk` or `enrich_crime_risk` on coordinates lets you factor environmental or security metrics into your underwriting process, not just the mailing address.
- Handle ambiguity with `geocode_address`. Instead of failing on partial input, it resolves candidates and gives you a match confidence score, telling you how close to perfect the data is.

## How It Works

The bottom line is: you give your agent an address, and it runs a pipeline of specialized tools to return multiple layers of verifiable context.

1. First, the AI client sends an address string to `geocode_address` (or `autocomplete_address`) so it can get precise coordinates and validate the input.
2. Next, the agent decides what context is needed—maybe tax rates or flood data. It then passes those coordinates into a specific tool like `get_local_tax` or `enrich_flood_risk`.
3. Finally, the response comes back as structured JSON containing the required data points (e.g., 8.625% sales tax rate and its components).

## Frequently Asked Questions

**How do I use geocode_address to find coordinates for a partial address?**
Pass the most complete string you have into `geocode_address`. The API returns candidates and includes a match confidence score. This helps your agent decide which coordinate set is the best fit, even if the input was vague.

**What's the difference between verify_address and autocomplete_address?**
Autocomplete suggests completions as you type (like a predictive text tool). `verify_address` takes an already completed address and checks it against authoritative datasets to confirm its formal standard and deliverability status.

**Can I use get_local_tax for tax calculations in non-US areas?**
No. The `get_local_tax` tool is explicitly designed to resolve complex, overlapping US sales tax jurisdictions down to the rooftop level; it only covers US territories and states.

**Which tool should I use for finding a city's timezone?**
Use `get_timezone`. It takes coordinates and returns the precise IANA identifier (like America/New_York), which is necessary for accurate time-based logic, especially when accounting for DST.

**If I run many addresses through `geocode_address` in a short period, how does the system handle rate limits?**
The server enforces standard API rate limiting. For high-volume tasks (e.g., processing thousands of records), you must implement client-side throttling and use exponential backoff logic to prevent hitting usage caps.

**Can I run `get_property_info` if the US address doesn't exist in county assessor databases?**
No. This tool requires an active, verifiable US physical address tied to official records. If the data isn't present in the source county database, the call will fail because it cannot retrieve lot size or assessed value.

**Before I run `enrich_demographics`, do I always have to use `geocode_address` first?**
Yes. The demographic tools rely strictly on precise latitude and longitude coordinates, not text addresses. Always pass the output of a successful geocoding call into your enrichment process.

**If I use `reverse_geocode` on coordinates that are in an open area (like a field), what information do I receive?**
It returns the nearest structured address record. If no nearby building exists, it provides the general location type (e.g., 'Rural Area') but will not populate specific street names or postal codes.

**Can the AI find out if a specific property is inside a flood zone?**
Yes. First the AI uses `geocode_address` to find the exact Latitude/Longitude of the building's rooftop. Then it feeds those coordinates into `enrich_flood_risk` to extract the strict FEMA designation naturally.

**How accurately does verify_address standardize locations?**
Very accurately. It connects to native postal services (like USPS and Royal Mail) to autocorrect misspellings, adjust zip codes, and flag impossible addresses before they reach your logistics layer.

**Do I need two separate keys to use this?**
Yes. Precisely Developer APIs use robust OAuth workflows. You must supply both the individual API Key (Consumer Key) and the API Secret. The MCP server handles token exchanging for you internally.