# Peerspace MCP tools

> Every Peerspace MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/peerspace

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

15 tools for Peerspace on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own Peerspace host account (email and password, or Google, Facebook or Apple sign-in)
- Integration page: https://cotlet.dev/integrations/peerspace-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `peerspace_list_listings` | read | Your spaces and their listings, with base rate, Instant Book and paused status. |
| `peerspace_list_bookings` | read | Booking requests and bookings from the Bookings tab, with guest, date, hours and attendees. |
| `peerspace_get_booking` | read | One booking or request: times, attendees, activity, add-ons, price, expected payout and when a request expires. |
| `peerspace_list_conversations` | read | Inbox threads with guests, with the last message time and whether the guest wrote last. |
| `peerspace_get_conversation` | read | All messages in a thread, with the inquiry or booking it belongs to. |
| `peerspace_get_calendar` | read | Inquiries, requests and bookings for one space, by day. |
| `peerspace_list_payouts` | read | Payouts with date, amount, status and the bookings, overtime and add-ons in each. |
| `peerspace_send_message` | write | Reply as you in a guest thread in the Peerspace inbox. |
| `peerspace_send_custom_offer` | write | Invite the guest to book with your date, time, attendees and price. The guest has 7 days to pay. |
| `peerspace_accept_booking_request` | write | Accept a pending request. The booking is confirmed and the guest is charged in full. |
| `peerspace_decline_booking_request` | write | Decline a pending request and release the authorization hold on the guest's card. |
| `peerspace_request_booking_update` | write | Ask the guest to approve a new date, time, attendee count or price, up to 1 hour before start. |
| `peerspace_block_calendar_time` | write | Block dates and times on a space calendar so guests cannot book them. |
| `peerspace_add_calendar_rate` | write | Rate for chosen days and times on one listing, e.g. weekends or weekday evenings. |
| `peerspace_set_instant_book` | write | Turn Instant Book on or off for one listing, if your account has access. |

## List listings

MCP tool: `peerspace_list_listings`

Access: read.

Returns every listing on your host account with its space, base rate, whether Instant Book is on and whether the listing is live or paused. A paused listing cannot be booked and is hidden from search, and guests cannot contact you about it. Use the IDs here in the other calls.

### Parameters

No parameters.

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listings": [
      {
        "listing_id": "l_30918",
        "space_id": "s_4410",
        "title": "Daylight loft studio",
        "base_hourly_rate": 120,
        "instant_book": false,
        "status": "live"
      },
      {
        "listing_id": "l_30922",
        "space_id": "s_4410",
        "title": "Daylight loft, events",
        "base_hourly_rate": 150,
        "instant_book": false,
        "status": "paused"
      }
    ]
  },
  "isError": false
}
```

## List bookings

MCP tool: `peerspace_list_bookings`

Access: read.

Lists bookings and requests, each with guest first name, start and end, attendees and the status. Requests carry an expires_at, two business days after you received them, so your agent can answer the oldest first. Use booking_id with get_booking, accept_booking_request and decline_booking_request.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `status` | enum | no | requested, confirmed, past or cancelled. Default: requested. |
| `listing_id` | string | no | Only this listing. |
| `from` | date | no | Bookings on or after this date. |
| `to` | date | no | Bookings on or before this date. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "bookings": [
      {
        "booking_id": "b_90417",
        "listing_id": "l_30918",
        "guest": "Dana",
        "status": "requested",
        "start": "2026-10-17T14:00:00-07:00",
        "end": "2026-10-17T18:00:00-07:00",
        "attendees": 12,
        "expires_at": "2026-10-14T09:12:00-07:00"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## Get booking

MCP tool: `peerspace_get_booking`

Access: read.

Returns the full record of one booking or request, including the add-ons attached, the price and the payout you expect after Peerspace's service fee. For a request it also returns when it expires. Read it before you accept or decline.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `booking_id` | string | yes | Booking or request ID from list_bookings. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_get_booking",
    "arguments": {
      "booking_id": "booking_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_id": "b_90417",
    "listing_id": "l_30918",
    "guest": "Dana",
    "status": "requested",
    "start": "2026-10-17T14:00:00-07:00",
    "end": "2026-10-17T18:00:00-07:00",
    "attendees": 12,
    "activity": "Photo shoot",
    "add_ons": [
      {
        "name": "Backdrop set",
        "price": 50
      }
    ],
    "subtotal": 480,
    "total": 530,
    "expected_payout": 477,
    "expires_at": "2026-10-14T09:12:00-07:00"
  },
  "isError": false
}
```

## List conversations

MCP tool: `peerspace_list_conversations`

Access: read.

Lists your Peerspace inbox threads, each linked to an inquiry or a booking. Set unanswered_only to get only threads where the guest wrote last, which is what response rate is measured on. Pass next_cursor back as cursor for the next page.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `unanswered_only` | boolean | no | Only threads where the guest wrote last. |
| `limit` | integer | no | Maximum threads per page. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "conversations": [
      {
        "conversation_id": "c_58210437",
        "guest": "Dana",
        "about": "inquiry",
        "last_message_at": "2026-10-11T08:40:00-07:00",
        "guest_wrote_last": true
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## Get conversation

MCP tool: `peerspace_get_conversation`

Access: read.

Returns the whole thread, oldest message first, with the inquiry or booking it is about. Your agent reads it before replying so it does not repeat an earlier answer.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `conversation_id` | string | yes | Inbox thread ID from list_conversations. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_get_conversation",
    "arguments": {
      "conversation_id": "conversation_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "conversation_id": "c_58210437",
    "about": "inquiry",
    "messages": [
      {
        "from": "guest",
        "sent_at": "2026-10-11T08:40:00-07:00",
        "body": "Hi! Is parking free, and can we shoot on Oct 24?"
      }
    ]
  },
  "isError": false
}
```

## Get calendar

MCP tool: `peerspace_get_calendar`

Access: read.

Returns what the Peerspace calendar shows for one space between two dates: inquiries, requests and bookings. Inquiries and requests do not block the time, so it still looks open to guests; accepted bookings do. Check it before you accept a request.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `space_id` | string | yes | Space ID from list_listings. |
| `from` | date | yes | First day. |
| `to` | date | yes | Last day. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_get_calendar",
    "arguments": {
      "space_id": "space_8c41d2",
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "space_id": "s_4410",
    "days": [
      {
        "date": "2026-10-17",
        "items": [
          {
            "type": "request",
            "booking_id": "b_90417",
            "start": "14:00",
            "end": "18:00"
          }
        ]
      },
      {
        "date": "2026-10-18",
        "items": [
          {
            "type": "booking",
            "booking_id": "b_90388",
            "start": "10:00",
            "end": "13:00"
          }
        ]
      }
    ]
  },
  "isError": false
}
```

## List payouts

MCP tool: `peerspace_list_payouts`

Access: read.

Lists the payouts from your payout dashboard. A payout is scheduled 72 hours after the booking ends, becomes processing once initiated and processed after it is paid out. Each entry lists what is inside it, because the payout for a booking and for its overtime can arrive separately.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `status` | enum | no | scheduled, processing or processed. Default: all. |
| `since` | date | no | Only payouts on or after this date. |

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "payouts": [
      {
        "payout_id": "p_7710",
        "status": "scheduled",
        "date": "2026-10-20",
        "amount": 842.5,
        "includes": [
          {
            "type": "booking",
            "booking_id": "b_90388",
            "amount": 800
          },
          {
            "type": "overtime",
            "booking_id": "b_90388",
            "amount": 42.5
          }
        ]
      }
    ]
  },
  "isError": false
}
```

## Send message

MCP tool: `peerspace_send_message`

Access: write. Confirm: waits for the user's OK before it runs.

Sends a message in an existing thread under your name; the guest gets it in the Peerspace inbox. It cannot start a thread with a stranger, only answer one. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `conversation_id` | string | yes | Inbox thread ID from list_conversations. |
| `body` | string | yes | Message text. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_send_message",
    "arguments": {
      "conversation_id": "c_58210437",
      "body": "Hi Dana, Oct 24 is open for 20 people. Parking for 6 cars is free on site, and load-in is through the back door on 3rd St. Want me to send you an offer for the hours you need?"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "message_id": "m_6204188",
    "conversation_id": "c_58210437",
    "status": "sent",
    "sent_at": "2026-10-11T09:05:00-07:00"
  },
  "isError": false
}
```

## Send custom offer

MCP tool: `peerspace_send_custom_offer`

Access: write. Confirm: waits for the user's OK before it runs.

Sends an invite-to-book from a guest thread. Spaces without a food and beverage minimum take a rental fee; spaces with one also take minimum spend and gratuity. Sales tax on minimum spend and add-ons is added automatically, so do not include it. The guest then has 7 days to review and submit payment. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `conversation_id` | string | yes | Inbox thread ID from list_conversations. |
| `start` | datetime | yes | Start, ISO 8601 with time zone. |
| `end` | datetime | yes | End, ISO 8601 with time zone. |
| `attendees` | integer | yes | Number of attendees. |
| `rental_fee` | number | yes | Space rental fee. |
| `minimum_spend` | number | no | Food and beverage minimum, only for spaces that have one. |
| `gratuity` | number | no | Gratuity, only with a food and beverage minimum. |
| `add_on_ids` | string[] | no | Existing add-ons of the listing to include. |
| `note` | string | no | What the offer includes and what the guest can expect. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_send_custom_offer",
    "arguments": {
      "conversation_id": "c_58210437",
      "start": "2026-10-24T10:00:00-07:00",
      "end": "2026-10-24T16:00:00-07:00",
      "attendees": 20,
      "rental_fee": 900,
      "note": "Six hours for your team offsite, setup from 9:30."
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "offer_id": "o_7731905",
    "conversation_id": "c_58210437",
    "status": "sent",
    "rental_fee": 900,
    "expires_at": "2026-10-18T09:05:00-07:00"
  },
  "isError": false
}
```

## Accept booking request

MCP tool: `peerspace_accept_booking_request`

Access: write. Confirm: waits for the user's OK before it runs.

Accepts a request from the Bookings tab. The booking is confirmed and the guest's card is charged for the full amount. A request you leave alone expires after two business days. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `booking_id` | string | yes | Booking or request ID from list_bookings. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_accept_booking_request",
    "arguments": {
      "booking_id": "b_90417"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_id": "b_90417",
    "status": "confirmed",
    "start": "2026-10-17T14:00:00-07:00",
    "end": "2026-10-17T18:00:00-07:00",
    "total": 530
  },
  "isError": false
}
```

## Decline booking request

MCP tool: `peerspace_decline_booking_request`

Access: write. Confirm: waits for the user's OK before it runs.

Declines a request. The authorization hold on the guest's card is released. Declining counts as a response for your response rate, an expired request does not. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `booking_id` | string | yes | Booking or request ID from list_bookings. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_decline_booking_request",
    "arguments": {
      "booking_id": "booking_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_id": "b_90421",
    "status": "declined"
  },
  "isError": false
}
```

## Request booking update

MCP tool: `peerspace_request_booking_update`

Access: write. Confirm: waits for the user's OK before it runs.

Sends an update request on a confirmed booking; the guest accepts or declines. If they accept, the change applies at once. If they decline, or do not answer within two business days, the original booking stays. If you change the hours, set the new price yourself: it does not update on its own, and 8+ hour discounts do not apply to host updates. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `booking_id` | string | yes | Booking or request ID from list_bookings. |
| `fields` | object | yes | Any of start, end, attendees, subtotal. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_request_booking_update",
    "arguments": {
      "booking_id": "booking_8c41d2",
      "fields": "fields"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_id": "b_90388",
    "update_id": "u_2045",
    "status": "pending_guest",
    "fields": {
      "end": "2026-10-18T14:00:00-07:00",
      "subtotal": 800
    }
  },
  "isError": false
}
```

## Block calendar time

MCP tool: `peerspace_block_calendar_time`

Access: write. Confirm: waits for the user's OK before it runs.

Blocks the time for all guests, including guests with a pending inquiry or offer. The title is a private reminder that guests cannot see. There is no call to unblock. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `space_id` | string | yes | Space ID from list_listings. |
| `start` | datetime | yes | Start, ISO 8601 with time zone. |
| `end` | datetime | yes | End, ISO 8601 with time zone. |
| `title` | string | no | Private reminder, not shown to guests. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_block_calendar_time",
    "arguments": {
      "space_id": "space_8c41d2",
      "start": "2026-10-01T09:00:00Z",
      "end": "2026-10-01T09:00:00Z"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "block_id": "blk_5531",
    "space_id": "s_4410",
    "start": "2026-11-03T00:00:00-08:00",
    "end": "2026-11-03T23:59:00-08:00",
    "title": "Maintenance"
  },
  "isError": false
}
```

## Add calendar rate

MCP tool: `peerspace_add_calendar_rate`

Access: write. Confirm: waits for the user's OK before it runs.

Adds a calendar rate to one listing: a name, a rate and the days and times it applies to. Guests see it at checkout once they enter start and end times. Rates far above your base rate can hurt conversion, and Peerspace may remove accounts that use rates to mislead guests. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from list_listings. |
| `name` | string | yes | Rate name, e.g. Weekend. |
| `hourly_rate` | number | yes | Rate per hour. |
| `days` | string[] | yes | mon, tue, wed, thu, fri, sat, sun. |
| `from_time` | string | no | Start time, HH:MM. |
| `to_time` | string | no | End time, HH:MM. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_add_calendar_rate",
    "arguments": {
      "listing_id": "listing_8c41d2",
      "name": "Jane Doe",
      "hourly_rate": 1,
      "days": [
        "days"
      ]
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "l_30918",
    "rate_id": "r_8802",
    "name": "Weekend",
    "hourly_rate": 150,
    "days": [
      "sat",
      "sun"
    ]
  },
  "isError": false
}
```

## Set Instant Book

MCP tool: `peerspace_set_instant_book`

Access: write. Confirm: waits for the user's OK before it runs.

Switches the Instant Book toggle for one listing. If the toggle is not available on the listing, the call fails and you need to use Request Access in Peerspace first. You can turn it on or off at any time. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from list_listings. |
| `enabled` | boolean | yes | true to turn on, false to turn off. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "peerspace_set_instant_book",
    "arguments": {
      "listing_id": "listing_8c41d2",
      "enabled": true
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "l_30918",
    "instant_book": true
  },
  "isError": false
}
```
