post_orgs_by_id_connect
Calls POST /api/orgs/{id}/connect as the signed-in person · REST reference
Onboard the organization's Stripe Connect account
Platform staff only. Creates the connected account plus the deposit Account and StripeConnect link so a deferred-EFT payout has somewhere to send funds. There is no Stripe-hosted onboarding: the platform prefills all KYC itself. TEST MODE ONLY. StripeService.createConnectAccount submits Stripe's test-mode magic values unconditionally, so it refuses to run against an sk_live key or on a production tier and answers 501 CONNECT_ONBOARDING_DISABLED there. IDEMPOTENT ON EXISTING ACCOUNTS: an org that already has a non-DISABLED StripeConnect record gets that record back rather than a second acct_ id — still at 201, so a 201 here does not mean a new account was created. The request body is not read.
Arguments
| Argument | Type | Description | |
|---|---|---|---|
idpath | string (uuid) | required |
Example call
A client sends this over the MCP session; Claude and other agents build it for you. The values are placeholders — the shape is real.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "post_orgs_by_id_connect",
"arguments": {
"id": "11111111-1111-4111-8111-111111111111"
}
}
}Result
On success (HTTP 201) the tool returns one text item holding the API's JSON, pretty-printed.
The connected account, whether freshly created or reused.
{
"accountId": "string",
"status": "ACTIVE",
"stripeConnectId": "11111111-1111-4111-8111-111111111111"
}Fields
| Field | Type | Description |
|---|---|---|
accountId | string | Stripe's connected-account id (acct_...). |
status | "ACTIVE" | "PENDING" | "RESTRICTED" | "REJECTED" | "DISABLED" | |
stripeConnectId | string (uuid) | Id of the platform's own StripeConnect record. |
When it fails
A failed call returns isError: true with the API's message as text. A change the person declines, or lets time out, also comes back this way and nothing changes.
403Authenticated, but the caller holds none of the required permissions.
404No such resource — or none this caller may see.
501Onboarding is disabled in live mode. Carries
code: CONNECT_ONBOARDING_DISABLED.502Stripe refused to create the connected account. The body is a constant; Stripe's own message, naming the refused KYC field, is in the server log.
What the model is shown
This is the tool exactly as the server lists it in tools/list. The description starts with the REST call it makes.
{
"name": "post_orgs_by_id_connect",
"description": "POST /api/orgs/{id}/connect — Platform staff only. Creates the connected account plus the deposit `Account` and `StripeConnect` link so a deferred-EFT payout has somewhere to send funds. There is no Stripe-hosted onboarding: the platform prefills all KYC itself. TEST MODE ONLY. `StripeService.createConnectAccount` submits Stripe's test-mode magic values unconditionally, so it refuses to run against an `sk_live` key or on a production tier and answers 501 `CONNECT_ONBOARDING_DISABLED` there. IDEMPOTENT ON EXISTING ACCOUNTS: an org that already has a non-DISABLED `StripeConnect` record gets that record back rather than a second `acct_` id — still at 201, so a 201 here does not mean a new account was created. The request body is not read.\n\nThis changes data. The person is asked to confirm it before it runs, and nothing happens if they decline.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": false
}
}