Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.useterse.ai/llms.txt

Use this file to discover all available pages before exploring further.

Skills define what integrations your workflow can interact with. Each skill exposes a set of tools that the agent can call (via agentic loops) or that you can call deterministically (via agent.tools.*). In TypeScript, terse generate writes a single Skills object in src/terse.generated.ts. Import it and call the nested factory for the integration you want (for example Skills.github({ repos: [...] })). Built-in capabilities like Skills.web() and Skills.imageEdit() are documented in their sections below.

GitHub

Read-only access to repositories.
skills: [Skills.github({ repos: [Repos.MyOrg.MyRepo] })]
ToolDescriptionAccess
searchGitHubCodeSemantic code search across repositoriesRead
grepGitHubCodeExact-match code search (grep-like)Read
readGitHubFileRead file contentsRead
listGitHubDirectoryList directory contentsRead
listGitHubPullRequestsList pull requestsRead
listGitHubCommitsList commitsRead
summarizeGitHubPullRequestDiffSummarize PR changesRead

Slack

Send messages and read conversations.
skills: [Skills.slack({ channel: SlackChannel.Engineering })]
ToolDescriptionAccess
slack_send_messageSend to a channel, an existing DM (channelId), or a member 1:1 (slackUserId)Write
slack_list_usersList workspace usersRead
slack_list_channelsList channelsRead
slack_read_conversationRead conversation historyRead
For slack_send_message, pass either channelId (a public or private channel id, or an existing DM channel id) or slackUserId (a member id, U…). Terse opens the DM if needed. If you pass both, channelId wins and the message goes there. After terse generate, use SlackChannel.*.channelId and SlackUser.*.userId from src/terse.generated.ts instead of hand-copying ids.

Linear

Create, update, and search issues.
skills: [Skills.linear()]
ToolDescriptionAccess
linear_search_ticketSearch ticketsRead
linear_get_teamsList teamsRead
linear_get_statesGet issue statesRead
linear_get_labelsGet available labelsRead
linear_get_projectsList projectsRead
linear_get_usersList team membersRead
linear_read_ticketRead ticket detailsRead
linear_create_ticketCreate a new ticketWrite
linear_update_ticketUpdate a ticketWrite
linear_add_commentAdd a comment to a ticketWrite

Attio

Query and manage CRM records.
skills: [Skills.attio({ object: AttioObject.People })]
ToolDescriptionAccess
attio_list_objectsList available objectsRead
attio_query_recordsQuery recordsRead
attio_upsert_recordCreate or update a recordWrite

Notion

Read and write databases and pages. Optionally scope to specific databases or pages.
import { NotionDatabase, NotionPage, Skills } from "./terse.generated"

skills: [Skills.notion({ databases: [NotionDatabase.Roadmap], pages: [NotionPage.OnCallRunbook] })]
databases and pages are both optional. Omit them to give the model access to every database and page the integration can reach.
ToolDescriptionAccess
notion_get_schemaGet database schemaRead
notion_query_databaseQuery a databaseRead
notion_query_pageQuery page contentRead
notion_list_usersList workspace usersRead
notion_create_or_update_database_rowCreate or update database rowsWrite
notion_create_or_update_pageCreate or update standalone pagesWrite
notion_modify_blocksModify page blocksWrite

Gmail

Send emails (auto-send, no human review).
skills: [Skills.gmail()]
ToolDescriptionAccess
gmail_send_emailSend emails or reply to threadsWrite

Gmail Draft

Create draft emails for a human to review and send manually.
skills: [Skills.gmailDraft()]
ToolDescriptionAccess
gmail_create_draftCreate draft emails for human reviewWrite

Snowflake

Read-only SQL query execution.
skills: [Skills.snowflake()]
ToolDescriptionAccess
snowflakeExplainQueryExplain query execution planRead
snowflakeExecuteQueryExecute SELECT queries (requires approval)Read

Datadog

Read-only access to logs and RUM events. Optionally scope to specific log indexes.
import { DatadogIndex, Skills } from "./terse.generated"

skills: [Skills.datadog({ indexes: [DatadogIndex.Main] })]
indexes is optional. Omit it to search across every index the integration can reach.
ToolDescriptionAccess
searchDatadogLogsSearch logsRead
listRumEventsList RUM eventsRead
searchRumEventsSearch RUM eventsRead
aggregateRumEventsAggregate RUM event dataRead

PostHog

Read-only access to product analytics.
import { PosthogProject, Skills } from "./terse.generated"

skills: [Skills.posthog({ project: PosthogProject.MyTeam })]
ToolDescriptionAccess
searchPosthogLogsSearch logsRead
searchPosthogSessionsSearch sessionsRead
getPosthogSessionEventsGet events for a sessionRead
searchPosthogEventsSearch eventsRead

LaunchDarkly

Read-only access to feature flags.
import { LaunchDarklyProject, Skills } from "./terse.generated"

skills: [Skills.launchDarkly({ project: LaunchDarklyProject.MyFlags, environmentKeys: ["production"] })]
ToolDescriptionAccess
listLaunchDarklyFlagsList feature flagsRead
getLaunchDarklyFlagDetailsGet flag detailsRead

WorkOS

Read-only access to users and organizations.
skills: [Skills.workOS()]
ToolDescriptionAccess
listWorkOSUsersList usersRead
listWorkOSOrganizationsList organizationsRead
getWorkOSUserGet user detailsRead

Web (built-in)

Web search and research tools available to all workflows.
skills: [Skills.web()]
ToolDescriptionAccess
web_searchSearch the webRead
web_extractExtract and process web page contentRead
web_researchResearch and synthesize web informationRead

Image Edit (built-in)

Edit and generate images.
skills: [Skills.imageEdit()]
ToolDescriptionAccess
image_editEdit and manipulate imagesWrite