> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nylon.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools

> The fourteen tools, their arguments, and the endpoint behind each one.

Every tool is one endpoint. The endpoint column is where to read the full field reference — the tool takes the same arguments under the same names.

## Accounts

Start here. Every publishing tool addresses accounts by the ids `list_profiles` returns.

| Tool                  | Arguments                         | Endpoint                                                                    |
| --------------------- | --------------------------------- | --------------------------------------------------------------------------- |
| `list_profiles`       | `network`, `q`, `limit`, `offset` | [`GET /v1/profiles`](/api-reference/list-profiles)                          |
| `get_profile`         | `profile_id`                      | [`GET /v1/profiles/{profileId}`](/api-reference/get-profile)                |
| `list_profile_boards` | `profile_id`                      | [`GET /v1/profiles/{profileId}/boards`](/api-reference/list-profile-boards) |
| `disconnect_profile`  | `profile_id`                      | [`DELETE /v1/profiles/{profileId}`](/api-reference/disconnect-profile)      |

`list_profile_boards` exists because a Pinterest post needs `networks.pinterest.board_id` and there is no other way for an agent to learn a board id.

## Publishing

| Tool            | Arguments                                                                                                                                           | Endpoint                                                     |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `create_post`   | `profile_ids`, `text`, `media`, `link`, `post_type`, `title`, `thread`, `auto_thread`, `scheduled_at`, `publish_now`, `idempotency_key`, `networks` | [`POST /v1/posts`](/api-reference/create-post)               |
| `validate_post` | the same arguments as `create_post`                                                                                                                 | [`POST /v1/validate`](/api-reference/validate-post)          |
| `list_posts`    | `status`, `network`, `profile_id`, `from`, `to`, `limit`, `offset`                                                                                  | [`GET /v1/posts`](/api-reference/list-posts)                 |
| `get_post`      | `post_id`                                                                                                                                           | [`GET /v1/posts/{postId}`](/api-reference/get-post)          |
| `update_post`   | `post_id` plus any `create_post` argument                                                                                                           | [`PATCH /v1/posts/{postId}`](/api-reference/update-post)     |
| `cancel_post`   | `post_id`                                                                                                                                           | [`DELETE /v1/posts/{postId}`](/api-reference/cancel-post)    |
| `retry_post`    | `post_id`, `target_ids`                                                                                                                             | [`POST /v1/posts/{postId}/retry`](/api-reference/retry-post) |

<Note>
  `create_post` publishes synchronously: a carousel to Instagram plus a video to LinkedIn is minutes of upload, and the tool call takes that long. The result carries a target per profile with its network post id, permalink and error — read the targets rather than assuming the post as a whole succeeded. [Publishing](/publishing) explains partial success in full.
</Note>

## Networks and connections

| Tool                | Arguments                 | Endpoint                                                   |
| ------------------- | ------------------------- | ---------------------------------------------------------- |
| `list_networks`     | `network`                 | [`GET /v1/networks`](/api-reference/list-networks)         |
| `list_connections`  | —                         | [`GET /v1/connections`](/api-reference/list-connections)   |
| `create_connection` | `network`, `redirect_url` | [`POST /v1/connections`](/api-reference/create-connection) |

`create_connection` returns a URL, not a connection. Nylon runs the OAuth apps, so an account cannot be connected server-to-server — an agent's job is to hand that URL to the person it is working for. [Connections](/connections) covers both flows.

## Two tools worth reaching for

<CardGroup cols={2}>
  <Card title="list_networks before composing" icon="table">
    Character limits, media counts and sizes, post types and the options each network reads, as data. An agent that reads this writes a caption that fits instead of discovering the limit from a rejection.
  </Card>

  <Card title="validate_post before publishing" icon="circle-check">
    The same call as `create_post` with nothing published. It answers the two questions worth knowing in advance: will this be rejected anywhere, and how will a long caption be split into a thread.
  </Card>
</CardGroup>

## Not in the tool list

[Webhook configuration](/webhooks) has endpoints but no tools. Where your servers listen and what signs the traffic is infrastructure, and an agent reconfiguring it is not a workflow anyone wants — so it stays in your code and your deploy pipeline.

## Behaviour hints

`tools/list` annotates each tool so a client can decide what to confirm with the user and what to just run. The hints are advisory — a client is free to ignore them — but they are accurate:

| Hint              | Tools                                                                                                                                 |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `readOnlyHint`    | `list_profiles`, `get_profile`, `list_profile_boards`, `list_networks`, `validate_post`, `list_posts`, `get_post`, `list_connections` |
| `destructiveHint` | `disconnect_profile`, `cancel_post`                                                                                                   |
| `openWorldHint`   | `create_post`, `retry_post` — they reach a social network, so the outcome is not ours to determine                                    |

<Warning>
  `disconnect_profile` destroys stored credentials, and reconnecting needs the account owner to authorise Nylon again. If your client does not prompt before destructive tools, do not give an agent a key that can reach accounts you cannot afford to reconnect.
</Warning>

## Arguments in detail

The tool schemas come from the endpoints' own request schemas, so `tools/list` is always current — including every per-network override `create_post` accepts. To read them:

```bash theme={null}
curl -X POST https://mcp.nylon.dev \
  -H "Authorization: Bearer nylon_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```
