Connectors & Integrations
Connectors are how Formael interfaces with the external world. Each connector implements capabilities for a specific provider - handling authentication, API calls, response normalization, and error handling so your agents never have to.
The provider model
Your agents never know which provider implements a capability. They target capabilities by name; Formael resolves the correct connector based on your organization's Provider Bindings.
Agent: { "domain": "finance", "action": "create", "entity": "invoice" }
↓
Formael: Provider Binding → finance → Xero
↓
Xero connector executes, returns normalized resultSwitching providers is a configuration change. If you migrate from Xero to Stripe, update your Provider Binding - no changes to your agents, policies, or audit trail.
Connector catalog
Finance
| Connector | Capabilities |
|---|---|
| Xero | finance.create.invoice, finance.approve.invoice, finance.record.payment, finance.issue.refund, finance.create.subscription, finance.cancel.subscription |
| Stripe | finance.create.invoice, finance.issue.refund, finance.create.subscription, finance.cancel.subscription |
ITSM
| Connector | Capabilities |
|---|---|
| Jira | itsm.create.ticket, itsm.update.ticket, itsm.escalate.ticket, itsm.close.ticket, itsm.create.change-request, itsm.approve.change-request, itsm.change.priority |
| Linear | itsm.create.ticket, itsm.update.ticket, itsm.close.ticket |
| Asana | itsm.create.ticket, itsm.update.ticket |
| Monday.com | itsm.create.ticket, itsm.update.ticket |
| ClickUp | itsm.create.ticket, itsm.update.ticket |
| Trello | itsm.create.ticket |
Contracting
| Connector | Capabilities |
|---|---|
| DocuSign | contracting.create.draft, contracting.send.for-signature, contracting.sign, contracting.void, document-signing.create.contract, document-signing.get.status |
| PandaDoc | contracting.create.draft, contracting.send.for-signature, document-signing.create.contract, document-signing.create.quote |
| HelloSign | contracting.create.draft, document-signing.create.contract |
Identity
| Connector | Capabilities |
|---|---|
| Okta | identity.provision.account, identity.deprovision.account, identity.reset.password, identity.grant.role, identity.revoke.role, identity.grant.group-membership, identity.revoke.group-membership |
| BambooHR | identity.provision.account, identity.deprovision.account, hr.create.employee, hr.update.employee |
| Gusto | hr.create.employee, hr.run.payroll-action |
| Workday | hr.create.employee, hr.update.employee |
Sales / CRM
| Connector | Capabilities |
|---|---|
| HubSpot | sales.create.contact, sales.update.deal, sales.create.quote, crm.create.contact, crm.create.deal, crm.update.contact, crm.create.note |
| Salesforce | sales.create.contact, sales.update.deal, crm.create.contact, crm.create.opportunity, crm.update.contact |
| Pipedrive | sales.create.contact, sales.update.deal, crm.create.deal |
| Zoho CRM | sales.create.contact, crm.create.lead |
Messaging
| Connector | Capabilities |
|---|---|
| Slack | messaging.send.message, messaging.send.directMessage, messaging.create.meeting |
| Microsoft Teams | messaging.send.message, messaging.send.directMessage, messaging.create.meeting |
| Discord | messaging.send.message |
| Connector | Capabilities |
|---|---|
| SendGrid | email.send.email, email.send.template |
| Mailgun | email.send.email, email.send.template |
| Postmark | email.send.email, email.send.template |
| Amazon SES | email.send.email |
File Storage
| Connector | Capabilities |
|---|---|
| Google Drive | storage.upload.file, storage.read.file, storage.create.file |
| Dropbox | storage.upload.file, storage.read.file |
| OneDrive | storage.upload.file, storage.read.file |
| Box | storage.upload.file, storage.read.file, storage.share.file |
Calendar
| Connector | Capabilities |
|---|---|
| Google Calendar | calendar.create.event, calendar.update.event, calendar.cancel.event |
| Outlook Calendar | calendar.create.event, calendar.update.event |
| Calendly | calendar.create.booking, calendar.cancel.booking |
Configuring provider bindings
Provider Bindings connect a capability domain to a specific connector for your organization. Configure them in Settings → Integrations.
Setting up a new integration
- Navigate to Settings → Integrations → Add Integration
- Select the provider (e.g., Xero)
- Authenticate - OAuth2 flows launch directly in the dashboard; API key credentials are entered in a secure form
- Select which capability domains this provider handles for your organization
- Save - the binding is immediately active
Formael stores provider credentials encrypted at rest. They are decrypted only at the moment of connector execution and are never logged or returned via any API.
Credential management
| Action | Where |
|---|---|
| Rotate credentials | Settings → Integrations → Provider → Rotate |
| Revoke a connection | Settings → Integrations → Provider → Disconnect |
| View credential status | Settings → Integrations → Provider → Status |
Credential rotation is zero-downtime - the new credential is validated before the old one is invalidated.
Connector reliability
Each connector handles provider-specific reliability concerns:
Rate limiting. Connectors track per-provider rate limits and surface 429 responses as failed_retryable outcomes with backoff guidance.
Error normalization. Provider-specific error codes are mapped to Formael's normalized error taxonomy. Your agents receive a consistent error structure regardless of which provider responded.
Response normalization. Provider responses are translated to the capability's defined return schema. Your agent always receives the same structure for finance.create.invoice, regardless of whether Xero or Stripe executed it.
Org Connector Overrides
When your organization adds custom fields to a capability's parameter schema - for example, an internalReferenceId field on finance.create.invoice - the connector's default parameter mapping doesn't know about them. Org Connector Overrides let you patch a connector's behavior for your organization without building a custom integration.
An override is configured per capability and applied automatically at execution time.
What overrides can do
| Override type | Example |
|---|---|
| Map additional parameters | Route your custom internalReferenceId field to the provider's metadata.reference field |
| Change default values | Set the connector's default priority to high for every request from your organization |
| Add request headers | Include an org-specific X-Internal-Tracking header on every request to this provider |
| Extend response extraction | Pull an additional field from the provider's response into the normalized result |
What overrides cannot do
Overrides are intentionally shallow. They are not programmable. The following require a full custom integration instead:
- Changing the connector's authentication method
- Replacing the provider's base URL
- Adding conditional logic or multi-step flows
Configuring an override
Navigate to Settings → Integrations → [Provider] → Overrides and select the capability you want to customize. The override editor lets you define your parameter mappings and test them before saving.
Testing an override before it goes live
Use the dry-run endpoint to preview how an override would transform a sample intent without affecting live execution:
POST /manage/v1/connectors/{connectorId}/overrides/{domain}/{action}/{entity}/testPass a sample intent body and the response shows exactly how the override would modify the outbound request and extract the response.
Requesting new connectors
Don't see the integration you need? Contact us to request a connector. Connectors added to the catalog are available to all Formael organizations.