# Partiful by Cotlet (pypi · partiful-api-mcp)

Invites, guest lists and text blasts for your events.

- Trust score: 64/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-24

## Components

- remote · `cotlet.dev`: 69/100, [markdown](https://verifymcp.io/servers/dev-cotlet-partiful/mcp-v1-partiful.md), [page](https://verifymcp.io/servers/dev-cotlet-partiful/mcp-v1-partiful)
- remote · `cotlet.dev`: 40/100, [markdown](https://verifymcp.io/servers/dev-cotlet-partiful/mcp-v1-partiful-connect.md), [page](https://verifymcp.io/servers/dev-cotlet-partiful/mcp-v1-partiful-connect)
- pypi · `partiful-api-mcp`: 64/100 (this document), [markdown](https://verifymcp.io/servers/dev-cotlet-partiful/partiful-api-mcp.md), [page](https://verifymcp.io/servers/dev-cotlet-partiful/partiful-api-mcp)

## Channel facts

- Registry: `pypi`
- Package: `partiful-api-mcp`
- Version: `1.0.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-24.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 0 of 35 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 84/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to cotletdev/partiful-api-mcp-server).
  - License check failed: the license (PolyForm-Noncommercial-1.0.0) isn't a recognized OSI-approved license.
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2662 tokens (~166/item across 16 items; 14 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Partiful by Cotlet MCP server?

Partiful by Cotlet runs locally as a PyPI package, launched with uvx partiful-api-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add dev-cotlet-partiful -- uvx partiful-api-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "dev-cotlet-partiful": {
      "command": "uvx",
      "args": [
        "partiful-api-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "dev-cotlet-partiful": {
      "command": "uvx",
      "args": [
        "partiful-api-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add dev-cotlet-partiful -- uvx partiful-api-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-cotlet-partiful": {
      "type": "local",
      "command": [
        "uvx",
        "partiful-api-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dev-cotlet-partiful --command uvx --arg partiful-api-mcp
```

### Hermes

```yaml
mcp_servers:
  dev-cotlet-partiful:
    command: "uvx"
    args: ["partiful-api-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "dev-cotlet-partiful": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "partiful-api-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add dev-cotlet-partiful -t stdio -c uvx -a partiful-api-mcp
```

### Other

```json
{
  "mcpServers": {
    "dev-cotlet-partiful": {
      "command": "uvx",
      "args": [
        "partiful-api-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-24 (score 64)

First indexed and scored.

## MCP tools (14)

### `approve_guests` (~135 tokens)

Approve guests

Approve pending guests on a Guest Approval event.

Moves the given pending guests, or all of them, to Approved, as Approve on the host's guest list does. Partiful tells each approved guest by text or email. Ids that are not pending are refused before the call waits for your approval. Returns how many were approved and how many still wait. Hosts only.

Input parameters:

- `all` (boolean): Approve everyone who is pending instead. Default: false.
- `event_id` (string, required): event_id from list_events.
- `guest_ids` (array): Pending guest_id values from list_guests (status pending).

### `cancel_event` (~137 tokens)

Cancel event

Cancel an event. Partiful notifies the guests.

Cancels the event as Cancel event on its page does: the page stays up marked canceled. By default Partiful texts the guests on the list with your message, so this reaches real people; notify_guests false cancels without telling anyone. An event that is already canceled is refused. It cannot be undone here. Hosts only.

Input parameters:

- `event_id` (string, required): event_id from list_events.
- `message` (string): Note to guests sent with the cancellation.
- `notify_guests` (boolean): Let Partiful tell the guests that the event is canceled. Default: true.

### `check_in_guests` (~124 tokens)

Check in guests

Mark guests as checked in at the door, or undo it.

Checks the given guests in, as the host's check-in list does, or takes the check-in back with undo. Guests get no message. Ids that are not on the guest list are refused. Returns how many guests changed and how many are checked in now. Hosts only.

Input parameters:

- `event_id` (string, required): event_id from list_events.
- `guest_ids` (array, required): guest_id values from list_guests.
- `undo` (boolean): Remove the check-in instead. Default: false.

### `create_event` (~344 tokens)

Create event

New event page. Nobody is invited until you call invite_guests.

Creates and publishes an event page hosted by this account, as Create on partiful.com does, with Partiful's default theme. It is private (only people with the link) unless visibility is public. Nobody is invited or texted; share url or call invite_guests. Times without an offset are read in timezone. Guest Approval and a guest limit exclude each other, so a call with both is refused. Returns the new event.

Input parameters:

- `description` (string): Event details shown on the page.
- `end_at` (string): End, ISO 8601. Optional; must be after start_at.
- `guest_approval` (boolean): Guests ask to join and you approve them (Guest Approval). Clears max_guests.
- `location` (string): Address, place name or link.
- `max_guests` (integer|null): Guest limit; RSVPs over it go to the waitlist. null removes the limit.
- `questions` (array): Guest Questionnaire, short-answer questions asked at RSVP. An empty list turns it off.
- `rsvp_deadline` (string): Last moment guests can RSVP, ISO 8601.
- `start_at` (string, required): Start, ISO 8601. Without an offset it is read in the event's time zone.
- `timezone` (string): IANA zone the event is shown in, e.g. America/New_York. Default: the browser's zone.
- `title` (string, required): Event title.
- `visibility` (string): private: only people with the link (default). public: anyone on or off Partiful.

### `delete_event` (~89 tokens)

Delete event

Delete an event you host for everyone, with its guest list.

Deletes the event as Delete event in its settings does: the page, guest list, photos and messages are gone for everyone and cannot be restored. Guests who RSVPd may be told by Partiful. To keep the page and tell guests, use cancel_event. Hosts only.

Input parameters:

- `event_id` (string, required): event_id from list_events.

### `duplicate_event` (~149 tokens)

Duplicate event

Copy an event with its settings to a new date. The copy has no guests yet.

Makes a copy as Duplicate on the event page does: title, description, location, theme, questionnaire and RSVP settings, no guests and no messages. The copy starts at start_at and keeps the original's length; Partiful does not copy the RSVP deadline. Nobody is invited. Returns the new event. Hosts only.

Input parameters:

- `event_id` (string, required): event_id from list_events.
- `start_at` (string, required): Start of the copy, ISO 8601. Without an offset it is read in the event's time zone.
- `title` (string): Title of the copy. Default: the same.

### `export_guest_list` (~177 tokens)

Export guest list

The guest list as CSV, the same file as the Export CSV button.

Returns the file the host's Export CSV button downloads, for the chosen RSVP statuses. Columns are Partiful's: Name, Status, Checked in, Check-in Time, RSVP date, then one column per Guest Questionnaire question. Status is Partiful's label, for example Approved on a Guest Approval event. The file text comes back in csv, not as a link, with rows (guests in the file) and a suggested filename. The file has no guest ids, emails or phone numbers; for guest ids use list_guests. Hosts only.

Input parameters:

- `event_id` (string, required): event_id from list_events.
- `statuses` (array): RSVP statuses to include: going, maybe, cant_go, invited, waitlist, pending. Default: all.

### `get_event` (~99 tokens)

Get event

Full event: title, description, start and end, location, RSVP deadline, guest limit, Guest Approval and waitlist settings, link.

Returns one event as its page shows it to the host, with guests per RSVP status and the Guest Questionnaire questions. Times are in the event's time zone. Works for any event the account can open; the write tools need an event it hosts.

Input parameters:

- `event_id` (string, required): event_id from list_events.

### `invite_guests` (~206 tokens)

Invite guests

Invite past guests and mutuals through Partiful, or anyone by email.

Sends invites as the host's Invite screen does, so they reach real people: Partiful users from list_past_guests get Partiful's invite, people in emails get an email with the event link and your note. There is no way to invite a phone number: Partiful takes phone contacts only in its app. Email invitees still sign in with a phone number to RSVP. Partiful allows 1,000 invites per event, 500 of them by email. A canceled event is refused. invited_total is the event's Invited count after the call. Hosts only.

Input parameters:

- `emails` (array): People to invite by email, with the name the invite greets.
- `event_id` (string, required): event_id from list_events.
- `message` (string): Personal note sent with the invites.
- `user_ids` (array): user_id values from list_past_guests.

### `list_events` (~136 tokens)

List events

Events you host, with date, status and guest counts.

Returns the events this account hosts or cohosts, as the Hosting tab of the home page lists them: start and end in the event's time zone, active or canceled, and guests per RSVP status. Events you were only invited to are left out. Upcoming come soonest first, past most recent first. Use event_id in the other tools.

Input parameters:

- `cursor` (string): next_cursor from the previous call.
- `limit` (integer): 1 to 50. Default: 20.
- `when` (string): upcoming, past or all. Default: upcoming.

### `list_guests` (~182 tokens)

List guests

Guests of an event with RSVP status, check-in and Guest Questionnaire answers.

Returns the guest list the host sees, oldest RSVP first: name, RSVP status, party size with plus-one names, check-in, RSVP note and questionnaire answers. Hosts only. going includes guests approved on a Guest Approval event. guest_id goes to approve_guests and check_in_guests; total counts the guests that match the filters.

Input parameters:

- `checked_in` (boolean): Only guests who are checked in (true) or not (false).
- `cursor` (string): next_cursor from the previous call.
- `event_id` (string, required): event_id from list_events.
- `limit` (integer): 1 to 200. Default: 100.
- `status` (string): all, going, maybe, cant_go, invited, waitlist or pending. Default: all.

### `list_past_guests` (~189 tokens)

List past guests

People you can invite: your past guests and mutuals.

Returns the people Partiful offers on an event's Invite screen: past guests of your events and mutuals from events you went to, with how many events you shared. Give not_on_event_id to leave out people already on that event; there is no filter by one past event. query matches part of the name. user_id goes to invite_guests. A new account has nobody yet, and shared_events or last_shared_event stay 0 or null when Partiful leaves them out.

Input parameters:

- `cursor` (string): next_cursor from the previous call.
- `limit` (integer): 1 to 200. Default: 50.
- `not_on_event_id` (string): Leave out people already on this event (event_id), as its Invite list does.
- `query` (string): Only names containing this text.

### `send_text_blast` (~236 tokens)

Send Text Blast

Text a message to guests by RSVP status. Partiful allows up to 10 Text Blasts per event.

Sends a Text Blast as the host's Send Text Blast does: by text and email to every guest with the chosen RSVP statuses, push for guests with the app, and shown in the event's feed unless show_on_event_page is false. Real people get it at once and it cannot be taken back. Up to 480 characters. recipients and by_status count the guests with those statuses at the moment of sending; a choice that reaches nobody is refused before you confirm. Partiful allows 10 blasts per event and refuses a blast to Invited when that group holds more than 100 guests. The answer does not say how many blasts are left. Hosts only.

Input parameters:

- `event_id` (string, required): event_id from list_events.
- `message` (string, required): Message text.
- `show_on_event_page` (boolean): Also show the blast in the event's activity feed. Default: true.
- `statuses` (array, required): Who receives it: going, maybe, cant_go, invited, waitlist, pending.

### `update_event` (~346 tokens)

Update event

Change the details or settings of an event you host.

Changes only the fields you give, as the event's Edit page and settings panel do: title, times, time zone, location, description, RSVP deadline, guest limit, Guest Approval and the Guest Questionnaire. Fields left out keep their value; a call with no field is refused. Turning Guest Approval on removes the guest limit and the waitlist, and the first guest limit turns the waitlist on. New questions replace the questionnaire for guests who RSVP from then on. Returns the event after the change, with updated listing the fields you gave. Hosts only.

Input parameters:

- `description` (string): Event details shown on the page.
- `end_at` (string): End, ISO 8601. Optional; must be after start_at.
- `event_id` (string, required): event_id from list_events.
- `guest_approval` (boolean): Guests ask to join and you approve them (Guest Approval). Clears max_guests.
- `location` (string): Address, place name or link.
- `max_guests` (integer|null): Guest limit; RSVPs over it go to the waitlist. null removes the limit.
- `questions` (array): Guest Questionnaire, short-answer questions asked at RSVP. An empty list turns it off.
- `rsvp_deadline` (string): Last moment guests can RSVP, ISO 8601.
- `start_at` (string): Start, ISO 8601. Without an offset it is read in the event's time zone.
- `timezone` (string): IANA zone the event is shown in, e.g. America/New_York.
- `title` (string): Event title.

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/dev-cotlet-partiful/partiful-api-mcp#diagnostics

## Score history

- 2026-10-24: 64

## Common questions

### What is the Partiful by Cotlet MCP server?

Partiful by Cotlet is an MCP server listed in the public MCP registry as dev.cotlet/partiful. Invites, guest lists and text blasts for your events. This page covers its PyPI package (partiful-api-mcp).

### Is the Partiful by Cotlet MCP server safe to use?

Partiful by Cotlet scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Partiful by Cotlet MCP server expose?

Partiful by Cotlet exposes 14 tools: approve_guests, cancel_event, check_in_guests, create_event, delete_event, and 9 more. Their descriptions and schemas cost roughly 2,549 tokens of context every time the server is loaded.

### Is the Partiful by Cotlet MCP server still maintained?

Partiful by Cotlet is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Partiful by Cotlet MCP server under?

Partiful by Cotlet declares the PolyForm-Noncommercial-1.0.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/partiful-api-mcp/
- Socket report: https://socket.dev/pypi/package/partiful-api-mcp
- Repository: https://github.com/cotletdev/partiful-api-mcp-server
- Website: https://cotlet.dev/integrations/partiful-api-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/dev-cotlet-partiful/partiful-api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/dev-cotlet-partiful/partiful-api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/dev-cotlet-partiful/partiful-api-mcp
