# `meeting_summary`

**Get meeting summary.** The summary of one set of meeting notes.

**Who can use it:** Owners and managers.

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

## Description shown to assistants

> Use this when the user asks for a summary of a specific meeting note thread.

## Arguments

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

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

- `meeting_note`: the notes' `id`, `status`, upload and processing times and a short preview.
- `summary`: the latest policy summary PorchQ wrote for these notes, or the latest reply, or a sentence saying there is none yet.

`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"]
    },
    "meeting_note": {
      "type": "object",
      "properties": {
        "id": { "type": "string" },
        "status": { "type": ["string", "null"] },
        "uploadedAt": { "type": "string" },
        "processedAt": { "type": ["string", "null"] },
        "inputPreview": { "type": ["string", "null"] }
      },
      "required": ["id", "uploadedAt"]
    },
    "summary": { "type": "string" }
  },
  "required": ["property", "meeting_note", "summary"]
}
```

## Example

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