Skip to main content
Developer guide

SafeGora MCP connectors

Use existing workspace permissions to read bounded safety information and prepare proposals for human review.

Availability and requirements

This guide covers the host-neutral endpoint intended for Claude, Muse and Grok integrations. Separate host activation and directory review are required. This page does not announce approval, publication or availability in a particular host. An unconfigured integration is unavailable.

Users need an existing SafeGora account, must be at least 18 years old and must have access to a US workspace. Current roles, tenant membership, explicit consultant client grants and native feature gates continue to apply. The connector cannot purchase or upgrade a subscription.

Concrete uses and human review

A safety officer can ask for overdue corrective-action counts and inspection statuses in their verified workspace. In read and write mode, the connector returns bounded account information directly, without navigating several native pages.

A consultant can prepare a week-plan proposal with visit references and dates, then review its pending receipt. The human review step is deliberate: an authorized person checks the details in SafeGora before approval or execution. Preparing a proposal does not complete the work.

Endpoint and authentication

Production Streamable HTTP endpoint: https://api.safegora.com/api/v1/mcp/safegora/partners.

Muse review uses this production endpoint, its production OAuth client and dedicated synthetic reviewer accounts supplied through Muse's private review process. These credentials apply to the production environment.

The separate staging endpoint, https://api-stg.safegora.com/api/v1/mcp/safegora/partners, uses its own authorization server and synthetic data. It accepts only hosts with a separately registered staging client. Production and staging credentials must match their own resource audience.

Each host needs its own explicitly registered OAuth public client. WorkOS handles sign-in with PKCE. The requested scopes are openid and offline_access. The token audience must match the endpoint exactly. A client ID is not a credential and does not authorize a user or workspace. There is no shared API-key or service-account fallback.

Unauthenticated requests return HTTP 401 with a protected-resource metadata link. Sign in through the host's OAuth interface. Never paste a password, token or verification code into a conversation. A token for the separate OpenAI endpoint is not valid here.

Verify the native workspace

  1. Connect the endpoint in a supported host using its registered client.
  2. Request a native verification link with the connection tool.
  3. Open the link and sign in to SafeGora as the same person. Select the intended workspace.
  4. Read the access summary, choose Read only or Read and write, and select Verify connection. OAuth sign-in alone does not grant record access.
  5. Return to the host and discover the workflows currently available to your account.

A verification challenge expires after ten minutes. It is kept in the URL fragment and then in the current browser tab during native sign-in, not in a login redirect. If verification expires, request a new link. A revoked OAuth consent requires reconnecting first.

Read-only access

Read only is the default native permission choice. It is a saved connection mode, not an additional OAuth scope. After verification, tools/list exposes only get_profile, get_workflows, open_workflow and list_pending_proposals. The server also refuses direct calls to write tools, including prepare_connection, prepare_workflow and every audited lookup listed below.

The initial connection challenge is a setup write before the native permission choice. Existing connections without a saved choice are read-only. To change modes, disconnect, obtain fresh OAuth authorization, and verify again with the intended choice.

Tools and side effects

Machine-readable tool schemas provide the complete input and output fields and MCP annotations.

get_profile
Read. An opaque identifier for the signed-in person and workspace.
prepare_connection
Write: connection challenge. An expiring native verification link. The link alone grants no access.
get_workflows
Read. Permitted workflow availability, supported next steps and native links.
open_workflow
Read. A native continuation link; no restricted record preview.
get_workflow_records
Write: audited lookup. Bounded operational identifiers, statuses, dates and counts.
get_workflow_snapshot
Write: audited lookup. One fixed, permitted status or aggregate view.
get_equipment_readiness
Write: audited lookup. Advisory asset readiness and blocker/warning counts, not operation authorization.
get_reporting_readiness
Write: audited lookup. Metric availability; awaiting_warehouse has no metric values.
get_operational_safety_summary
Write: audited lookup. Five aggregate operational-safety counts, not verification or closeout.
prepare_workflow
Write: pending proposal. A structured proposal and native review link; no approval or execution.
list_pending_proposals
Read. Up to 100 unexpired pending proposals created through this connection.

Audited lookups persist native run and evidence records before returning results. A failed or uncertain save withholds success. Workflow record lists are bounded, not complete exports. The schema reference defines each tool's result limits.

Tools that persist run or audit evidence are classified as Write, including when their business result is a lookup. No sensitive write tools are exposed: the connector cannot purchase, pay, send communications, publish, certify, file or execute a pending proposal.

Rate limits

The partner endpoint allows 60 authenticated POST requests per 60-second window for each person, workspace, host client and resource, per API process. All protocol requests count, including discovery and failed tool calls. This is an in-memory limit; it resets on process restart and is not a shared quota across replicas. Static tools.json requests are excluded.

Excess requests receive HTTP 429, Retry-After and RateLimit headers. Wait for Retry-After before retrying. A missing response still does not establish whether a write committed. SafeGora does not publish a separate infrastructure quota for this endpoint; treat HTTP 429 and Retry-After as the signal to slow down.

Structured results retain some legacy chatgpt_ field names for compatibility. Those names describe availability in the current verified connection; they do not change the receiving host or grant extra access. The native verification page also retains the existing connection-settings address; its title and access summary identify the selected host. OpenAI-specific cards, account settings, forms, event delivery and skill packages are not advertised by this endpoint.

Proposals, failures and retries

A proposal is pending, not executed. An authorized person reviews it in native SafeGora. Each new proposal needs a new UUID request identifier. After an uncertain response, reuse the same identifier and identical inputs; changing inputs while reusing the identifier is refused. Retry identity is scoped to the connected person, client and resource.

HTTP 401 requires a valid connection. HTTP 403 means access was refused. HTTP 503 indicates unavailable configuration or a dependency. A tool can also return an error without a success payload. Check current status before retrying a write. A rate limit, timeout or missing response is not proof that a change succeeded.

Restricted work and reviewer setup

Names, locations, narratives, uploaded documents, medical and injury records, government identifiers and payment-card data are excluded from tool inputs and results. Human verification, certification, filing and communications remain authorized native workflows.

Reviewers use populated synthetic accounts supplied through the provider's private review process, one account per browser session. Test authorized reads and pending proposals, then cross-tenant denial, revoked access, missing native verification and unavailable workflows. Existing OpenAI tests are reference evidence, not proof of compatibility with another host.

Disconnect and support

In SafeGora, open Settings, Integrations, then Manage other AI connections. Choose the host and disconnect the current workspace. You can also remove the OAuth connection in that host.

Read the AI connector privacy notice, terms of service, or contact SafeGora support. The existing OpenAI integration has its own endpoint and ChatGPT connection privacy notice.