# Droost module

> Droost, the Drupal module: an agent asks the live site about itself and changes it through checked, gated writes. What it is, what to enable where, and how to install it.

The Droost module provides tools that read the running Drupal site and work
with its content and configuration. Agents can discover installed modules,
entity types, fields, services and logs through structured JSON:

```bash
drush droost:tool                                      # the tools, by what they are about
drush droost:tool droost_entities help                 # what one does, and its arguments
drush droost:tool droost_entities '{"entity_type_id":"node"}'
```

Each call returns one envelope, `{success, message, data}`, and runs as its
own drush process, so it answers from the code on disk.

## Tool API, so everything reaches it

Every Droost tool is a [Tool API](https://www.drupal.org/project/tool)
tool. Besides `drush droost:tool`, the same tools answer through
`drush tool:run`, Drupal AI's function calling, and MCP Server's Tool API
bridge. Every route in checks the tool's permission and its declared inputs
before it runs.

## What to enable, and where

| Module | What it adds | Where |
|---|---|---|
| `droost` | the content tools: entities, content queries, Views results, URLs, tokens | any site, production included |
| `droost_canvas` | Canvas pages and trees, page variants, component toggles, a component lint | content tools: any site; the rest: development |
| `droost_mcp` | the content tools over MCP, for editors | any site |
| `droost_build` | site building: configuration, fields, bundles, Views, displays, components | development and staging |
| `droost_dev` | developer tools: routes, services, logs, the database, modules, PHP evaluation | local development only |
| `droost_ai` | the site's AI function calls | local development only |
| `droost_devel` | generated content, through Devel | local development only |

The build and developer tools refuse any web request, so they cannot be
reached over MCP or HTTP whatever an account holds.
[Tools and permissions](https://droost.org/docs/module-tools.md) lists every tool.

## Install

Tool API is still in beta. Composer ignores a dependency's own stability
flags, so the site requires it at that stability itself:

```bash
composer require 'drupal/tool:^1.0@beta' 'drupal/droost:^2.0'
drush en droost
drush en droost_build droost_dev     # a development copy only
```

- **A module that depends on a submodule** (Droost UI Kit needs
  `droost_build`) resolves it from drupal.org as its own package: require
  `'drupal/droost_build:^2.0'` beside droost.
- **twig 3.30.0** breaks Drupal's escape filter, and droost refuses it. If
  your project has it locked, run `composer require -W …` so twig can move.

## For agents

droost ships a skill, `droost-tools`, that tells an agent which tool does
what, the permissions and the write rules. The `droost` command's
`droost init` installs it into `.claude/skills/` when the module is on disk,
and removes it when the module is gone.

## Where to look

- `/admin/reports/droost`: a read-only status page.
- `/admin/config/development/droost`: every write gate and its state.

## Next

- [Tools and permissions](https://droost.org/docs/module-tools.md): all 54 tools, by group.
- [Write gates](https://droost.org/docs/module-gates.md): why a write refuses, and who can unlock it.
- [Over MCP, for editors](https://droost.org/docs/module-mcp.md).
- [Extending](https://droost.org/docs/module-extending.md): add a tool of your own.
- Coming from 1.x or a 2.0 alpha? [Upgrading](https://droost.org/docs/upgrading.md) first.
