# Tools

Every tool the PorchQ MCP server offers, generated from the list the server answers with. PorchQ serves 14 tools today. Each one works on one community at a time and answers only with what the person who connected can see in PorchQ.

| Tool | What it does | Scope | Effect | Who can use it |
|---|---|---|---|---|
| [`community_overview`](/developers/mcp/tools/community_overview) | A snapshot of one community for the person who asks. | `community:read` | read | Everyone in the community. |
| [`maintenance_requests_list`](/developers/mcp/tools/maintenance_requests_list) | Maintenance requests in one community, newest first. | `maintenance:read` | read | Everyone in the community. |
| [`maintenance_request_create`](/developers/mcp/tools/maintenance_request_create) | Submits a maintenance request, the same way the person would in PorchQ. | `maintenance:write` | write | Everyone in the community. |
| [`announcements_list`](/developers/mcp/tools/announcements_list) | Recent announcements that members can see. | `community:read` | read | Everyone in the community. |
| [`announcement_create`](/developers/mcp/tools/announcement_create) | Saves an announcement as a draft for a person to review and publish in PorchQ. | `community:write` | draft | Owners and managers with a role in the community. |
| [`events_list`](/developers/mcp/tools/events_list) | Upcoming calendar events, soonest first. | `community:read` | read | Everyone in the community. |
| [`event_create`](/developers/mcp/tools/event_create) | Creates a calendar event. | `community:write` | send (write when `visibility` is `staff_only`) | Owners and managers with a role in the community. |
| [`event_update`](/developers/mcp/tools/event_update) | Changes an existing calendar event. | `community:write` | send (write when `visibility` is `staff_only`) | Owners and managers with a role in the community. |
| [`resident_directory_search`](/developers/mcp/tools/resident_directory_search) | Finds people in a community by name, email or unit. | `people:read` | read | Owners and managers. |
| [`documents_search`](/developers/mcp/tools/documents_search) | Finds documents by title, category or words in them. | `documents:read` | read | Everyone in the community. |
| [`billing_status`](/developers/mcp/tools/billing_status) | The community's PorchQ plan and subscription. | `billing:read` | read | Owners and managers. |
| [`ballots_list`](/developers/mcp/tools/ballots_list) | Ballots, newest first. | `community:read` | read | Everyone in the community. |
| [`meeting_summary`](/developers/mcp/tools/meeting_summary) | The summary of one set of meeting notes. | `meetings:read` | read | Owners and managers. |
| [`property_select`](/developers/mcp/tools/property_select) | Lists the communities this connection reaches, and confirms one when given its id. | `community:read` | read | Everyone. |

## Effects

Every tool call is recorded with its effect. Changes are limited per person (see [Errors and limits](/developers/mcp/errors-and-limits)), and every tool that changes something accepts an `idempotency_key`.

- **read**: changes nothing.
- **draft**: saves something only people in PorchQ see until a person acts.
- **write**: changes data in PorchQ.
- **send**: reaches other members (email, push or the public website).

## Annotations

Each tool carries the MCP hints `readOnlyHint`, `destructiveHint` and `openWorldHint` (and `idempotentHint` where it applies), so an assistant can decide when to ask the person before calling it. No PorchQ tool reaches outside PorchQ, so `openWorldHint` is always `false`.
