Chapter 11Beta

Connect Stand-ins to live backend systems.

Prompts and knowledge bases explain what your company already knows. Integrations let a Stand-in check what is true right now: an event calendar, order status, account data, availability, or another system your team exposes through an API.

Stand Guidebook

Chapter 11 of 12

Field guide

What to learn in this chapter

Import one REST API contract at team level, expose a small set of safe operations, attach the integration to a selected Stand-in, and verify live reads or confirmed writes without placing credentials in the model.

Need an exact capability definition, plan requirement, or limitation? Browse the Feature Reference.

Product model

01

Separate the shared connection from Stand-in access.

An integration is a team-shared connection. Its name, base URL, authentication, and selected API operations are configured once in the Integrations section of the Stand-ins page.

Stand-in access is separate. Open a Stand-in, choose Skills, enable Use integrations, and select the integration instances that Stand-in may use. Two integrations can use the same provider and still expose different accounts, calendars, base URLs, or operations.

ConceptIntegration type
ExampleOpenAPI
ScopeA connector format supported by Stand.
ConceptIntegration instance
ExampleYour company event calendar
ScopeOne team configuration with its own URL, credentials, and tools.
ConceptTool
ExampleList upcoming events
ScopeOne selected API operation available to a Stand-in.
ConceptStand-in access
ExampleEvents Stand-in can use your company event calendar
ScopeA per-Stand-in selection from the team catalog.

Create

02

Import an OpenAPI declaration.

On the Stand-ins page, find Integrations and click New integration. Choose OpenAPI, enter a team-facing name and description, and set the exact public base URL Stand should call.

Paste the OpenAPI JSON or YAML, or upload the declaration file. Preview tools before saving. Stand does not automatically expose every imported operation.

OpenAPI documentation

Learn the OpenAPI format.

The OpenAPI Initiative’s official guide explains how to describe paths, operations, parameters, request bodies, and reusable schemas. Stand’s Feature Reference defines the subset this connector supports.

Read the official guide

OpenAPI setup checklist

  • Use a public HTTPS base URL. Unauthenticated HTTP is accepted, but authenticated integrations require HTTPS. Private networks, internal hostnames, and localhost are not supported.
  • Choose no authentication, bearer token, API key header, or basic authentication. Tokens, API keys, and passwords must contain at least eight characters. Basic-authentication usernames and passwords cannot contain control characters.
  • Keep secrets in the authentication fields; do not paste them into the OpenAPI description.
  • Click Preview tools and select only the operations this integration needs.
  • Review Read versus Write for every selected operation.
  • Create the integration, then expand its row to verify the URL, auth mode, and tools.
  • Use Edit to change metadata or credentials. Re-enter the secret when changing the base URL or authentication settings. Re-import a declaration only when replacing the selected tools.

Small read-only OpenAPI example

openapi: 3.1.0
info:
  title: Public events
  version: "1.0"
paths:
  /events:
    get:
      operationId: listUpcomingEvents
      summary: List upcoming public events
      parameters:
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 50

Set the base URL separately in Stand. The model can supply limit, but it cannot replace the host or construct an arbitrary URL.

Operation review

03

Prefer a small, readable tool set.

Operation names, summaries, descriptions, parameters, and request-body schemas become the Stand-in tool contract. Clear operationId and summary values help the Stand-in choose correctly.

Stand sends JSON request bodies and preserves declared application/json or vendor +json media types. Query arrays retain Swagger collectionFormat and OpenAPI style/explode serialization for repeated, comma-, space-, and pipe-delimited values.

Operation-level parameters replace matching path-item parameters, including Swagger body parameters and their schema and required state.

Path and header parameters must be scalar. Query parameters may be scalar or arrays of scalar values. Stand rejects required cookie, form, content-based, object, nested-array, and reserved-header parameters that it cannot serialize or safely configure; unsupported optional parameters are omitted from the tool contract.

Path and header parameters use OpenAPI simple serialization. Required parameters using other styles are rejected during import; unsupported optional parameters are omitted.

Stand accounts for numeric bounds when checking required path and query sizes. Required declared headers are checked together against the outbound header limit, so operations that cannot produce a sendable request are rejected during import.

Input schemas must resolve to a concrete type supported by Gemini function calling. Stand applies sibling bounds together with every supported anyOf branch and rejects required schemas that have no valid serializable input. Required unconstrained schemas such as an empty schema object are rejected during import; optional unconstrained parameters and request bodies are omitted.

JSON object keys remain required even when they are governed by additionalProperties instead of being listed under properties.

GET, HEAD, and OPTIONS operations start as Read and can be made Write when an apparently read-shaped endpoint has side effects. Other HTTP methods always remain Write so confirmation cannot be bypassed by configuration.

Stand may try another validated DNS address for a failed read-only GET, HEAD, or OPTIONS request. It never automatically resends a Write tool after a transport failure because the API may already have completed the action.

Stand-in access

04

Attach the integration from Skills.

Open the Stand-in row, click Edit, and choose Skills. Turn on Use integrations and check the team integration instances this Stand-in may use. Save the Stand-in, then use Try it out with a question that requires live data.

The model receives only normalized tools from integrations attached to that Stand-in. Removing the integration from the Stand-in or deleting the team integration refreshes active Stand-in sessions.

Practice

Try this next

  1. 01Create one public read-only integration.
  2. 02Attach it to one test Stand-in.
  3. 03Ask a question whose answer changes over time.
  4. 04Check that the answer comes from the live API rather than the prompt or knowledge base.
  5. 05Remove the attachment and verify the Stand-in no longer uses that tool.

Security and limits

05

Stand keeps the network boundary narrow.

OpenAPI declarations and API responses are treated as untrusted data. Stand resolves bounded local reference chains, including schema aliases, and rejects remote, cyclic, or excessively deep references. Imports have liberal limits for document size, schema depth, operation count, and descriptions.

Stand resolves the configured host to public addresses and pins each outbound connection to a validated address. Configuration checks bound DNS resolution to five seconds; runtime resolution shares the eight-second call deadline. Redirects are not followed. Private, loopback, link-local, metadata, and internal hostnames are blocked at configuration and execution time.

Credentials are encrypted in a separate database table and injected only into outbound headers. Authentication secrets must contain at least eight characters so echoed credentials can be redacted without destroying ordinary response text. They are not included in model tools; when the declaration includes the configured API-key header, Stand satisfies it from the stored credential instead of asking the model or visitor. Stand redacts direct and commonly encoded credential echoes from tool results. Inputs are checked against the imported schema, calls are rate-limited, requests and responses are bounded, and external tool names, descriptions, schemas, and output are labeled as untrusted data for the model.

Self-hosted environments must configure STANDCHAT_INTEGRATIONS_CREDENTIAL_KEY as a Base64-encoded 32-byte key. The same key encrypts credentials and signs visitor write confirmations. Without it, Stand permits only public read-only integration tools.

Configure only API hosts your team trusts. The selected host necessarily receives its credential and operation inputs; a generic connector cannot prevent that host from transforming or forwarding data it legitimately receives. Stand requires the secret again before an authenticated integration can change its base URL or authentication metadata, and validates the resulting authentication header together with every selected or retained tool before save.

ConstraintOpenAPI declaration
Limit2,000,000 characters
ConstraintIntegration configuration request body
Limit5 MB before JSON parsing
ConstraintOutbound tool request body
Limit128 KiB of serialized JSON
ConstraintOutbound request target
Limit16,384 ASCII characters, including the base path, operation path, and query
ConstraintOutbound custom request headers
Limit32 KiB combined, including authentication and content type
ConstraintOperations in an import
Limit300
ConstraintSelected tools per integration
Limit50
ConstraintIntegration tools per Stand-in
Limit64
ConstraintSchema depth
Limit20
ConstraintOpenAPI preview/create/re-import
Limit20 requests per rep per minute
ConstraintExternal response returned to the model
Limit32,000 characters after a 256 KB network cap
ConstraintOutbound call duration
Limit8 second total deadline, with at most 5 seconds connecting

Troubleshooting

06

Test the contract before changing the prompt.

Start with the integration configuration and one direct Try it out question. The error category usually identifies whether the contract, network boundary, authentication, Stand-in attachment, or confirmation step needs attention.

Common failures

What to check

Host rejected
Use a public HTTP or HTTPS hostname and, when specified, a port from 1 through 65535. Localhost, private networks, metadata hosts, and internal DNS suffixes are blocked.
Preview has no tools
Confirm the declaration has a paths object with HTTP operations and that local references resolve.
Authentication fails
Verify the auth mode, API key header name, username, and secret. Secrets are entered separately from the declaration and must contain at least eight characters.
Stand-in does not call the API
Confirm Use integrations is enabled, the correct instance is checked, and the operation summary clearly matches the question.
Write does not run
The visitor must send a later message containing exactly confirm or confirmed.
Response is unavailable
The service may have timed out, returned a binary or compressed body, exceeded the response cap, redirected, or hit the per-integration rate limit.

Questions

Common reader notes

Do I need to run an MCP server for a REST API?

No. For an existing REST API, OpenAPI is the direct path and keeps the Stand deployment in one backend service. This beta currently supports OpenAPI integrations.

Can every rep create an integration?

Yes. Integrations are team-shared and do not require an internal approval workflow.

Can the model see my API token?

The model is not given the configured token. Stand decrypts and injects it only while making the outbound request and redacts direct or commonly encoded echoes from the result. Configure only trusted API hosts because that host necessarily receives the token.

Continue the guide

Build Stand as a learning loop, one chapter at a time.

Try the guide on one real page.