Get one site
get_site
Reads one site in full by its workspace and subdomain.
It finds the site whether it is archived or not, and Archived says which. The answer includes the current sharing settings, which update_sharing needs you to send back for anything you are not changing.
It is not a pure read, which is why it is not marked read-only: every call counts as a view and refreshes derived counters on the site. The tool tells the client never to call it in a loop or use it for polling, and to use list_sites when it only needs to find a site.
Request
Call it with a POST to https://api.modulify.ai/v1/get_site, sending the inputs below as a JSON object. The token needs the sites:read scope.
It makes changes, so send an Idempotency-Key header whenever you might retry it. A retry with the same key gets the first answer back instead of running again.
curl -X POST https://api.modulify.ai/v1/get_site \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"workspaceId":"WORKSPACE_ID","slug":"SLUG"}'Over MCP, the same method is the get_site tool.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
workspaceId |
string | Yes | The workspace the site belongs to. |
slug |
string | Yes | The subdomain of the site, from list_sites. This is how a site is identified, and it is the same value change_subdomain sets. |
Response
Every call answers with the JSON envelope of success, message, data, code and version. data holds the result described above, and on a method that returns a total, count carries it. The response headers carry the call's X-Request-Id and what is left of your per-minute budget in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Errors explains every status code a call can answer with.