Integrations
The catalog is the same for every project. The integration catalog lists each integration with its authentication model, credential variables, and tools. Experimental integrations needVERYFRONT_EXPERIMENTAL_INTEGRATIONS in the project environment. Set it to all or to a comma-separated list of integration names.
Project integrations
A project integration stores how one project uses one integration:allowed_tools: The tools that agent runs andmockmode can use.nullallows every tool.config: Integration-specific settings that matchconfig_schema.execution_mode:realcalls the provider.mockruns the mock tools of the integration, for tests.scope:projectuses one shared connection.useruses the personal connection of each user.
PATCH /projects/{project_reference}/integrations/{name} changes only the fields you send. Send scope in the first update. Without it, the API stores project scope.
update-project-integration.sh
DELETE on the same path resets the settings to the defaults. It does not remove connections.
allowed_tools does not limit a direct run in real mode. There, the project permission of the credential decides: project.integrations.read, or project.integrations.connect for a tool that writes.
Connections
A connection is one authorized account. A project scope connection is shared by the project. A user scope connection is private to the user who authorized it. Access to a project does not grant access to the private connection of another user. The credential decides which connections a request sees:- API key or service account: Shared project connections only.
- Signed-in user: Their own private connections and the shared project connections.
GET /projects/{project_reference}/connections lists the connections of one project. GET /connections lists the connections of the signed-in user across projects. It rejects an API key with 401.
Each connection has a connection_generation_id. It changes when the account behind the connection is replaced.
Attaching a tool to an agent does not supply a connection. Source-defined agent capabilities belong to the Agents API.
Authentication models
The provider decides how access is established. This authorization is separate from the Veryfront credentials in Authentication and access.Managed and custom OAuth apps
A managed OAuth app lets users connect without a provider app of your own. Custom OAuth credentials take precedence, in this order: project integration credentials, project environment variables, then the managed app. Use a custom app for consent branding, provider verification, or extra scopes. A failed connection can come from a callback URL, scope, or permission problem. The returned error identifies what to check.Run an integration tool
Run a tool in four steps:- List the tools: Read the input schema of the tool.
- Select a connection: Keep its
idandconnection_generation_id. - Check readiness: Stop when the tool is blocked.
- Run the tool: Send the arguments and the selected connection.
List the tools
GET /integration-tools lists the tools the credential can run, with their input schemas. The integration tool routes take the project from the credential. If the credential is not bound to one project, send x-veryfront-project-slug.
list-integration-tools.sh
Check readiness
Readiness tells you whether a tool can run now. It reads stored metadata only and does not contact the provider. A blocked result is a response, not an error.check-integration-readiness.sh
local_eligibility.state:
blocked: The tool cannot run.local_eligibility.blockerslists the reasons.eligible: A connected OAuth connection is selected.unknown: Stored metadata cannot decide. This is normal for project credentials and formockmode. Run the tool to get the result.
403. With those credentials, skip it and run the tool.
Run the tool
POST /integration-tools/{tool_name}/run runs the tool synchronously. Put the provider arguments in arguments. expected_connection_generation_id rejects the run with 409 if the account was replaced.
run-integration-tool.sh
200 with isError: true.
When a run is denied, check readiness first. Then check the project permission of the credential and the provider permissions of the account. For an agent run or mock mode, also check allowed_tools.
SDK, GraphQL, and MCP
The SDK client runs the same flow:run-integration-tool.ts
integrationTools and integrationReadiness queries and the runIntegrationTool mutation. MCP uses veryfront__check_integration_readiness and the native tools/list and tools/call requests.
MCP lists and runs integration tools only on a project-bound request. Use a project-scoped API key or the /projects/{project_reference}/mcp endpoint. MCP does not read x-veryfront-project-slug. Pass the connection in _meta:
run-integration-tool.json
Related resources
External storage and channels use connections. They have their own operations:- External storage: Browse and manage files in an external storage provider.
- Channels: Connect a messaging platform to a project agent.