List members
List members, filtered by status, label, signup post, email activity or last visit.
MCP tool ghost_read → list_members
read
Returns id, email, name, status, labels, created_at, last_seen_at, email_count, email_opened_count and email_open_rate for each member, newest first, plus the pagination meta. The email_open_rate is null while Ghost has sent too few emails to work one out. Member emails are personal data; they stay in the response and are not stored by Cotlet.
Parameters
| Name | Type | Description |
|---|---|---|
| status string | string | free, paid, comped or gift. Omit for all. |
| label string | string | Label name to filter by. |
| signed_up_on string | string | Slug of the post or page the member signed up on. |
| created_after string | string | ISO 8601 date. Only members created after it. |
| min_emails_sent integer | integer | Only members who received at least this many emails. |
| max_open_rate integer | integer | Only members whose open rate is at most this percentage, 0 to 100. Members without a rate are left out. |
| page integer | integer | Page number, starting at 1. The response meta says how many pages there are. |
| limit integer | integer | Records per page, 100 at most. Default 15. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ghost_read",
"arguments": {
"operation": "list_members",
"arguments": {}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"members": [
{
"id": "6710b2d4a1b2c300a1b2c3e1",
"email": "reader1@example.com",
"name": "Reader One",
"status": "free",
"labels": [],
"created_at": "2026-10-14T10:02:11.000Z",
"last_seen_at": "2026-10-16T18:40:00.000Z",
"email_count": 2,
"email_opened_count": 1,
"email_open_rate": 50
}
],
"meta": {
"page": 1,
"limit": 15,
"pages": 3,
"total": 38
}
},
"isError": false
}