# AutoGrowth > Run a fleet of real phones that post to and grow social accounts on their own, managed from one dashboard. > ## Agent Instructions > AutoGrowth runs social accounts on real phones. Everything a page describes happens on a physical device in the customer's own fleet, never through a social platform's API. > The Companion is a macOS desktop app that runs on the customer's own Mac and manages the phones over USB — iPhones through WebDriverAgent, GrapheneOS phones through ADB and scrcpy. Nothing runs while the Companion is closed. > The Companion builds, signs and installs WebDriverAgent on each iPhone itself. Never tell a customer to sign WebDriverAgent by hand in Xcode; Xcode is a prerequisite the Companion drives, not a step the customer performs. > Autogrowth MAX is a one-time, invite-only lifetime license bought from the organization's credit balance, not a subscription tier. It is required to run any automation, workflow or Incubator program. Without a price set for that organization, the purchase is refused. > An automation is one of AutoGrowth's built-in definitions; a script is a graph the customer builds in the Script Builder. The Script Builder is locked platform-wide, so never present building a script as something a customer can do today. > An API key is a bare 64-character hex string with no prefix. It is shown once, at creation, is sent as `Authorization: Bearer `, and can never be read back. > An API key sees only the key owner's own accounts, content, collections, prompts, scripts and executions. Devices and tags are organization-scoped, and a non-owner sees only the devices assigned to them or carrying one of their tags. The automation catalog is global. > There is no pagination. List endpoints return the whole set; the only limiting parameter anywhere is `limit` on `GET /v1/executions`, which defaults to 50 and has no offset to page with. > Remote control and the live screen are dashboard-only, over WebSocket and MJPEG. Neither is part of the public API. > The MCP server is hosted at https://mcp.autogrowth.farm and authenticates with OAuth. It is not an npm package and there is nothing to install locally. Its tools inherit exactly the scope of the API key behind them. > Android support is partial and GrapheneOS-only: those phones appear in the fleet and can be watched and remote-controlled, but they cannot run scripts or automations. > Never document Hi Katie or any persona feature. When a page and the code disagree, the code wins — check a claim against the source before repeating it. ## Docs - [Introduction](https://docs.autogrowth.farm/index.md): What AutoGrowth is: a fleet of real phones, run from one dashboard, growing your social accounts while you sleep. - [How AutoGrowth works](https://docs.autogrowth.farm/guides/how-autogrowth-works.md): Your phones, the Companion on your Mac and the dashboard — what runs where, and what stops when the Companion is closed. - [Install the Companion](https://docs.autogrowth.farm/guides/install-the-companion.md): Download the Companion for macOS, install the tools it needs, and sign in with a license key that locks to that Mac. - [Connect your phones](https://docs.autogrowth.farm/guides/connect-your-phones.md): Plug an iPhone into the Mac, trust the computer, turn on Developer Mode, and watch it appear in your fleet. - [WebDriverAgent](https://docs.autogrowth.farm/guides/wda-signing.md): What WebDriverAgent is, what Build and Start do, and the two ways it gets signed before it goes onto an iPhone. - [Android phones](https://docs.autogrowth.farm/guides/android-phones.md): GrapheneOS phones can be watched and controlled from the dashboard, but they cannot run automations yet. What works today, and how to connect one. - [Your fleet](https://docs.autogrowth.farm/guides/your-fleet.md): The Fleet page: what each status word means, battery and health, tags, who can see which phone, and why a phone can be online and still locked. - [Remote control](https://docs.autogrowth.farm/guides/remote-control.md): Open a live screen for a phone in your fleet, drive it from the browser, and know what the error messages mean. - [Containers](https://docs.autogrowth.farm/guides/containers.md): Run several accounts on one phone by giving each account its own isolated app install. - [Automations](https://docs.autogrowth.farm/guides/automations.md): The built-in routines your phones run, what each one needs from you, and the licence they all sit behind. - [Scheduling](https://docs.autogrowth.farm/guides/scheduling.md): The Schedule screen: when a run happens, on which phone, and what each execution status means. - [Workflows](https://docs.autogrowth.farm/guides/workflows.md): Build a recurring daily routine for one phone out of steps, and let it run without you. - [Content library](https://docs.autogrowth.farm/guides/content-library.md): Upload the images and videos your phones post, and understand the storage that comes with your slots. - [Collections](https://docs.autogrowth.farm/guides/collections.md): Group library media into the draining queues that workflows and posting automations pull from. - [Prompts](https://docs.autogrowth.farm/guides/prompts.md): Reusable AI prompt templates with {{variable}} placeholders, and an honest account of where they are used today. - [Accounts](https://docs.autogrowth.farm/guides/accounts.md): Track a social handle, tie it to a phone and a container, and read the stats AutoGrowth collects for it. - [Team and roles](https://docs.autogrowth.farm/guides/team.md): Invite people to your organization and control what each of them can see and change. - [Credits and billing](https://docs.autogrowth.farm/guides/billing.md): Credits, phone slots, the storage they carry, and the one-time licences you buy on top. - [Troubleshooting](https://docs.autogrowth.farm/guides/troubleshooting.md): Sorted by what you are looking at: a phone that will not appear, a build that fails, a run that never happened, an upload that will not upload. - [What AutoGrowth does not do](https://docs.autogrowth.farm/guides/what-autogrowth-does-not-do.md): The limits, stated plainly, so you know what to plan around before you buy phones. - [Getting help](https://docs.autogrowth.farm/guides/getting-help.md): Where to write, what to include, and where the logs and error messages live in the product. - [MCP overview](https://docs.autogrowth.farm/mcp/overview.md): What the AutoGrowth MCP server lets an AI assistant do with your fleet, and what it deliberately cannot do. - [Connect to the MCP server](https://docs.autogrowth.farm/mcp/connect.md): Point Claude, Cursor or any MCP client at https://mcp.autogrowth.farm and complete the OAuth sign-in. - [MCP tools](https://docs.autogrowth.farm/mcp/tools.md): The tools the server exposes for listing devices, accounts, automations and media, and for scheduling runs. - [MCP limitations](https://docs.autogrowth.farm/mcp/limitations.md): What the MCP server will not do, and the scoping rules that decide what an assistant can reach. - [API overview](https://docs.autogrowth.farm/api/overview.md): What the public API reaches, what it deliberately does not, and how a key's view differs from the dashboard's. - [Authentication](https://docs.autogrowth.farm/api/authentication.md): Create an API key, send it as a bearer token, and understand what a key is allowed to see. - [Conventions](https://docs.autogrowth.farm/api/conventions.md): Base URL, identifiers, timestamps, request and response shapes, and the absence of pagination. - [Errors](https://docs.autogrowth.farm/api/errors.md): The error response shape, the status codes the API returns, and which ones are worth retrying. - [List devices](https://docs.autogrowth.farm/api-reference/devices/list-devices.md): Returns every device the API key can reach, newest first. Owners see all organization devices; other roles see only devices assigned to them or carrying one of their assigned tags. Ephemeral fields (`online`, `status`, `agentStatus`, `battery`, `stream`) are read from Redis and are null/`disconnecte… - [Assign tags to a device](https://docs.autogrowth.farm/api-reference/devices/assign-tags-to-a-device.md): Replaces the tag set on a device in one transaction. The response echoes only the device ID and its new tags, not the full device. - [Assign users to a device](https://docs.autogrowth.farm/api-reference/devices/assign-users-to-a-device.md): Replaces the user assignments on a device in one transaction. The response echoes only the device ID and its new assignees, not the full device. - [List scripts](https://docs.autogrowth.farm/api-reference/scripts/list-scripts.md): Returns the API key owner’s scripts, most recently updated first. Read-only: scripts are authored in the dashboard’s visual builder. Scripts with an empty graph (no nodes) are omitted — those are unfinished recording drafts. - [Get script](https://docs.autogrowth.farm/api-reference/scripts/get-script.md): Returns a single script by ID. Unlike the list endpoint, this also returns scripts with an empty graph. - [List executions](https://docs.autogrowth.farm/api-reference/executions/list-executions.md): Returns the API key owner’s executions, newest scheduled first, with relations expanded. A filter naming a malformed UUID returns an empty list rather than an error. - [Create execution](https://docs.autogrowth.farm/api-reference/executions/create-execution.md): Schedules a script or automation to run on a device. Overlapping runs are allowed — a device runs one execution at a time and queues the rest — so any overlap comes back as soft `conflicts` info rather than a rejection. Automations require an Autogrowth MAX subscription, and the create-account autom… - [Get execution](https://docs.autogrowth.farm/api-reference/executions/get-execution.md): Returns a single execution by ID, with relations expanded. - [Delete execution](https://docs.autogrowth.farm/api-reference/executions/delete-execution.md): Deletes a still-pending execution and releases any collection media it had reserved. A run the device has already claimed cannot be deleted — cancel it instead. - [Get execution log availability](https://docs.autogrowth.farm/api-reference/executions/get-execution-log-availability.md): Reports which log artifacts an execution uploaded. This does not return log contents — the artifacts themselves are not exposed on the public API. - [Bulk create executions](https://docs.autogrowth.farm/api-reference/executions/bulk-create-executions.md): Schedules up to 100 script or automation runs in one call. Each item specifies its own device, time, and input values, and is validated independently: accepted items are inserted together in a single statement and returned in `created`, rejected ones are reported in `failed`. The call still responds… - [Cancel execution](https://docs.autogrowth.farm/api-reference/executions/cancel-execution.md): Requests cancellation of a pending or processing execution. A pending run flips to `cancelled` immediately (the device never picked it up) and its reserved media is released; a processing run only gets `cancelRequestedAt` set and stays `processing` until the Companion polls it and reports the final… - [List automations](https://docs.autogrowth.farm/api-reference/automations/list-automations.md): Returns the built-in automation definitions. These are static platform definitions, identical for every organization; admin-only automations are omitted. Running one requires an Autogrowth MAX subscription, but listing does not. - [Get automation](https://docs.autogrowth.farm/api-reference/automations/get-automation.md): Returns a single automation definition by ID. Admin-only automations return 404 for non-admin keys. - [List tags](https://docs.autogrowth.farm/api-reference/tags/list-tags.md): Returns every tag in the organization, sorted by name. Tags are organization-wide rather than per-user, and are the same objects returned inside a device’s `tags` array. - [List accounts](https://docs.autogrowth.farm/api-reference/accounts/list-accounts.md): Returns the API key owner’s social accounts, newest first, with device and container references expanded. - [Get account](https://docs.autogrowth.farm/api-reference/accounts/get-account.md): Returns a single account by ID, with device and container references expanded. - [Get account stats history](https://docs.autogrowth.farm/api-reference/accounts/get-account-stats-history.md): Returns scraped stat snapshots for an account, oldest first. Snapshots are swept after 90 days, so a `days` beyond that returns nothing extra. - [Pause account](https://docs.autogrowth.farm/api-reference/accounts/pause-account.md): Sets the account status to `paused`, which stops the scraper from refreshing it. Returns the updated account. - [Resume account](https://docs.autogrowth.farm/api-reference/accounts/resume-account.md): Sets the account status back to `active` and clears any recorded scrape error. Returns the updated account. - [List content](https://docs.autogrowth.farm/api-reference/content/list-content.md): Returns the API key owner’s media library, newest first. - [Get storage info](https://docs.autogrowth.farm/api-reference/content/get-storage-info.md): Returns the organization’s media storage usage and allowance. The allowance is a fixed amount of storage per active phone slot plus any extra storage purchased. - [Upload content](https://docs.autogrowth.farm/api-reference/content/upload-content.md): Uploads a media file as multipart/form-data. A thumbnail is generated automatically. Pass `collectionId` to file the media into a collection at upload time. - [Toggle star](https://docs.autogrowth.farm/api-reference/content/toggle-star.md): Flips the starred flag on a content item and returns the full updated item. This is a toggle computed in the database: there is no request body and no way to set an explicit value. - [Delete content](https://docs.autogrowth.farm/api-reference/content/delete-content.md): Permanently deletes a content item and its stored file, and refreshes the owning collection’s item count. - [List collections](https://docs.autogrowth.farm/api-reference/collections/list-collections.md): Returns the API key owner’s content collections, newest first, each with a live total item count and a fresh (still postable) count. - [Create collection](https://docs.autogrowth.farm/api-reference/collections/create-collection.md): Creates a content collection. Upload media with `collectionId` to file it into the collection at the source. The created row carries no `freshCount` — only the list endpoint computes that. - [Move content between collections](https://docs.autogrowth.farm/api-reference/collections/move-content-between-collections.md): Assigns existing content items to a collection, or removes them from collections with `collectionId: null`. The target is resolved before anything is written, and item counts on every affected collection are refreshed afterwards. - [Get collection](https://docs.autogrowth.farm/api-reference/collections/get-collection.md): Returns one collection and the content items currently assigned to it, oldest first. The collection here is the raw stored row — unlike the list endpoint it has no `freshCount`. - [Delete collection](https://docs.autogrowth.farm/api-reference/collections/delete-collection.md): Deletes a collection. Its content is kept and becomes uncategorized — every member item’s `collectionId` is cleared by the delete itself. - [Update collection](https://docs.autogrowth.farm/api-reference/collections/update-collection.md): Updates collection metadata such as name, color, or selection mode, and returns the updated row. - [List prompts](https://docs.autogrowth.farm/api-reference/prompts/list-prompts.md): Returns the API key owner’s AI prompts, most recently updated first. - [Create prompt](https://docs.autogrowth.farm/api-reference/prompts/create-prompt.md): Creates an AI prompt. `variables` is populated automatically from the `{{...}}` placeholders in `promptText`. - [Get prompt](https://docs.autogrowth.farm/api-reference/prompts/get-prompt.md): Returns a single prompt by ID. - [Delete prompt](https://docs.autogrowth.farm/api-reference/prompts/delete-prompt.md): Deletes a prompt. - [Update prompt](https://docs.autogrowth.farm/api-reference/prompts/update-prompt.md): Updates a prompt and returns the updated row. - [Get dashboard stats](https://docs.autogrowth.farm/api-reference/stats/get-dashboard-stats.md): Returns the aggregate counters shown on the dashboard home. Scoping is not uniform: `totalDevices` is organization-wide (filtered by what the key can see), the account and execution counters are scoped to the API key owner’s own rows, and `activeDevices` is platform-wide. - [List persona bindings](https://docs.autogrowth.farm/api-reference/bindings/list-persona-bindings.md): Returns the Hi Katie persona bindings for the API key’s organization, newest first. Unlike most /v1 collections these are organization-scoped rather than user-scoped. - [Create persona binding](https://docs.autogrowth.farm/api-reference/bindings/create-persona-binding.md): Assigns a Hi Katie persona to one account. The account must be visible to the API key, and an account can hold only one binding — the uniqueness check is the insert itself, so a concurrent create loses with 409 rather than producing a duplicate. - [Get persona binding](https://docs.autogrowth.farm/api-reference/bindings/get-persona-binding.md): Returns a single binding by ID, scoped to the caller’s organization. - [Delete persona binding](https://docs.autogrowth.farm/api-reference/bindings/delete-persona-binding.md): Unbinds the persona from its account. Content already delivered to the library is kept. - [Update persona binding](https://docs.autogrowth.farm/api-reference/bindings/update-persona-binding.md): Updates the pipelines, brief, mode, or status of a binding. The bound account cannot be changed — delete and recreate instead. The sync-job-owned fields (`contentCollectionId`, `lastSyncAt`, `lastError`) are not settable here. ## OpenAPI Specs - [openapi](https://docs.autogrowth.farm/api-reference/openapi.json)