Free Assessment:How healthy is your design business? Take the 3-minute quiz
DesignGrowDesignGrow
For StagersFor DesignersFeaturesPricing
LoginStart Free Trial

StageGrow developer docs

Connect your own agent to your staging business. Also available as Markdown, llms.txt, OpenAPI and a public docs MCP at https://my.designgrow.app/docs/mcp.

  1. Overview — What StageGrow is and how agents act on it.
  2. Connect an agent (MCP quickstart) — Point Claude Code, Claude Desktop, OpenClaw, claude.ai or ChatGPT at the MCP server.
  3. Authentication — Organization API keys, OAuth 2.0 with PKCE, and the discovery documents.
  4. Scopes — read, write and finance, and what each unlocks.
  5. REST API — The /api/v1 endpoints, generated from the API registry.
  6. Webhooks — Events you can subscribe to.
  7. Errors and rate limits — Status codes, the error body, and 429 with Retry-After.
  8. Pricing — Plans, the free tier and limits.
  9. Discovery files — Every machine-readable document StageGrow publishes.

Overview

StageGrow (formerly DesignGrow) is the operating system for US home staging companies, from solo stagers to regional operators. It runs projects and schedules, inventory and warehouses, clients and realtors, proposals and contracts, invoicing and collections (AR), and reporting. Every record belongs to one organization; no credential can see another organization's data.

StageGrow has no built-in chat assistant. You bring your own agent (Claude, ChatGPT, OpenClaw or anything that speaks MCP) and connect it to your organization. The rule we build by: anything the web app does, an MCP tool does.

  • MCP server (primary agent interface): https://my.designgrow.app/mcp. Streamable HTTP, organization-scoped.
  • Docs MCP (public, no credentials): https://my.designgrow.app/docs/mcp.
  • OpenAPI contract: https://my.designgrow.app/openapi.json.
  • AI Catalog of everything above: https://my.designgrow.app/.well-known/ai-catalog.json.

Connect an agent (MCP quickstart)

The MCP endpoint is https://my.designgrow.app/mcp (the older https://my.designgrow.app/api/mcp serves the same server). Transport is Streamable HTTP; replies are plain JSON, so clients that cannot read an SSE stream work too.

Claude Code, OpenClaw, scripts (API key). An organization owner creates a key in Settings → Developers and picks its scopes. Then:

claude mcp add --transport http stagegrow https://my.designgrow.app/mcp --header "Authorization: Bearer mcp_YOUR_KEY"

Or in a JSON client config:

{
  "mcpServers": {
    "stagegrow": {
      "type": "http",
      "url": "https://my.designgrow.app/mcp",
      "headers": {
        "Authorization": "Bearer mcp_YOUR_KEY"
      }
    }
  }
}

claude.ai and ChatGPT (OAuth). Add a custom connector with the URL https://my.designgrow.app/mcp. The client discovers the authorization server from the 401 response, registers itself, and sends an organization owner to a consent screen. See Authentication.

Status: new OAuth connections are not enabled yet. Until they are, connect with an MCP API key from a client that can send headers (Claude Code, Claude Desktop, OpenClaw).

Check the connection with two JSON-RPC calls:

curl -s https://my.designgrow.app/mcp \
  -H "Authorization: Bearer mcp_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

curl -s https://my.designgrow.app/mcp \
  -H "Authorization: Bearer mcp_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

tools/list returns only the tools your credential's scopes allow, so a read-only key sees a short list. Start with get_workflow and search/fetch; agent role instructions come from list_agent_profiles and get_agent_profile when your organization publishes them.

Authentication

Two credential types reach the MCP server. Both are pinned to one organization.

CredentialFormatWho creates itUse it for
MCP API keyAuthorization: Bearer mcp_<48 hex>An organization owner, in Settings → DevelopersClaude Code, Claude Desktop, OpenClaw, scripts
OAuth 2.0 access tokenAuthorization: Bearer <JWT>, 1 hourAn organization owner approves the consent screenclaude.ai and ChatGPT connectors

OAuth details. Authorization code grant with PKCE; only S256 is accepted. Redirect URIs must match a registered URI exactly. Clients register with RFC 7591 dynamic client registration. Access tokens last one hour. Refresh tokens rotate on every use and stop after 30 days without use. Revoking the connector in Settings → Developers ends the refresh token and every access token at once. Only an organization owner can approve a connector, and the grant is pinned to that owner's organization.

Status: new OAuth connections are not enabled yet. Until they are, connect with an MCP API key from a client that can send headers (Claude Code, Claude Desktop, OpenClaw).

  • Protected-resource metadata (RFC 9728): https://my.designgrow.app/.well-known/oauth-protected-resource/mcp
  • Authorization-server metadata (RFC 8414): https://my.designgrow.app/.well-known/oauth-authorization-server
  • Registration: POST https://my.designgrow.app/api/oauth/register; authorize: https://my.designgrow.app/oauth/authorize; token: POST https://my.designgrow.app/api/oauth/token

An unauthenticated MCP request gets 401 with a challenge that names the metadata document:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://my.designgrow.app/.well-known/oauth-protected-resource/mcp"

Shop keys (scope shop) are a separate credential for the Superb shop MCP and are refused by /mcp.

Scopes

ScopeGrants
readList, get, search and report tools.
writeCreate, update and delete operational records: projects, clients, inventory, proposals, workspace content.
financeAR, invoices, payments, billing and financial reports.

A credential sees only the tools its scopes allow. Pick the smallest set the agent needs: a reporting bot needs read, a collections bot read + finance. There is no unrestricted scope for new keys or connectors.

REST API

Base URL: https://my.designgrow.app/api/v1 (every path also answers unversioned at /api). The full contract, with parameters, error responses and security schemes, is https://my.designgrow.app/openapi.json.

These endpoints serve the StageGrow web app and authenticate with a signed-in session; webhook subscriptions use the Zapier OAuth token. For agents, the MCP server covers the same operations and more.

AreaEndpointWhat it does
ProjectsGET /api/v1/projectsList all projects in your organization
ProjectsPOST /api/v1/projectsCreate a new project
ProjectsGET /api/v1/projects/{id}Get a specific project by ID
ProjectsPUT /api/v1/projects/{id}Update a project
ProjectsDELETE /api/v1/projects/{id}Delete a project
InventoryGET /api/v1/inventoryList all inventory items
InventoryPOST /api/v1/inventoryCreate a new inventory item
InventoryGET /api/v1/inventory/{id}Get a specific inventory item
InventoryPUT /api/v1/inventory/{id}Update an inventory item
InventoryDELETE /api/v1/inventory/{id}Delete an inventory item
ClientsGET /api/v1/contactsThe contact directory — every party, once
ClientsGET /api/v1/clientsList all clients
ClientsPOST /api/v1/clientsCreate a new client
ClientsGET /api/v1/clients/{id}Get a specific client
ClientsGET /api/v1/clients/{id}/rolesList a contact's roles
ClientsPOST /api/v1/clients/{id}/rolesGive a contact a role
ClientsDELETE /api/v1/clients/{id}/rolesEnd a contact's role
ClientsGET /api/v1/clients/{id}/relationshipsList a contact's relationships
ClientsPOST /api/v1/clients/{id}/relationshipsOpen a relationship from this contact
ClientsDELETE /api/v1/clients/{id}/relationshipsEnd a relationship
ClientsGET /api/v1/clients/{id}/identifiersList a contact's identifiers
ClientsPOST /api/v1/clients/{id}/identifiersRecord an identifier
ClientsDELETE /api/v1/clients/{id}/identifiersRemove an identifier
ClientsGET /api/v1/realtorsList realtors
ClientsGET /api/v1/realtors/{id}Get a realtor
ClientsPOST /api/v1/realtors/{id}/affiliationSet a realtor's brokerage
ClientsGET /api/v1/brokeragesList brokerages
ClientsGET /api/v1/brokerages/{id}Get a brokerage
ClientsPUT /api/v1/projects/{id}/listing-agentSet a project's listing agent
WebhooksGET /api/v1/webhooks/subscribeList active webhook subscriptions
WebhooksPOST /api/v1/webhooks/subscribeSubscribe to webhook events
WebhooksDELETE /api/v1/webhooks/subscribeUnsubscribe from webhook events
ServicesGET /api/v1/servicesList all services
ServicesPOST /api/v1/servicesCreate a new service

Webhooks

Subscribe with POST /api/v1/webhooks/subscribe (event_type, target_url, optional secret), authenticated with a Zapier OAuth access token. Events:

EventWhen
project.createdA new project was created
project.updatedA project was updated
project.status_changedA project status changed
project.deletedA project was deleted
client.createdA new client was added
client.updatedA client was updated
client.deletedA client was deleted
inventory.createdA new inventory item was added
inventory.updatedAn inventory item was updated
inventory.status_changedAn inventory item status changed
inventory.deletedAn inventory item was deleted
service.createdA new service was created
service.updatedA service was updated
service.deletedA service was deleted

Errors and rate limits

StatusMeaning
400Malformed or invalid request.
401Missing or invalid credential. MCP responses include a WWW-Authenticate challenge.
403Valid credential, but the role, plan or scope does not allow the action.
404No such resource in your organization, or no such path.
429Rate limited. Wait the number of seconds in Retry-After, then retry.
5xxServer error; safe to retry idempotent reads with backoff.

Error bodies are JSON with an error field (OAuth endpoints add error_description, per RFC 6749):

{ "error": "Too many requests. Please try again later." }

Burst limits apply per IP on expensive and abuse-prone endpoints, for example OAuth client registration (10 per minute) and public form endpoints (5 to 10 per minute).

Pricing

Every paid plan has a 14-day free trial and a 90-day money-back guarantee. Annual billing saves 20%. Full details: https://my.designgrow.app/pricing.

PlanPriceUsersProjects
FreeFree forever1 user5 projects per month
Starter$29.95/month, or $24.95/month billed annually1 userUnlimited projects
Professional$59.95/month, or $49.95/month billed annually5 usersUnlimited projects
Studio$99.95/month, or $83.29/month billed annually10 usersUnlimited projects
EnterpriseCustom (contact enterprise@designgrow.app)Unlimited usersMulti-location operations

Inventory management is an add-on available on every plan:

Inventory tierItemsPrice
Free Inventory100 items$0
Starter Inventory1,000 items$20.00/month, or $16.00/month billed annually
Scale Inventory10,000 items$50.00/month, or $40.00/month billed annually
Unlimited InventoryUnlimited items$100.00/month, or $80.00/month billed annually

Discovery files

FileWhat it is
/.well-known/ai-catalog.jsonAI Catalog listing the resources below
/mcp/server-cardMCP server card (SEP-2127)
/docs/mcp/server-cardServer card for the public docs MCP
/server.jsonMCP Registry entry
/openapi.jsonOpenAPI 3.1 contract
/llms.txtIndex of key pages for language models
/llms-full.txtThese docs in one text file
/docs.mdThese docs as Markdown

Need help? Email support@designgrow.app.

DesignGrowDesignGrow

The #1 inventory management platform for professional interior designers.

Product

  • Features
  • Pricing
  • Integrations

Company

  • About
  • Contact

Resources

  • State of Staging 2025
  • Business Health Score

Get Started

  • Start Free Trial
  • Login
  • Enterprise Inquiries

Developers

  • Developer docs
  • MCP server
  • OpenAPI
  • AI Catalog

Legal

  • Terms of Service
  • Privacy Policy
  • LLMs.txt
2025 DesignGrow. All rights reserved.