# list_pacts

Pacts by status, most recently updated first. Defaults to `active` (drafts and sent), where the REST call defaults to `all`.

MCP tool at `https://api.signwithsigil.com/mcp`. Read-only. Idempotent.

## Description (what the model sees)

> Pacts newest first, with recipients and their status. status: active (draft + sent), all, or one of draft, sent, sealed, declined, voided, lapsed. Default active.

## Arguments

- `status` (string, default `active`): `active` (drafts and sent), `all`, or one status. One of: `active`, `all`, `draft`, `sent`, `sealed`, `declined`, `voided`, `lapsed`.
- `limit` (integer, default `50`): Maximum rows, 1 to 200 (values outside are clamped).

## Returns

The pacts and how many match. There is no offset: raise `limit`, or narrow `status`. Returned as one `text` content item holding JSON.

- `data` (array of objects): Pacts without `fields` and `events`.
  - `uid` (string): The pact's id: 8 letters and digits.
  - `title` (string): Shown to signers and in emails (150 characters at most).
  - `status` (string): See [Pact lifecycle](/concepts/pacts). One of: `draft`, `sent`, `sealed`, `declined`, `voided`, `lapsed`.
  - `message` (string | null): Your note in the invitation email.
  - `page_count` (integer): Pages in the document.
  - `created_by` (string): Where it was created: the dashboard, the API or the MCP server. One of: `web`, `api`, `mcp`.
  - `current_signer` (integer | null): The `order` of the signer whose turn it is while the pact is `sent`; otherwise `null`.
  - `date_created` (string (date-time)): When the draft was created.
  - `date_sent` (string (date-time) | null): When it was sent.
  - `date_lapses` (string (date-time) | null): When it lapses if it is not sealed first.
  - `date_sealed` (string (date-time) | null): When the last signer signed.
  - `date_updated` (string (date-time)): When anything about it last changed.
  - `documents_charged` (integer | null): Documents it used when it was sent. `null` on a draft.
  - `documents_cost` (integer | null): What sending this draft will use: one document per 3 signers, rounded up. Only set on a draft.
  - `sent_sha256` (string): SHA-256 (lowercase hex) of the PDF as sent. The sigil records it too.
  - `signed_sha256` (string | null): SHA-256 of the signed PDF, once sealed.
  - `recipients` (array of objects): Signers in order, then CCs.
    - `order` (integer): Position, starting at 1. Signers come first, numbered in the order you gave them; CCs follow.
    - `role` (string): Signers sign in order; a CC gets the finished copy. One of: `signer`, `cc`.
    - `name` (string): The recipient's name.
    - `email` (string): The recipient's address, lowercased.
    - `status` (string): Where this recipient is. One of: `pending`, `viewed`, `signed`, `declined`.
    - `date_viewed` (string (date-time) | null): When they first opened their signing link.
    - `date_signed` (string (date-time) | null): When they signed.
    - `typed_name` (string | null): The full name they typed when signing.
    - `decline_reason` (string | null): Their reason, if they declined.
    - `signing_url` (string): The private link for the signer whose turn it is. Anyone with it can sign as that person, so only give it to them. Only with `include_links=1`, and only on the waiting signer.
  - `links` (object): Where to get the files.
    - `document` (string (URL)): The document as sent ([download](/api-reference/pacts/download-document)).
    - `signed` (string (URL) | null): The signed PDF, once sealed ([download](/api-reference/pacts/download-signed)).
    - `sigil` (string (URL) | null): The sigil (certificate of completion), once sealed ([download](/api-reference/pacts/download-sigil)).
    - `dashboard` (string (URL)): The pact's page on the dashboard (needs a login).
- `total` (integer): Pacts matching `status`.

## Errors

Returned as a tool result with `isError: true` whose text is `An error occurred invoking 'list_pacts': ` followed by one of:

- `Unknown status '{status}'.`

## Example call

```json
{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "list_pacts",
    "arguments": {
      "status": "sent",
      "limit": 20
    }
  }
}
```

## Example result

```json
{
  "data": [
    {
      "uid": "K4TQ7MZE",
      "title": "Consulting agreement with Acme",
      "status": "sent",
      "message": "Please sign by Friday.",
      "page_count": 3,
      "created_by": "api",
      "current_signer": 2,
      "date_created": "2026-10-20T14:05:00Z",
      "date_sent": "2026-10-20T14:05:01Z",
      "date_lapses": "2026-11-03T14:05:01Z",
      "date_sealed": null,
      "date_updated": "2026-10-20T15:31:40Z",
      "documents_charged": 1,
      "documents_cost": null,
      "sent_sha256": "9f2c4e81b07d5a3c6e1f0b9a8d7c6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d",
      "signed_sha256": null,
      "recipients": [
        {
          "order": 1,
          "role": "signer",
          "name": "Avery Lane",
          "email": "avery@example.com",
          "status": "signed",
          "date_viewed": "2026-10-20T15:28:02Z",
          "date_signed": "2026-10-20T15:31:40Z",
          "typed_name": "Avery Lane",
          "decline_reason": null
        },
        {
          "order": 2,
          "role": "signer",
          "name": "Sam Ortiz",
          "email": "sam@example.com",
          "status": "pending",
          "date_viewed": null,
          "date_signed": null,
          "typed_name": null,
          "decline_reason": null
        },
        {
          "order": 3,
          "role": "cc",
          "name": "Records",
          "email": "records@example.com",
          "status": "pending",
          "date_viewed": null,
          "date_signed": null,
          "typed_name": null,
          "decline_reason": null
        }
      ],
      "links": {
        "document": "https://api.signwithsigil.com/v1/pacts/K4TQ7MZE/document.pdf",
        "signed": null,
        "sigil": null,
        "dashboard": "https://www.signwithsigil.com/pacts/K4TQ7MZE"
      }
    }
  ],
  "total": 1
}
```
