# Reintersect Developers > Build Reintersect apps: interactive blocks, references for your links, slash commands, message actions, events, agent tools and MCP servers. - [Build apps for Reintersect](https://developers.reintersect.com/index.md): What a Reintersect app can do, how it reaches a workspace, and where to start. - [Quickstart](https://developers.reintersect.com/quickstart.md): Scaffold an app, run it against your workspace and change your first block. - [Apps, versions and installs](https://developers.reintersect.com/concepts/apps-and-installs.md): The objects Reintersect keeps for your app: the app record, its versions and its installs. - [Install, consent and reach](https://developers.reintersect.com/concepts/install-and-consent.md): How a workspace installs your app, what admins approve, which circles your app can read and write, and what happens when a new version asks for more. - [Composing an app](https://developers.reintersect.com/concepts/composition.md): Apps are built from standalone pieces. Each piece declares what it needs, and the app only compiles when every need is met. - [Environment and install config](https://developers.reintersect.com/concepts/env-and-config.md): Typed environment variables and secrets per environment, typed per-workspace install config, and per-member connections. - [Blocks](https://developers.reintersect.com/blocks/overview.md): Interactive cards your app places in conversations. You define the props, state and view; Reintersect stores, renders and syncs them. - [State and actions](https://developers.reintersect.com/blocks/state-and-actions.md): Store block state in Reintersect, change it with named actions, and push updates from your own systems. - [Viewer inputs, votes and tallies](https://developers.reintersect.com/blocks/viewer-inputs.md): Choices each member makes on their own, stored by Reintersect, with live counts and voter lists your app never has to compute. - [Sections and forms](https://developers.reintersect.com/blocks/sections-and-forms.md): Expand a block in place to collect more input: toggle buttons open sections, sections hold forms, and forms submit to typed actions. - [Audience and lifecycle](https://developers.reintersect.com/blocks/audience-and-lifecycle.md): Show parts of a block to specific people, lock a block when it's done, reopen it, and remove it. - [Rendering and read-only views](https://developers.reintersect.com/blocks/rendering.md): How Reintersect draws your block in conversations, on share pages, in connected workspaces and for agents. - [Limits](https://developers.reintersect.com/blocks/limits.md): Hard limits on block trees, text lengths, actions, manifests, references and hosted apps, and the messages the validator reports. - [Slash commands](https://developers.reintersect.com/commands.md): Give members a /command in chat. They fill in typed options, and your app answers in the chat or privately to them, with content and an optional live block. - [Message actions](https://developers.reintersect.com/message-actions.md): Add items to the menu on chat messages, direct messages, posts and replies. Your app receives the message, and as much context around it as you ask for, and answers in place. - [Progress updates](https://developers.reintersect.com/progress-updates.md): Stream a command's or message action's answer from an async generator or an Effect Stream, so its content, notice and block move through the stages of long work. - [Writing to circles](https://developers.reintersect.com/writing-to-circles.md): Post into a circle by use case: event feeds such as CI runs, deploys and alerts go to your app's stream, and conversational writes become chat messages and replies. - [References](https://developers.reintersect.com/references/overview.md): Teach Reintersect your links. When a member pastes a URL your app recognizes, Reintersect shows it as a live chip, link or card. - [URL patterns](https://developers.reintersect.com/references/patterns.md): The pattern grammar for reference kinds, with allowed and rejected examples, inferred parameters and the error messages TypeScript shows. - [Resolving references](https://developers.reintersect.com/references/resolving.md): Turn a matched URL into core fields, an access result, or a custom card, and choose who may see it. - [Search](https://developers.reintersect.com/references/search.md): Let members find your objects from the slash menu and insert them as references. - [Keeping references current](https://developers.reintersect.com/references/updates.md): Push new fields to every occurrence of a reference, or ask Reintersect to resolve it again. - [Domain verification](https://developers.reintersect.com/references/domain-verification.md): Prove you control the domains your reference patterns claim before they go live in other workspaces. - [Events](https://developers.reintersect.com/events/overview.md): React to what happens in a workspace: installs, your blocks and references, decisions, call recaps, new posts and replies, mentions of your app, and the conversations Reintersect finds in chat. - [Event catalog](https://developers.reintersect.com/events/catalog.md): Every lifecycle event, the scope it needs, and its payload. - [Webhooks and security](https://developers.reintersect.com/webhooks-and-security.md): How Reintersect signs and delivers requests to your app, the 5 second interactive deadline, deferred answers, idempotency and authorization. - [Search and memories](https://developers.reintersect.com/search-and-memories.md): Put your app's objects in Reintersect's search, and save facts to workspace memory credited to your app. - [Agents](https://developers.reintersect.com/agents.md): How the Reintersect agent reads your blocks and references, inserts your blocks, runs your actions and asks members before anything changes. - [Agent builder](https://developers.reintersect.com/agent-builder.md): Ask a coding agent in Reintersect to build an app: it writes the code in its sandbox, shows you a preview, and asks an admin to publish. - [MCP servers](https://developers.reintersect.com/mcp/overview.md): Give the Reintersect agent tools from a remote MCP server: one an admin adds by URL, or one your app serves. - [MCP authentication](https://developers.reintersect.com/mcp/authentication.md): How Reintersect gets a credential for each member: your own OAuth server, or a token Reintersect signs for every call. - [Server handlers](https://developers.reintersect.com/mcp/servers.md): Serve an MCP server from your app with addMcp, and verify Reintersect-signed tokens anywhere with verifyReintersectToken. - [Reintersect-hosted apps](https://developers.reintersect.com/hosting/reintersect-hosted.md): Deploy with one command and let Reintersect run your app on Cloudflare Workers, with an outbound allowlist and no credentials in your code. - [Self-hosted apps](https://developers.reintersect.com/hosting/self-hosted.md): Mount your app in Next.js, Hono, Bun, Deno, Node, Workers or an Effect server, and give it the credentials it needs. - [HTTP routes](https://developers.reintersect.com/hosting/routes.md): Receive webhooks from your own services and other APIs with typed routes, and act on any install from them. - [Previews and versions](https://developers.reintersect.com/hosting/previews.md): Preview a version on your own development install, open pull request previews in the playground, and publish to production. - [GitHub Action](https://developers.reintersect.com/ci.md): Deploy from GitHub with reintersect/deploy@v1. It authenticates with OIDC, so your repository stores no Reintersect secret, and deploys previews for pull requests and production from the default branch. - [Testing](https://developers.reintersect.com/testing.md): Test blocks, actions, references, events, commands and message actions against a fake Reintersect host, with Vitest, bun test or @effect/vitest. - [Component catalog](https://developers.reintersect.com/components/overview.md): The closed set of components blocks are built from, what Reintersect decides for you, and what's deliberately left out. - [Frame components](https://developers.reintersect.com/components/frame.md): Block, Header, Section, Footer and Divider: the outer structure of every block. - [Layout components](https://developers.reintersect.com/components/layout.md): Stack, Row, Columns, Column and Callout arrange content without exposing pixels. - [Text components](https://developers.reintersect.com/components/text.md): Text, Heading, Prose, Code, Quote, Time, Duration, Icon and the rich text components. - [Data components](https://developers.reintersect.com/components/data.md): Badges, statuses, people, lists, metrics, tables, charts, images, files and references. - [Interactive components](https://developers.reintersect.com/components/interactive.md): Button, Actions, Menu, ChoiceGroup, Form, Toggle, Select, TextInput, DateTimePicker and Tabs. - [Recipes](https://developers.reintersect.com/recipes/overview.md): Ready-made block types for common jobs, built only from catalog components. - [Approval](https://developers.reintersect.com/recipes/approval.md): Ask named approvers to approve or reject a request. Reject asks for confirmation, and either decision locks the block with a summary. - [Poll](https://developers.reintersect.com/recipes/poll.md): A single or multiple choice poll with live counts from Reintersect. Votes can be anonymous, and the creator closes the poll to announce the winner. - [Deployment](https://developers.reintersect.com/recipes/deployment.md): Show a deployment's steps and status as your pipeline pushes updates, with links to the release and logs, cancel and retry. - [Incident](https://developers.reintersect.com/recipes/incident.md): Track an incident from investigating to resolved, post updates from an inline form and resolve with a final summary. - [Ticket](https://developers.reintersect.com/recipes/ticket.md): A ticket card with status, priority, tags and assignee. Use it as an inserted block or as the block for links to your tracker. - [Checklist](https://developers.reintersect.com/recipes/checklist.md): A shared list where anyone can check items off, with progress, a finished state and a guarded reset. - [Metrics panel](https://developers.reintersect.com/recipes/metrics-panel.md): Headline metrics with trends and a chart. Several ranges show as tabs, and your app pushes fresh numbers when they change. - [RSVP](https://developers.reintersect.com/recipes/rsvp.md): Going, maybe or can't go, with a headcount, an optional capacity bar and organizer-only details and controls. - [Build with Effect](https://developers.reintersect.com/effect.md): When to use the Effect API instead of the Promise API, what to install, the Effect entry points and a complete Effect app. - [Handlers and schemas](https://developers.reintersect.com/effect/handlers.md): The three forms an Effect handler can take, what's in its context, how Effect Schema decodes and encodes, and how to declare environment values, secrets and install config. - [Blocks and references](https://developers.reintersect.com/effect/blocks-and-references.md): Define blocks, actions and views as Effects, write components that return an Effect, insert blocks with encoded state, and resolve your links with Effect handlers. - [Commands, message actions, events and routes](https://developers.reintersect.com/effect/commands-and-events.md): Write slash commands, message actions, lifecycle events, HTTP routes and MCP servers as Effect handlers. - [Deferred answers](https://developers.reintersect.com/effect/deferring.md): Answer a command or message action after the delivery returns with defer(effect, { visibility }), handle failures in the deferred Effect, and answer from a worker. - [Services and layers](https://developers.reintersect.com/effect/services-and-layers.md): How an Effect app tracks the services its handlers need, how to provide them with provide(app, layer), and how to serve the app with ReintersectApp.layer on HttpLayerRouter. - [Errors](https://developers.reintersect.com/effect/errors.md): How Effect handlers fail, what each kind of failure does for the member, the tagged errors the SDK and the Reintersect API raise, and catchTag patterns for handling them. - [Client and streams](https://developers.reintersect.com/effect/client-and-streams.md): Call the Reintersect API from Effect handlers, routes, jobs and scripts with the Effect app client, post to app streams, render payloads and use the member API client. - [Testing](https://developers.reintersect.com/effect/testing.md): Test an Effect app against a fake Reintersect host with @effect/vitest: makeTestHost, ReintersectTestHost.layer, fake services, TestClock and typed test failures. - [SDK entry points](https://developers.reintersect.com/reference/sdk-entrypoints.md): What each @reintersect/sdk entry point exports, how to configure JSX, and which schema libraries the SDK accepts. - [Client](https://developers.reintersect.com/reference/client.md): Call the Reintersect API as your app: the client in handlers, forInstall, createReintersectClient, the Effect client, renderPayload and errors. - [CLI](https://developers.reintersect.com/reference/cli.md): Every reintersect command, its flags, its JSON output and the checks it runs. - [Manifest](https://developers.reintersect.com/reference/manifest.md): The description of your app that Reintersect derives from code and stores with every version. - [Scopes](https://developers.reintersect.com/reference/scopes.md): Every scope an app can request, what it allows, and which client methods and events need it. - [Delivery protocol](https://developers.reintersect.com/reference/delivery-protocol.md): The HTTP requests Reintersect sends to your app and the responses it expects, for implementers who don't use the SDK. - [HTTP API overview](https://developers.reintersect.com/api-reference/overview.md): Base URL, credentials, reach, errors and compatibility rules for the endpoints apps and their tooling call. - [Errors](https://developers.reintersect.com/api-reference/errors.md): Every error tag the app and tooling endpoints return, with its status and fields. - [Install link](https://developers.reintersect.com/api-reference/install/authorize.md): Send a workspace admin to Reintersect to approve your app, and get a code back. - [Exchange an install code](https://developers.reintersect.com/api-reference/install/token.md): Trade the code from the install redirect for the install id. - [Create an install token](https://developers.reintersect.com/api-reference/install/access-tokens.md): Mint a one-hour install token for one install with your app's client credentials. - [Insert a block](https://developers.reintersect.com/api-reference/blocks/insert.md): Post a new block of one of your types as a message from your app, outside any interaction. - [Get a block](https://developers.reintersect.com/api-reference/blocks/get.md): Read one of your install's blocks: props, state, version and whether it's final. - [Update a block](https://developers.reintersect.com/api-reference/blocks/update.md): Merge a partial state into one of your blocks and re-render it. - [Replace block state](https://developers.reintersect.com/api-reference/blocks/replace.md): Replace the whole state of one of your blocks and re-render it. - [Revalidate a block](https://developers.reintersect.com/api-reference/blocks/revalidate.md): Ask Reintersect to render one of your blocks again without changing its state. - [Query blocks](https://developers.reintersect.com/api-reference/blocks/query.md): Page through your install's blocks of one type whose state matches. - [Update blocks by state](https://developers.reintersect.com/api-reference/blocks/update-where.md): Merge state into every block of one type whose state matches. - [Revalidate a reference](https://developers.reintersect.com/api-reference/references/revalidate.md): Ask Reintersect to resolve one of your references again in this workspace. - [Push reference fields](https://developers.reintersect.com/api-reference/references/push.md): Update the stored fields of one of your references without a resolve. - [Create a reply](https://developers.reintersect.com/api-reference/replies/create.md): Post a message authored by your app: in a conversation, as a reply, or in a circle's chat. - [Send a stream event](https://developers.reintersect.com/api-reference/streams/send-event.md): Post an event, such as a CI run, a deploy or an alert, to your app's stream in a circle. - [Send a notification](https://developers.reintersect.com/api-reference/notifications/create.md): Send an inbox and push notification to a member, as your app. - [Answer a deferred invocation](https://developers.reintersect.com/api-reference/invocations/respond.md): Send the answer to a slash command or message action your app deferred. - [Upsert a search object](https://developers.reintersect.com/api-reference/search/upsert-object.md): Add or update one of your objects in Reintersect search. - [Delete a search object](https://developers.reintersect.com/api-reference/search/delete-object.md): Remove one of your objects from Reintersect search. - [Save a memory](https://developers.reintersect.com/api-reference/memories/create.md): Save a fact to workspace memory, credited to your app. - [Exchange a GitHub OIDC token](https://developers.reintersect.com/api-reference/deploy/oidc-token.md): Trade a GitHub Actions OIDC token for a short-lived deploy token. - [Upload a hosted version](https://developers.reintersect.com/api-reference/deploy/versions.md): Upload a Workers bundle and its manifest as a new version of a hosted app. - [Sync a manifest](https://developers.reintersect.com/api-reference/deploy/manifest-sync.md): Record a new version of a self-hosted app from its manifest. - [Sync the development app](https://developers.reintersect.com/api-reference/deploy/dev-app.md): Create or update your personal development app and its development install. - [List environment variables](https://developers.reintersect.com/api-reference/deploy/env-list.md): List an app's environment variable names, never their values. - [Set an environment variable](https://developers.reintersect.com/api-reference/deploy/env-set.md): Store an environment variable for one environment of an app. - [Remove an environment variable](https://developers.reintersect.com/api-reference/deploy/env-remove.md): Delete an environment variable from one environment of an app. - [List runtime logs](https://developers.reintersect.com/api-reference/deploy/logs.md): Read recent runtime logs of a Reintersect-hosted app. - [Get the published manifest](https://developers.reintersect.com/api-reference/tooling/get-manifest.md): Read the manifest of an app's published version or latest preview. - [Check block trees](https://developers.reintersect.com/api-reference/tooling/check-trees.md): Validate rendered block trees with the same validator Reintersect runs when it stores them. - [CLI sign-in](https://developers.reintersect.com/api-reference/tooling/cli-device.md): The device code flow behind reintersect login. - [Development relay](https://developers.reintersect.com/api-reference/tooling/dev-relay.md): The WebSocket that carries deliveries to reintersect dev. - [Signing keys](https://developers.reintersect.com/api-reference/jwks.md): The public keys for Reintersect-signed call tokens. This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.