a870e034a6
- adds `twenty-slack` to internal application ci - unify config with twenty-last-contact app - add base oxlint config to show error twenty-shared is used in internal app <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/twentyhq/twenty/pull/21849?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. -->
twenty-exa
Exposes Exa structured web search to Twenty AI agents
(chat + workflow agents + MCP) as the app_exa_web_search tool.
Installation
- Register the app on the Twenty server once (admin API / UI):
twenty-exafrom npm. - Set
isPreInstalled=trueon the registration so it's installed on every new workspace. Existing workspaces can be backfilled via theinstall-pre-installed-appsCLI command. - Set the
EXA_API_KEYserver variable on the registration to your Exa API key. The value is injected into every logic function execution — no per-workspace configuration needed.
Billing
The handler calls Twenty's generic app billing endpoint
(POST /app/billing/charge) using the application access token injected
into the execution env. Pricing mirrors Exa's auto-search tier: $0.007
base (10 results) + $0.001 per additional result.