## What - The SDK manifest build now sources an app's `aboutDescription` (the long-form "About" tab content) from its `README.md`. An explicit `aboutDescription` in the config still wins, matching the existing marketplace CDN fallback. - Removed the now-duplicated `aboutDescription` from internal app configs and deleted the standalone `ABOUT_DESCRIPTION` constant files. - Rewrote internal app READMEs to read as user-facing About content: stripped developer/build/source-path noise, and expanded the thin ones. `call-recording` and `self-hosting` (one-liners over substantial apps) and `people-data-labs` were rewritten from a close reading of the code; `twenty-exa` was verified for accuracy. - Added a unit test (and a fixture README) covering README → `aboutDescription` in the build. ## Why The README and the About description were maintained separately and drifted. Making the README the single source keeps the About tab accurate and removes duplicated copy. ## Notes for reviewers - Internal apps depend on the published `twenty-sdk`, so the build change takes effect for them after an SDK release + dependency bump. Until then, published apps still get README → `aboutDescription` via the marketplace CDN sync. - Standard/Custom app descriptions are unchanged (they are resolved in the frontend, not via the manifest). <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/twentyhq/twenty/pull/22012?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. -->
Exa
Structured web search powered by Exa, available to Twenty's AI agents as the exa_web_search tool. When an agent needs fresh, entity-aware information from the web (companies, people, research, news, and more), it can call Exa directly from chat and answer with live results.
What it does
This app adds a single AI tool, exa_web_search, to your workspace. Twenty AI agents can invoke it to run a search through Exa and receive structured, entity-aware results. It is designed to surface high-quality matches for companies, people, research papers, news, and similar entities rather than generic page links.
The tool reads no workspace data. It only uses the search query the agent provides and your configured Exa API key, calling Exa's external API to return results.
How agents use it
The tool accepts the following inputs:
- query (required) — the search query to send to Exa.
- category (optional) — narrows results to a specific type. Supported values:
company,research paper,news,pdf,personal site,financial report,people. When omitted, Exa searches across all types. - numResults (optional) — how many results to return, between
1and30. Defaults to10.
Agents choose these values automatically based on what they are trying to find, so no manual configuration is needed once the app is set up.
Setup
The app requires an Exa API key, configured once by the server administrator:
- EXA_API_KEY (required, secret) — your Exa API key. It is set on the app after installation and injected into every search. There is no per-workspace configuration; the same key serves all searches.
If the key is not set, searches fail with an error until an administrator provides it.
Billing
Each successful search consumes credits, mirroring Exa's auto-search pricing: a base cost of $0.007 covers the first 10 results, plus $0.001 for each additional result. Charges are based on the number of results actually returned, not the number requested.
Limitations
- Returns at most 30 results per search.
- Results come live from Exa's external API, so the app depends on Exa's availability and on a valid API key being configured.
- The tool only performs web search; it does not read from or write to your workspace data.