# Ziplined > The Ziplined API and MCP server: people, companies, posts and engagement from your LinkedIn orbit. - [Introduction](https://docs.ziplined.io/introduction.md): Ziplined data in an assistant, or in your own code. - [Concepts](https://docs.ziplined.io/concepts.md): The eight words that every response and every tool uses. - [Connect](https://docs.ziplined.io/mcp/connect.md): Point your assistant at the Ziplined MCP server. - [First questions](https://docs.ziplined.io/mcp/first-questions.md): Ten questions you can paste into a connected assistant. - [Tools](https://docs.ziplined.io/mcp/tools.md): The ten MCP tools, what each one takes and what it gives back. - [Quickstart](https://docs.ziplined.io/api/quickstart.md): From no key to your first five people. - [Basics](https://docs.ziplined.io/api/basics.md): Auth, scopes, paging, idempotency and rate limits. - [Errors](https://docs.ziplined.io/api/errors.md): Every error code, and what to do about it. - [Slack](https://docs.ziplined.io/integrations/slack.md): Post new qualified leads from one audience into a Slack channel. - [Clay](https://docs.ziplined.io/integrations/clay.md): Pull warm, well-fitting people into a Clay table. - [Log outreach](https://docs.ziplined.io/integrations/log-outreach.md): Write back to Ziplined after your sequencer or CRM sends a message. - [Overview](https://docs.ziplined.io/webhooks/overview.md): How Ziplined pushes events to your own endpoint. - [Set up a webhook](https://docs.ziplined.io/webhooks/setup.md): Connect a destination, add a rule, verify the signature. - [Events](https://docs.ziplined.io/webhooks/events.md): The six events, the filter keys and the sending interval. - [Reliability](https://docs.ziplined.io/webhooks/reliability.md): Retries, the delivery ledger and rotating the secret. - [Changelog](https://docs.ziplined.io/changelog.md): What changed in the Ziplined API and MCP server. - [The people in this workspace](https://docs.ziplined.io/api-reference/people/the-people-in-this-workspace.md): The workspace comes from the credential, never from a parameter. Paging goes with `limit` and `next_cursor`; `total` says how many match the filters. Contact details are only present when the credential carries the `contacts` scope: if `email` is absent, never invent one. - [A single person](https://docs.ziplined.io/api-reference/people/a-single-person.md): Follows a merge: asking for an id that was merged into another person answers with the surviving record, carrying the surviving id. - [Update many people at once](https://docs.ziplined.io/api-reference/people/update-many-people-at-once.md): The same fields as `PATCH /v1/people/{person_id}`, on up to 200 people. Someone we do not know comes back in `unknown` instead of toppling the whole list. - [Update one person](https://docs.ziplined.io/api-reference/people/update-one-person.md): Sets stage, notes, tags and audience membership. A field that is absent stays as it was; `notes: null` clears it and `tags` replaces the whole list. No `Idempotency-Key`: setting fields is idempotent by itself. - [Log that we reached out to someone](https://docs.ziplined.io/api-reference/people/log-that-we-reached-out-to-someone.md): Records one outreach act. `tags` are ADDED to the tags this person already has. The `outreach_count` and `last_outreach_at` on the person that comes back are rebuilt nightly, so they lag this act by one night; the act itself is readable straight away. Requires an `Idempotency-Key`. - [The companies where the people of this workspace work](https://docs.ziplined.io/api-reference/companies/the-companies-where-the-people-of-this-workspace-work.md) - [A single company](https://docs.ziplined.io/api-reference/companies/a-single-company.md) - [The posts of this workspace](https://docs.ziplined.io/api-reference/posts/the-posts-of-this-workspace.md) - [A single post](https://docs.ziplined.io/api-reference/posts/a-single-post.md) - [What these people did with which posts](https://docs.ziplined.io/api-reference/engagements/what-these-people-did-with-which-posts.md): `person_id` is required: the read binds on the people, not on the workspace. - [What worked this period](https://docs.ziplined.io/api-reference/insights/what-worked-this-period.md) - [The daily numbers of your own account](https://docs.ziplined.io/api-reference/insights/the-daily-numbers-of-your-own-account.md) - [The audiences of this workspace](https://docs.ziplined.io/api-reference/audiences/the-audiences-of-this-workspace.md) - [A single audience](https://docs.ziplined.io/api-reference/audiences/a-single-audience.md) - [The people in an audience](https://docs.ziplined.io/api-reference/audiences/the-people-in-an-audience.md): The same rows as `GET /v1/people`, narrowed to this audience. Membership is one row in the audience, however it got there: scored in by the criteria, or put in by hand. Someone who meets the criteria and was never scored in is not a member, and `explain_audience_membership` in MCP tells the two apar… - [Add people to an audience](https://docs.ziplined.io/api-reference/audiences/add-people-to-an-audience.md): Someone who is already in it is not an error, and someone we do not know comes back in `unknown` instead of toppling the whole list. Requires an `Idempotency-Key`. - [Remove people from an audience](https://docs.ziplined.io/api-reference/audiences/remove-people-from-an-audience.md) - [What this workspace tracks](https://docs.ziplined.io/api-reference/sources/what-this-workspace-tracks.md) - [Track a new source](https://docs.ziplined.io/api-reference/sources/track-a-new-source.md): A source that is already there is woken instead of duplicated: the same person id, company or keyword is the same source. Requires an `Idempotency-Key`. - [A single source](https://docs.ziplined.io/api-reference/sources/a-single-source.md) - [Pause or resume a source](https://docs.ziplined.io/api-reference/sources/pause-or-resume-a-source.md) - [Stop tracking a source](https://docs.ziplined.io/api-reference/sources/stop-tracking-a-source.md): Sets the status to `removed`. Never an actual deletion: everything ever measured through this source stays. - [The destinations of this workspace](https://docs.ziplined.io/api-reference/integrations/the-destinations-of-this-workspace.md) - [Connect a destination](https://docs.ziplined.io/api-reference/integrations/connect-a-destination.md): A `webhook` destination is verified before it is stored: the server sends a signed `ping` event and requires a 2xx within ten seconds, otherwise 422 `endpoint_unreachable` and no destination. The signing secret is generated here and returned exactly once, in this answer. One destination per provider… - [A single destination](https://docs.ziplined.io/api-reference/integrations/a-single-destination.md) - [Rotate a webhook signing secret](https://docs.ziplined.io/api-reference/integrations/rotate-a-webhook-signing-secret.md): Returns a new secret and invalidates the old one immediately. There is no overlap window, so update the receiver before the next event fires. Only for `webhook` destinations. Requires scope `write` and an `Idempotency-Key`. - [Send a test event to a destination](https://docs.ziplined.io/api-reference/integrations/send-a-test-event-to-a-destination.md): Sends one `ping` and returns what the receiver said: a signed webhook envelope for a webhook, a short message for Slack, and one real email with one made-up item for an email destination -- one message per address there. A receiver that refuses is `ok: false` inside a 200: the test ran, and its answ… - [The routing rules of one destination](https://docs.ziplined.io/api-reference/integrations/the-routing-rules-of-one-destination.md) - [Put a routing rule on a destination](https://docs.ziplined.io/api-reference/integrations/put-a-routing-rule-on-a-destination.md): Sending the same `name` twice updates that rule instead of adding a second one, and leaves its cursor alone. `new_qualified_lead` requires an `audience_id`: the fit tier it asks about hangs off an audience. Requires scope `write` and an `Idempotency-Key`. - [Pause a rule or turn it back on](https://docs.ziplined.io/api-reference/integrations/pause-a-rule-or-turn-it-back-on.md): Only `is_active`. The cursor and the watermark stay where they are, so a rule that was off for a week does not deliver that week when it comes back on. ## OpenAPI Specs - [openapi](/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.