Every Summer API operation, generated from the same catalog the API uses to check requests. Each operation lists its access, whether it applies to the whole company or one environment, its MCP tool and its fields. The machine-readable description is at https://api.gosummer.ai/v1/openapi.json.
Base URL: https://api.gosummer.ai/v1. Send Authorization: Bearer <access token> and, for writes, Content-Type: application/json. Updates take the version you expect, so a stale write returns version_conflict instead of overwriting newer work. See Errors, states and events for every code.
Availability: the developer platform is turned on per Summer deployment. Until it is enabled for your workspace, these endpoints answer developer_platform_disabled.
Account
Show the signed-in person, Summer access status and this connection's grant
GET /v1/me
- Access: Any connection for the signed-in person
- Applies to: your own account
- MCP:
summer_account_me
List companies the person can access and whether this connection includes each one
GET /v1/companies
- Access: Any connection for the signed-in person
- Applies to: your own account
- MCP:
summer_account_companies_list
Read the person's Summer access request
GET /v1/access-request
Approval is a separate Summer team decision.
- Access: Any connection for the signed-in person
- Applies to: your own account
- MCP:
summer_account_access_request_read
Submit or update a Summer access request
POST /v1/access-request
This cannot approve access.
- Access: Any connection for the signed-in person
- Applies to: your own account
- MCP:
summer_account_access_request_submit - Idempotency-Key: required
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
company_name | string | Yes | At most 120 characters. |
note | string | Yes | At most 2000 characters. |
Accept a company invitation sent to this person
POST /v1/invitations/accept
Authorize again to add the company to a connection.
- Access: Any connection for the signed-in person
- Applies to: your own account
- MCP: Not available over MCP
- Idempotency-Key: recommended
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
token | string | Yes |
List this person's agent connections, grants, last use and expiry
GET /v1/connections
- Access: Any connection for the signed-in person
- Applies to: your own account
- MCP:
summer_account_connections_list
Revoke one of this person's agent connections immediately
POST /v1/connections/{connection}/revoke
- Access: Any connection for the signed-in person
- Applies to: your own account
- MCP:
summer_account_connections_revoke - Idempotency-Key: recommended
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
connection | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
reason | string | No | At most 200 characters. |
Company and setup
What this connection can do here, with a reason for everything unavailable
GET /v1/companies/{company}/environments/{environment}/capabilities
- Access:
setuporcapabilities.read(owner or admin) - Applies to: one environment
- MCP:
summer_company_capabilities
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Saved, verified, pending, unavailable and enabled state for each setup item
GET /v1/companies/{company}/environments/{environment}/setup
- Access:
setuporcapabilities.read(owner or admin) - Applies to: one environment
- MCP:
summer_company_setup_status
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Read company-wide settings
GET /v1/companies/{company}/settings
Changes affect every environment.
- Access:
setup(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_company_settings_read
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
Update company-wide settings with the expected version
PATCH /v1/companies/{company}/settings
Affects every environment.
- Access:
setup(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_company_settings_update - Idempotency-Key: recommended
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | At most 120 characters. |
timezone | string | Yes | At most 100 characters. |
workflow | support, order_status, billing, custom | Yes | |
note | string | Yes | At most 1000 characters. |
expected_version | integer | Yes | Current version you expect; 0 when the resource does not exist yet |
List provider integrations, their required fields and saved metadata
GET /v1/companies/{company}/environments/{environment}/integrations
Never returns values.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_integrations_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
List saved credential names, sources and versions
GET /v1/companies/{company}/environments/{environment}/credentials
Never returns values.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_credentials_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Save one selected credential value or Doppler reference
PUT /v1/companies/{company}/environments/{environment}/credentials/{name}
Replacing an active credential needs credentials.replace. Returns metadata only.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_credentials_setreturns a local CLI command instead of moving a secret - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
name | string | Yes | Credential variable name, for example STRIPE_READ_KEY |
Body, form 1:
| Field | Type | Required | Notes |
|---|---|---|---|
source | value | Yes | |
value | string | Yes | At most 16384 characters. |
expected_version | integer | Yes | Current version you expect; 0 when the resource does not exist yet |
Body, form 2:
| Field | Type | Required | Notes |
|---|---|---|---|
source | doppler | Yes | |
secret_name | string | Yes | Credential variable name, for example STRIPE_READ_KEY |
expected_version | integer | Yes | Current version you expect; 0 when the resource does not exist yet |
Remove an active credential with the expected version
DELETE /v1/companies/{company}/environments/{environment}/credentials/{name}
- Access:
credentials.replace(owner or admin) - Applies to: one environment
- MCP: Not available over MCP
- Idempotency-Key: recommended
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
name | string | Yes | Credential variable name, for example STRIPE_READ_KEY |
Query:
| Field | Type | Required | Notes |
|---|---|---|---|
expected_version | integer | Yes |
List company members and pending invitations
GET /v1/companies/{company}/team
Role changes and invitations stay in Summer.
- Access:
setup(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_company_team_read
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
Run supported harmless checks
POST /v1/companies/{company}/environments/{environment}/verification
Unsupported checks are reported as unsupported, never as passed.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_verification_run - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
targets | array of credentials, providers, slack, messenger | Yes |
Knowledge
List current company knowledge documents
GET /v1/companies/{company}/knowledge
Knowledge is company-wide, not per environment.
- Access:
setup(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_knowledge_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
Query:
| Field | Type | Required | Notes |
|---|---|---|---|
query | string | No | At most 200 characters. |
offset | integer | No |
Read one company knowledge document and its current revision
GET /v1/companies/{company}/knowledge/{document}
- Access:
setup(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_knowledge_get
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
document | string | Yes | Knowledge document ID At most 120 characters. |
Read the edit history of a company knowledge document
GET /v1/companies/{company}/knowledge/{document}/history
- Access:
setup(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_knowledge_history
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
document | string | Yes | Knowledge document ID At most 120 characters. |
Query:
| Field | Type | Required | Notes |
|---|---|---|---|
offset | integer | No |
Edit an existing company knowledge document with the expected revision and a reason
PUT /v1/companies/{company}/knowledge/{document}
Affects every environment and later runs.
- Access:
setup(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_knowledge_edit - Idempotency-Key: recommended
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
document | string | Yes | Knowledge document ID At most 120 characters. |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
revision | integer | Yes | |
content | string | Yes | At most 1000000 characters. |
status | active, retired | Yes | |
reason | string | Yes | At most 2000 characters. |
Messenger
List Messenger installations in this environment
GET /v1/companies/{company}/environments/{environment}/messenger/installations
Signing keys are never returned.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_messenger_installations_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Create an installation with a client-chosen ID
POST /v1/companies/{company}/environments/{environment}/messenger/installations
The one-time signing key goes to the trusted local helper, never to model-visible output.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_messenger_installations_createreturns a local CLI command instead of moving a secret - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
id | UUID | Yes | New installation ID chosen by the client, so a retry cannot create a duplicate |
settings | object | Yes | |
settings.enabled | boolean | Yes | Live widget. Production enable needs messaging.activate. |
settings.guests_enabled | boolean | Yes | |
settings.display_name | string | Yes | At most 80 characters. |
settings.allowed_origins | array of string | Yes | Exact website origins, https (http://localhost allowed in staging) |
settings.privacy_url | string | Yes | At most 512 characters. |
settings.fallback_url | string | Yes | At most 512 characters. |
settings.office_hours | string | Yes | At most 200 characters. |
settings.routing | object | No | |
settings.routing.clinician_url | string | No | At most 512 characters. |
settings.routing.sign_in_url | string | No | At most 512 characters. |
settings.routing.catalog_url | string | No | At most 512 characters. |
settings.routing.offer_url | string | No | At most 512 characters. |
settings.routing.offer_label | string | No | At most 80 characters. |
settings.routing.destination_origins | array of string | No |
Update installation settings with the expected version
PATCH /v1/companies/{company}/environments/{environment}/messenger/installations/{installation}
Keeps the signing key.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_messenger_installations_update - Idempotency-Key: recommended
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
installation | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
expected_version | integer | Yes | |
settings | object | Yes | |
settings.enabled | boolean | Yes | Live widget. Production enable needs messaging.activate. |
settings.guests_enabled | boolean | Yes | |
settings.display_name | string | Yes | At most 80 characters. |
settings.allowed_origins | array of string | Yes | Exact website origins, https (http://localhost allowed in staging) |
settings.privacy_url | string | Yes | At most 512 characters. |
settings.fallback_url | string | Yes | At most 512 characters. |
settings.office_hours | string | Yes | At most 200 characters. |
settings.routing | object | No | |
settings.routing.clinician_url | string | No | At most 512 characters. |
settings.routing.sign_in_url | string | No | At most 512 characters. |
settings.routing.catalog_url | string | No | At most 512 characters. |
settings.routing.offer_url | string | No | At most 512 characters. |
settings.routing.offer_label | string | No | At most 80 characters. |
settings.routing.destination_origins | array of string | No |
Issue a new signing key
POST /v1/companies/{company}/environments/{environment}/messenger/installations/{installation}/rotate-key
Existing signed sessions end. The key goes to the trusted local helper only.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_messenger_installations_rotate_keyreturns a local CLI command instead of moving a secret - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
installation | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
expected_version | integer | Yes |
Read assistant settings per installation and whether the managed runtime is enabled
GET /v1/companies/{company}/environments/{environment}/messenger/assistant
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_messenger_assistant_read
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Update assistant instructions and knowledge with the expected revision
PUT /v1/companies/{company}/environments/{environment}/messenger/installations/{installation}/assistant
Cannot raise the spending limit.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_messenger_assistant_update - Idempotency-Key: recommended
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
installation | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
revision | integer | Yes | |
settings | object | Yes | |
settings.enabled | boolean | Yes | Automatic replies. Production enable needs messaging.activate. |
settings.instructions | string | Yes | At most 50000 characters. |
settings.knowledge | string | Yes | At most 200000 characters. |
settings.budget_cents | integer | Yes | Cannot exceed the current limit through the API |
Pause the assistant in one conversation so a person can take over, or ask it to resume
POST /v1/companies/{company}/environments/{environment}/messenger/conversations/{conversation}/assistant
Pausing stops automatic replies immediately.
- Access:
setup(owner or admin) - Applies to: one environment
- MCP:
summer_messenger_conversations_assistant - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
conversation | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
paused | boolean | Yes |
Cases, investigations and approvals
List company-owned cases or conversations, newest first, with coverage and a cursor
GET /v1/companies/{company}/environments/{environment}/cases
Text search is not available through the API yet.
- Access:
cases.read - Applies to: one environment
- MCP:
summer_cases_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Query:
| Field | Type | Required | Notes |
|---|---|---|---|
cursor | string | No | At most 200 characters. |
limit | integer | No | |
status | open, resolved, all | No |
Read one case or conversation with its original messages and related records
GET /v1/companies/{company}/environments/{environment}/cases/{case}
- Access:
cases.read - Applies to: one environment
- MCP:
summer_cases_get
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
case | UUID | Yes |
Query:
| Field | Type | Required | Notes |
|---|---|---|---|
after | integer | No |
Get a short-lived download for an attachment that belongs to this case
GET /v1/companies/{company}/environments/{environment}/cases/{case}/attachments/{attachment}
- Access:
cases.read - Applies to: one environment
- MCP:
summer_cases_attachment
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
case | UUID | Yes | |
attachment | UUID | Yes |
Read investigation runs, saved plans, approval state and execution receipts for a case
GET /v1/companies/{company}/environments/{environment}/cases/{case}/investigations
- Access:
cases.read - Applies to: one environment
- MCP:
summer_investigations_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
case | UUID | Yes |
Ask Summer to investigate the case, or revise a saved plan with feedback
POST /v1/companies/{company}/environments/{environment}/cases/{case}/investigations
Completion is not approval.
- Access:
investigations.request - Applies to: one environment
- MCP:
summer_investigations_request - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
case | UUID | Yes |
Body, form 1:
| Field | Type | Required | Notes |
|---|---|---|---|
kind | investigate | Yes |
Body, form 2:
| Field | Type | Required | Notes |
|---|---|---|---|
kind | revise | Yes | |
plan_request_id | UUID | Yes | |
feedback | string | Yes | At most 2000 characters. |
Prepare the exact work in the current saved plan for human approval in Summer
POST /v1/companies/{company}/environments/{environment}/cases/{case}/actions/prepare
Does not approve or execute.
- Access:
actions.prepare - Applies to: one environment
- MCP:
summer_actions_prepare - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
case | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
plan_request_id | UUID | Yes |
Automation
Read configuration and activity events after a cursor
GET /v1/companies/{company}/environments/{environment}/events
Resume from next_cursor.
- Access:
setuporevents.read(owner or admin) - Applies to: one environment
- MCP:
summer_events_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Query:
| Field | Type | Required | Notes |
|---|---|---|---|
after | string | No | |
limit | integer | No |
List the company's service accounts
GET /v1/companies/{company}/service-accounts
- Access:
automation.manage(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_service_accounts_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
Create, update, rotate or disable a service account
PUT /v1/companies/{company}/service-accounts/{account}
A new secret goes to the trusted local helper only.
- Access:
automation.manage(owner or admin) - Applies to: the whole company, every environment
- MCP:
summer_service_accounts_savereturns a local CLI command instead of moving a secret - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
account | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | At most 80 characters. |
environments | array of staging, production | Yes | |
scopes | array of events.read, capabilities.read | Yes | |
expected_version | integer | Yes | Current version you expect; 0 when the resource does not exist yet |
rotate_secret | boolean | No | Default false. |
disable | boolean | No | Default false. |
List webhook endpoints and delivery state
GET /v1/companies/{company}/environments/{environment}/webhooks
- Access:
automation.manage(owner or admin) - Applies to: one environment
- MCP:
summer_webhooks_list
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
Create, update, rotate or disable a signed webhook endpoint
PUT /v1/companies/{company}/environments/{environment}/webhooks/{webhook}
A new signing secret goes to the trusted local helper only.
- Access:
automation.manage(owner or admin) - Applies to: one environment
- MCP:
summer_webhooks_savereturns a local CLI command instead of moving a secret - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
webhook | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
url | string | Yes | At most 512 characters. |
event_types | array of string | Yes | |
expected_version | integer | Yes | Current version you expect; 0 when the resource does not exist yet |
rotate_secret | boolean | No | Default false. |
disable | boolean | No | Default false. |
Queue past events after a cursor for delivery again to one endpoint
POST /v1/companies/{company}/environments/{environment}/webhooks/{webhook}/replay
Receivers deduplicate by event ID.
- Access:
automation.manage(owner or admin) - Applies to: one environment
- MCP:
summer_webhooks_replay - Idempotency-Key: required
Path:
| Field | Type | Required | Notes |
|---|---|---|---|
company | UUID | Yes | Summer company ID |
environment | staging, production | Yes | Environment that owns the resource |
webhook | UUID | Yes |
Body:
| Field | Type | Required | Notes |
|---|---|---|---|
after | string | Yes | |
limit | integer | No | Default 200. |