# `community_overview`

**Community overview.** A snapshot of one community for the person who asks.

**Who can use it:** Everyone in the community. Owners and managers also get member and unit counts.

| Scope | Effect | Hints |
|---|---|---|
| `community:read` | read | reads only, idempotent |

## Description shown to assistants

> Use this when the user asks for HOA dashboard status, totals, and a high-level snapshot.

## Arguments

| Argument | Type | Required | About |
|---|---|---|---|
| `property_id` | string | No | The community's public id (`prop_web…`). Pass it on every call. |

## What it returns

Every result has `content` (one short sentence for the person) and `structuredContent` (the data below). A tool that could not run answers with `isError: true` and a sentence saying why; see [Errors and limits](/developers/mcp/errors-and-limits).

- `property`: the community (id, name, address, time zone).
- `membership`: the person's `role` and `unit`.
- `stats`: `open_maintenance_requests`, `active_announcements`, `upcoming_events`, `open_ballots` and `documents`, each counted as the person would see them in PorchQ (a resident's open requests are their own). Owners and managers also get `memberships` and `units`.

`structuredContent` follows this JSON Schema, also in `tools/list` as `outputSchema`:

```json
{
  "type": "object",
  "properties": {
    "property": {
      "type": "object",
      "properties": {
        "id": { "type": "string" },
        "name": { "type": "string" },
        "addressLine1": { "type": ["string", "null"] },
        "addressLine2": { "type": ["string", "null"] },
        "city": { "type": ["string", "null"] },
        "state": { "type": ["string", "null"] },
        "postalCode": { "type": ["string", "null"] },
        "timezone": { "type": ["string", "null"] },
        "billingFrequency": { "type": ["string", "null"] },
        "demoClone": { "type": "boolean" },
        "demoPersona": { "type": ["string", "null"] },
        "demoExpiresAt": { "type": ["string", "null"] }
      },
      "required": ["id", "name"]
    },
    "membership": {
      "type": "object",
      "properties": { "role": { "type": "string" }, "unit": { "type": ["string", "null"] } },
      "required": ["role"]
    },
    "stats": {
      "type": "object",
      "properties": {
        "open_maintenance_requests": { "type": "integer" },
        "active_announcements": { "type": "integer" },
        "upcoming_events": { "type": "integer" },
        "open_ballots": { "type": "integer" },
        "documents": { "type": "integer" },
        "memberships": { "type": "integer", "description": "Owners and managers only." },
        "units": { "type": "integer", "description": "Owners and managers only." }
      },
      "required": ["open_maintenance_requests", "active_announcements", "upcoming_events", "open_ballots", "documents"]
    }
  },
  "required": ["property", "membership", "stats"]
}
```

## Example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "community_overview",
    "arguments": {
      "property_id": "prop_web4k2m9q7x1v8c3n5b6z0a2s4d"
    }
  }
}
```
