Create an organization

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://docs.usehearsay.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "integrations MCP server": {
    "url": "https://docs.usehearsay.com/mcp"
  }
}

Close
POST /organization

Creates an organization with the caller as owner, attaches the free plan, sets up its billing customer and invites inviteEmails when given. Returns the organization, the caller's permission and its billing summary. Returns 400 when the name is already taken.

application/json

Body Required

  • name string Required
  • website string
  • contact string
  • addressLine1 string
  • addressLine2 string
  • city string
  • state string
  • country string
  • zipCode string
  • email string
  • description string
  • phone array[string]

    Minimum value of each is 1, maximum value of each is 20.

  • inviteEmails array[array]

Responses

  • 201 application/json
    Hide response attributes Show response attributes object
    • data object Required
      Hide data attributes Show data attributes object
      • organization object Required
        Hide organization attributes Show organization attributes object
        • createdAt string(date-time) Required
        • updatedAt string(date-time) Required
        • id string Required
        • name string Required
        • slug string Required
        • email string Required
        • contact string Required
        • city string Required
        • state string Required
        • country string Required
        • description string Required
        • phone array[string] Required
        • isActive boolean Required
        • isPriority boolean
        • activePlan object | null Required

          Not loaded on this route, so always null.

        • metadata object Required
        • type string Required
        • version string Required

          Values are v1, v2, eu, or ca.

      • permission object Required
        Hide permission attributes Show permission attributes object
        • createdAt string(date-time) Required
        • updatedAt string(date-time) Required
        • id string Required
        • user object | null Required

          Not loaded on this route, so always null.

        • role string Required

          Values are user, client, employee, billing, full_access, admin, owner, or member.

        • organization object | null Required

          Not loaded on this route, so always null.

        • lastActiveAt string(date-time) | null Required
      • billing object Required

        The org's plan, limits and resolved prices. null when the org is billed by the legacy model — either it has not been migrated to case billing or the feature is off.

        Hide billing attributes Show billing attributes object
        • tier string Required

          Values are public, solo, firm, or firm-plus.

        • tierName string Required
        • billingMode string Required

          Values are payg, per-source, or flat-case.

        • cadence string Required

          Values are monthly or annual.

        • baseFeeCents number Required

          Platform fee for one period at this cadence, in cents

        • paymentMethodOnFile boolean Required
        • supportTier string Required
        • limits object Required
          Hide limits attributes Show limits attributes object
          • seatCap number | null Required

            null = unlimited

          • storageGB number Required
          • perCaseSourceCap number | null Required

            Provisioned, not enforced — display only

        • features array[string] Required

          Feature keys enabled for this tier

        • prices array[object] Required
          Hide prices attributes Show prices attributes object
          • skuKey string Required

            Values are collection.phone, collection.social, collection.email, collection.ai-chat, collection.financial, collection.discord, collection.reddit, collection.linkedin, collection.legal, collection.file, collection.other, case.flat, case.pro-upgrade, addon.kit-rental, addon.laptop-rental, addon.laptop-rental-setup, addon.managed-service, addon.shipping, addon.live-bank, plan.base, source.per, ai.tokens-overage, adjustment.manual, or adjustment.discount.

          • name string Required
          • unitAmountCents number Required

            What this org is charged per unit, in cents

          • included boolean Required

            Bundled by the plan — charged at 0, not billed

          • listAmountCents number | null Required

            What an included item would otherwise have cost

          • overridden boolean Required

            Set by this org's negotiated price rather than the plan's catalog rate

          • recurrence string | null Required

            null for a one-time charge; otherwise how often it repeats

            Values are monthly or semiannual.

          • freeFirstPeriod boolean Required

            First period of a recurring item costs 0

        • overrides object Required

          This org's negotiated exceptions, as stored. An absent SKU means the plan's catalog rate applies — read prices for what is actually charged.

    • statusCode number Required
    • timestamp string(date-time) Required
POST /organization
curl \
 --request POST 'http://api.example.com/organization' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '{
  "name": "string",
  "website": "string",
  "logo": "string",
  "contact": "string",
  "addressLine1": "string",
  "addressLine2": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "zipCode": "string",
  "email": "string",
  "description": "string",
  "phone": [
    "string"
  ],
  "inviteEmails": [
    []
  ]
}'
Request examples
{
  "name": "string",
  "website": "string",
  "logo": "string",
  "contact": "string",
  "addressLine1": "string",
  "addressLine2": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "zipCode": "string",
  "email": "string",
  "description": "string",
  "phone": [
    "string"
  ],
  "inviteEmails": [
    []
  ]
}
Response examples (201)
{
  "data": {
    "organization": {
      "createdAt": "2026-01-15T14:30:00.000Z",
      "updatedAt": "2026-01-15T14:30:00.000Z",
      "id": "507f1f77bcf86cd799439011",
      "name": "Example Law LLP",
      "slug": "example-law-llp",
      "email": "office@example.com",
      "contact": "Jane Doe",
      "city": "New York",
      "state": "NY",
      "country": "US",
      "description": "Litigation practice",
      "phone": [
        "+15555550100"
      ],
      "logo": "https://files.example.com/logo.png",
      "isActive": true,
      "isPriority": false,
      "activePlan": {},
      "metadata": {},
      "type": "law_firm",
      "version": "v1"
    },
    "permission": {
      "createdAt": "2026-01-15T14:30:00.000Z",
      "updatedAt": "2026-01-15T14:30:00.000Z",
      "id": "507f1f77bcf86cd799439011",
      "user": {},
      "role": "member",
      "organization": {},
      "lastActiveAt": "2026-01-15T14:30:00.000Z"
    },
    "billing": {
      "tier": "firm",
      "tierName": "Firm",
      "billingMode": "per-source",
      "cadence": "monthly",
      "baseFeeCents": 24900,
      "paymentMethodOnFile": true,
      "supportTier": "next-day",
      "limits": {
        "seatCap": 10,
        "storageGB": 5000,
        "perCaseSourceCap": 42.0
      },
      "features": [
        "rsmf",
        "ai",
        "mcp",
        "whiteLabel"
      ],
      "prices": [
        {
          "skuKey": "collection.phone",
          "name": "Phone collection",
          "unitAmountCents": 17900,
          "included": false,
          "listAmountCents": 42.0,
          "overridden": false,
          "recurrence": "monthly",
          "freeFirstPeriod": false
        }
      ],
      "overrides": {
        "skuUnitAmountCents": {
          "collection.phone": 9900
        }
      }
    }
  },
  "statusCode": 201,
  "timestamp": "2026-01-15T10:15:00.000Z"
}