Register the organization with Plaid

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 /plaid-partner/customer

Org admins only. Registers the organization as a Plaid end customer through Plaid's reseller partner API, saves the record and tries to enable it straight away, then returns the saved record (Plaid secrets are never included). Returns 409 if the organization is already registered, or outside production.

Headers

  • organization string Required

    id of the selected (active) organization

application/json

Body Required

  • companyName string Required

    Legal company name

  • legalEntityName string Required

    Legal entity name (may differ from company name)

  • website string Required

    Company website

  • applicationName string

    Name of the application using Plaid. Defaults to companyName if omitted.

  • technicalContact object
    Hide technicalContact attributes Show technicalContact attributes object
    • givenName string Required
    • familyName string Required
    • email string Required
  • billingContact object
    Hide billingContact attributes Show billingContact attributes object
    • givenName string Required
    • familyName string Required
    • email string Required
  • address object
    Hide address attributes Show address attributes object
    • street string Required
    • city string Required
    • region string Required
    • postalCode string Required
    • countryCode string

      ISO-3166-1 alpha-2 country code. Defaults to "US" on the backend if omitted.

  • isDiligenceAttested boolean Required

    Attests the information provided is accurate and the end customer agrees to Plaid's terms. Must be true.

Responses

  • 201 application/json
    Hide response attributes Show response attributes object
    • data object Required

      The stored Plaid end-customer record.

      Hide data attributes Show data attributes object
      • _id string
      • organization string
      • companyName string
      • legalEntityName string | null
      • website string | null
      • applicationName string | null
      • endCustomerClientId string | null
      • status string

        Values are under_review, pending_enablement, active, or denied.

      • products array[string]
      • plaidRequestId string | null
      • createdAt string(date-time)
      • updatedAt string(date-time)
      • __v number
    • statusCode number Required
    • timestamp string(date-time) Required
  • 409

    End Customer already exists

POST /plaid-partner/customer
curl \
 --request POST 'http://api.example.com/plaid-partner/customer' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --header "organization: string" \
 --data '{
  "companyName": "string",
  "legalEntityName": "string",
  "website": "string",
  "applicationName": "string",
  "logo": "string",
  "technicalContact": {
    "givenName": "string",
    "familyName": "string",
    "email": "string"
  },
  "billingContact": {
    "givenName": "string",
    "familyName": "string",
    "email": "string"
  },
  "address": {
    "street": "string",
    "city": "string",
    "region": "string",
    "postalCode": "string",
    "countryCode": "US"
  },
  "isDiligenceAttested": true
}'
Request examples
# Headers
organization: string

# Payload
{
  "companyName": "string",
  "legalEntityName": "string",
  "website": "string",
  "applicationName": "string",
  "logo": "string",
  "technicalContact": {
    "givenName": "string",
    "familyName": "string",
    "email": "string"
  },
  "billingContact": {
    "givenName": "string",
    "familyName": "string",
    "email": "string"
  },
  "address": {
    "street": "string",
    "city": "string",
    "region": "string",
    "postalCode": "string",
    "countryCode": "US"
  },
  "isDiligenceAttested": true
}
Response examples (201)
{
  "data": {
    "_id": "65a1b2c3d4e5f6a7b8c9d0f1",
    "organization": "string",
    "companyName": "string",
    "legalEntityName": "string",
    "website": "string",
    "applicationName": "string",
    "endCustomerClientId": "string",
    "status": "under_review",
    "products": [
      "string"
    ],
    "plaidRequestId": "string",
    "createdAt": "2026-05-04T09:42:00Z",
    "updatedAt": "2026-05-04T09:42:00Z",
    "__v": 42.0
  },
  "statusCode": 201,
  "timestamp": "2026-01-15T10:15:00.000Z"
}