> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acrelens.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP server

> Use AcreLens directly from Claude (Desktop, Code, or any MCP client) — no glue code required.

The AcreLens MCP server exposes our REST API as native [Model Context Protocol](https://modelcontextprotocol.io) tools. Connect it once in Claude Desktop or Claude Code and you can ask Claude to "analyze this address," "get the solar potential for these coordinates," or "compare these three properties" — Claude calls the tools directly and Acrelens charges your account just like any other API request.

## Server URL

```
https://mcp.acrelens.com/mcp
```

This is a streamable-HTTP MCP endpoint speaking JSON-RPC 2.0. Any MCP-compatible client works.

## Authentication — Bring Your Own Key

Pass your existing AcreLens API key as a Bearer token. Same key format as the
REST API, same billing, same rate limits, same revocation.

```
Authorization: Bearer al_live_a1b2c3...
```

OAuth-based authentication (one-click sign-in via browser consent) is on the
roadmap but not currently available. For now, copy your API key from
[Manage → API Keys](https://acrelens.com/dashboard/manage/api-keys) and
paste it into your MCP client's config.

## Adding to Claude Desktop

Open `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows) and add:

```json theme={null}
{
  "mcpServers": {
    "acrelens": {
      "url": "https://mcp.acrelens.com/mcp",
      "headers": {
        "Authorization": "Bearer al_live_..."
      }
    }
  }
}
```

Replace `al_live_...` with your actual key. Restart Claude.

## Adding to Claude Code

```bash theme={null}
claude mcp add acrelens https://mcp.acrelens.com/mcp \
  --header "Authorization: Bearer al_live_..."
```

Or edit `~/.claude.json` directly with the same shape as the Desktop config above.

## Tools exposed

| Tool | Cost | What it does |
| - | - | - |
| `analyze_land` | 1 report (\$3.99) | Full land analysis. Same depth as `POST /v1/analyze`. Returns a `report_id` and poll URL. |
| `get_land_quick_score` | 0.25 report (\$1.00) | Fast 0–100 suitability score with brief rationale. No sources, no narrative. |
| `get_state_land_profile` | free | State-level intelligence: regulation, climate, water, building codes — aggregated per mode. |
| `compare_properties` | 1 report per property | Submits a batch of 2–5 properties for side-by-side analysis. Returns a `batch_id`. |
| `get_solar_potential` | free | NREL PVWatts pull: annual kWh, system sizing, cost bracket. Lat/lng or address input. |

Free tools don't deduct from your balance and don't count against quota or rate limits.

### `analyze_land`

Best for "Claude, analyze this property in depth." Returns a report ID — Claude will then poll or wait for the webhook to fetch the result. Same params as `POST /v1/analyze`: `address`, `state`, `mode`, optional `county`, `acreage`, `lat`, `lng`.

### `get_land_quick_score`

Best for "Claude, give me a fast read on this." 0–100 with one or two sentences of reasoning. No sources, no narrative summary. Use it to filter a list before paying for the full reports.

### `get_state_land_profile`

Best for "Claude, what should I know about building off-grid in Montana?" Returns the same state-level data the full reports use to seed their analysis — without running a per-property report.

### `compare_properties`

Best for "Claude, which of these three is best for off-grid living?" Accepts 2–5 property objects. Returns a batch ID. Each property is its own report and is priced as such.

### `get_solar_potential`

Best for "Claude, what's the solar viability here?" Pure NREL PVWatts data — annual kWh estimate, recommended system size, and a rough cost bracket. No AcreLens analysis layered on top.

## Quota, rate limits, and billing

Calls through MCP go through the same machinery as REST calls. That means:

* Same per-second [rate limits](/reference/rate-limits)
* Same daily / monthly [spend caps](/concepts/quota-and-billing#spend-caps)
* Same balance / free-trial deduction order
* Same `request_id` returned on every error — quote it when contacting support

A `429 rate_limit_exceeded` from the REST API surfaces as an error in Claude's tool response.

## Differences from REST

A few things only work over REST:

* Webhook URL configuration (per-customer in dashboard, or per-request in REST body)
* Idempotency keys (MCP tool calls are idempotent at the JSON-RPC level for the same tool + same arguments within a session, but cross-session retries should use REST + `Idempotency-Key`)
* Batch sizes above 5 (use `POST /v1/batch` for up to 50)

## When to use MCP vs REST

* **Use MCP** when you're working interactively in Claude and want to ask natural-language questions about land. You skip writing client code entirely.
* **Use REST** when you're building an application, doing background processing, batch-importing data, or needing webhook-driven workflows.

Both surfaces share one account, one balance, one set of API keys.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.