{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-06-18/server-card.json",
  "name": "unlisted",
  "title": "Unlisted",
  "version": "1.0.0",
  "description": "unlisted.click files, clocks and re-checks your household's data-broker removals. One ledger, exportable, and readable by your agent over MCP.",
  "websiteUrl": "https://www.unlisted.click",
  "transport": {
    "type": "streamable-http",
    "url": "https://www.unlisted.click/mcp"
  },
  "remotes": [
    {
      "transport_type": "streamable-http",
      "url": "https://www.unlisted.click/mcp"
    }
  ],
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "authentication": {
    "required_for": [
      "whoami",
      "board",
      "add_person",
      "queue_removals",
      "record_filing",
      "set_status",
      "recheck",
      "next_actions",
      "export_ledger"
    ],
    "scheme": "bearer",
    "description": "Public tools work with no token. Account tools take Authorization: Bearer <token>, from the account page at https://www.unlisted.click/account."
  },
  "tools": [
    {
      "name": "list_brokers",
      "title": "List brokers",
      "description": "Every data broker this service files against, with its official opt-out URL, the channel it accepts, and what to expect. Public, no auth.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "string",
            "enum": [
              "people-search",
              "directory",
              "background",
              "b2b"
            ]
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "deadlines",
      "title": "Statutory deadlines",
      "description": "The deadline this service models for a US state or country, counted from the controller's receipt of the request. Public, no auth.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "DC",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY"
            ]
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2, default US"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "pricing",
      "title": "Pricing",
      "description": "What Unlisted costs and what one plan covers. Public, no auth.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "whoami",
      "title": "Who am I",
      "description": "The account behind the API token in the Authorization header, and its plan.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "board",
      "title": "Read the ledger",
      "description": "The full board: people, every broker case with its status, filing date, statutory deadline and last re-check result, plus summary counts.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "add_person",
      "title": "Add a person",
      "description": "Add a household member whose listings you are clearing. Name plus the state they live in is the minimum; the state sets the legal clock.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "DC",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY"
            ]
          },
          "city": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "description": "Mailbox that can receive broker verification links"
          }
        },
        "required": [
          "name",
          "state"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "queue_removals",
      "title": "Queue removals",
      "description": "Queue one broker case per broker slug for a person. Pass [] or omit brokers to queue the people-search group. Each case then needs a filing record.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "number"
          },
          "brokers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "group": {
            "type": "string",
            "enum": [
              "people-search",
              "directory",
              "background",
              "b2b"
            ]
          }
        },
        "required": [
          "person_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "record_filing",
      "title": "Record a filing",
      "description": "Record that a request was filed for a case. This starts the statutory clock and sets the re-check date. filed_at is YYYY-MM-DD.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "case_id": {
            "type": "number"
          },
          "filed_at": {
            "type": "string",
            "description": "YYYY-MM-DD, defaults to today"
          },
          "request_ref": {
            "type": "string",
            "description": "Broker's confirmation or ticket number"
          }
        },
        "required": [
          "case_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "set_status",
      "title": "Set case status",
      "description": "Move a case to queued, filed, confirmed, blocked or relisted, with a note.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "case_id": {
            "type": "number"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "filed",
              "confirmed",
              "blocked",
              "relisted"
            ]
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "case_id",
          "status"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "recheck",
      "title": "Re-check a listing",
      "description": "Fetch the case's listing URL now and classify it: present, absent, blocked, unknown, or channel-reachable when no listing URL is on file. Only 'absent' proves a listing is gone; 'blocked' is not evidence either way.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "case_id": {
            "type": "number"
          }
        },
        "required": [
          "case_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "next_actions",
      "title": "Next actions",
      "description": "The ordered to-do list: overdue filings first, then un-filed cases, then re-checks that are due.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "export_ledger",
      "title": "Export the ledger",
      "description": "The evidence file as text: one row per broker case with status, filing date, deadline and last check. Format: markdown or csv.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "markdown",
              "csv"
            ]
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      }
    }
  ]
}