# `property_select`

**Select active property.** Lists the communities this connection reaches, and confirms one when given its id.

**Who can use it:** Everyone.

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

## Description shown to assistants

> Use this when the user wants to switch the active property context.

## 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).

- `selected_property`: `property_id`, `property_name` and the person's `role` there; `null` when called without `property_id`.
- `properties`: every community this connection reaches, the same three fields each.

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

```json
{
  "type": "object",
  "properties": {
    "selected_property": {
      "type": ["object", "null"],
      "properties": {
        "property_id": { "type": "string" },
        "property_name": { "type": "string" },
        "role": { "type": "string" }
      },
      "required": ["property_id", "property_name", "role"],
      "description": "Null when called without property_id."
    },
    "properties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "property_id": { "type": "string" },
          "property_name": { "type": "string" },
          "role": { "type": "string" }
        },
        "required": ["property_id", "property_name", "role"]
      }
    }
  },
  "required": ["selected_property", "properties"]
}
```

## Notes

- Called without `property_id`, it answers even when the person has several communities: it's how an assistant learns their ids.
- PorchQ keeps no "current community" for an app. Pass `property_id` on every later call; this tool only checks one and lists the choices.

## Example

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