# io.bootify/mcp (remote · bootify.io)

Build Spring Boot applications, ready for coding agents, including best practices.

- Trust score: 79/100 (medium)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `bootify.io`: 79/100 (this document), [markdown](https://verifymcp.io/servers/io-bootify-mcp/bootify.md), [page](https://verifymcp.io/servers/io-bootify-mcp/bootify)

## Channel facts

- Endpoint: `https://bootify.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (deleteProject).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 7919 tokens (~138/item across 57 items; 57 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 92/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 74% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 12 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 58 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.bootify/mcp server?

io.bootify/mcp is a hosted endpoint at https://bootify.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-bootify-mcp 'https://bootify.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-bootify-mcp": {
      "url": "https://bootify.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-bootify-mcp": {
      "type": "http",
      "url": "https://bootify.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-bootify-mcp]
url = "https://bootify.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-bootify-mcp": {
      "type": "remote",
      "url": "https://bootify.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-bootify-mcp --url 'https://bootify.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-bootify-mcp:
    url: "https://bootify.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-bootify-mcp": {
      "Transport": "http",
      "Url": "https://bootify.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-bootify-mcp -t streamable-http -u 'https://bootify.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-bootify-mcp": {
      "type": "http",
      "url": "https://bootify.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-29 (score 79, +1)

- [security] Stability: 0.97 → pass

### 2026-10-27 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-20 (score 75, +1)

- [security] Tool “getProjectFile” rewrote its description, which is the text the model reads
- [cosmetic] “getProjectFile” reworded the description of “path”

### 2026-10-18 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-16 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (57)

### `startProject` (~185 tokens)

Start a Bootify project

Create a new Bootify project and return its project ID, URL, current setup and plan information. This changes server state and should only be called when the user wants a new project. Basic settings, developer preferences and database settings can be supplied during creation; omitted settings retain their defaults. All subsequent changes made through MCP are reflected live for the user at the returned project URL. Always show that URL to the user immediately after creating the project so they can follow the changes in their browser.

Input parameters:

- `buildType` (string)
- `database` (object)
- `developerPreferences` (object)
- `group` (string): A group name such as com.my-group, used for build settings and package name
- `language` (string)
- `lombokEnabled` (boolean): Ignored for Kotlin projects
- `name` (string): A project name such as my-project

Output parameters:

- `message` (string)
- `planLevel` (string): The feature level assigned to the project
- `planStatus` (string): Whether the project's plan is still valid
- `project` (object)
- `projectId` (string)
- `projectUrl` (string): The project URL that should always be shown to the user immediately after creation so they can follow all subsequent MCP changes live in their browser

### `getProject` (~127 tokens)

Get a Bootify project

Return the current basic configuration and plan information of an existing Bootify project. Entity, relation, index and other object lists are returned only when explicitly selected through details. Successful calls record MCP usage and activity for this project.

Input parameters:

- `details` (array): Without details, only basic configuration and plan information are returned. Select additional areas explicitly, for example ENTITIES, RELATIONS and INDEXES. APP_MODULES, BREAKPOINTS, REST_CONTROLLER…
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `advancedOptions` (object): Available with Bootify Professional.
- `appModules` (array): Present when APP_MODULES is requested. Includes the implicit base and web modules.
- `availableSecurityPaths` (object): Paths currently available for a new security config; use listSecurityPaths with a config name when editing it
- `breakpointStatus` (string): Present when BREAKPOINTS is requested. AVAILABLE means a new breakpoint is meaningful; NO_SCHEMA and NO_CHANGES do not allow one; LIMIT_REACHED blocks further additions.
- `breakpoints` (array): Present when BREAKPOINTS is requested. IDs are Unix epoch seconds in creation order.
- `buildType` (string)
- `dataObjects` (array): Present when DATA_OBJECTS is requested in details. Includes custom data objects and entity-generated DTOs.
- `database` (object)
- `dependencies` (array): Dependencies added to the generated Maven or Gradle build. Compatible versions are supplied by Spring Boot dependency management.
- `developerPreferences` (object)
- `entities` (array): Present when ENTITIES is requested in details
- `enums` (array): Present when ENUMS is requested in details
- `frontend` (object)
- `frontendControllers` (array): Present when FRONTEND_CONTROLLERS is requested in details. Available with Bootify Professional.
- `group` (string)
- `includeFileHandling` (boolean): Include file handling services and database storage
- `includeInputRow` (boolean): Include inputRow and supporting form utilities; requires Thymeleaf, jte, Angular or React
- `includePaginationAndSorting` (boolean): Include frontend pagination and sorting utilities; requires a frontend framework
- `includeSearchFilter` (boolean): Include frontend search filter utilities; requires a frontend framework
- `indexes` (array): Present when INDEXES is requested in details
- `language` (string)
- `lombokEnabled` (boolean): Whether Lombok is enabled; present only for Java projects
- `mailSettings` (object): Available with Bootify Professional.
- `name` (string)
- `planLevel` (string): The feature level assigned to the project
- `planStatus` (string): Whether the project's plan is still valid
- `relations` (array): Present when RELATIONS is requested in details. Each identifier is the canonical selector for the current state and must be copied into updateRelation or deleteRelation. Refetch after renaming an ent…
- `restControllers` (array): Present when REST_CONTROLLERS is requested in details. Available with Bootify Professional.
- `securityConfigs` (array): Present when SECURITY_CONFIGS is requested in details
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `linkProject` (~57 tokens)

Link a Bootify project

Link an existing Bootify project to the bearer-authenticated user. Accepts either the project URL or its 12-character project ID and updates the project's plan.

Input parameters:

- `projectUrl` (string, required): The project URL or 12-character project ID

Output parameters:

- `planLevel` (string)
- `planStatus` (string)
- `projectId` (string): The project ID returned by startProject
- `projectUrl` (string)

### `copyProject` (~45 tokens)

Copy a project owned by the bearer-authenticated user. Projects with an active one-time upgrade cannot be copied.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `message` (string)
- `planLevel` (string): The feature level assigned to the project
- `planStatus` (string): Whether the project's plan is still valid
- `project` (object)
- `projectId` (string)
- `projectUrl` (string): The project URL that should always be shown to the user immediately after creation so they can follow all subsequent MCP changes live in their browser
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteProject` (~34 tokens)

Close a project owned by the bearer-authenticated user.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `closed` (boolean): Whether the project has been closed
- `projectId` (string): The project ID returned by startProject

### `updateSettings` (~114 tokens)

Update project settings

Update one or more basic settings of an existing Bootify project. Background information: https://bootify.io/docs/general-tab.html

Input parameters:

- `buildType` (string)
- `group` (string): A group name such as com.my-group, used for build settings and package name
- `language` (string)
- `lombokEnabled` (boolean): Ignored for Kotlin projects
- `name` (string): A project name such as my-project
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateDeveloperPreferences` (~188 tokens)

Update developer preferences

Update one or more developer preferences of an existing Bootify project. Background information: https://bootify.io/docs/general-tab.html

Input parameters:

- `applicationFormat` (string): Format of the generated Spring application configuration
- `deployment` (string)
- `dockerComposeEnabled` (boolean): Generate Docker Compose support for local development
- `includeAgentInstructions` (boolean): Generate AGENTS.md with coding agent instructions
- `javaVersion` (integer)
- `openApiEnabled` (boolean): Generate OpenAPI documentation and Swagger UI
- `packageStructure` (string): Package layout: TECHNICAL groups classes by technical type in packages such as domain, repos, service and rest; DOMAIN_DRIVEN groups all classes related to an entity in a package named after that ent…
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateAdvancedOptions` (~245 tokens)

Update advanced options

Available with Bootify Professional. Update one or more advanced project options. MODULITH generates package-based application modules, while MULTI_MODULE generates physical Gradle or Maven modules. Select either before defining an application-module graph. Background information: https://bootify.io/docs/modules-tab.html

Input parameters:

- `actuatorEnabled` (boolean): Add Spring Boot Actuator
- `actuatorEndpoints` (array): Actuator endpoints to expose; an empty list exposes all available endpoints
- `hateoasEnabled` (boolean): Use HATEOAS for the REST API
- `mapStructEnabled` (boolean): Use MapStruct instead of generated mapping code
- `modularization` (string): NONE generates a monolith; MODULITH and MULTI_MODULE activate the application-module graph
- `multiModulePrefix` (boolean): Prefix generated module artifact names with the project name in MULTI_MODULE mode
- `projectId` (string, required): The project ID returned by startProject
- `serviceInterfaceEnabled` (boolean): Generate separate service interfaces and implementations
- `springSession` (string): Spring Session persistence; JDBC uses the configured relational or embedded database
- `testSetup` (string): Generated test setup

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateUtilities` (~157 tokens)

Update utilities

Include utilities for custom code even when the project does not require them. Required utilities cannot be disabled. They remain included when no longer required, until explicitly disabled. Omitted options retain their values. Inspect utilities in getProject for the current inclusion state.

Input parameters:

- `includeFileHandling` (boolean): Include file handling services and database storage
- `includeInputRow` (boolean): Include inputRow and supporting form utilities; requires Thymeleaf, jte, Angular or React
- `includePaginationAndSorting` (boolean): Include frontend pagination and sorting utilities; requires a frontend framework
- `includeSearchFilter` (boolean): Include frontend search filter utilities; requires a frontend framework
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateMailSettings` (~90 tokens)

Update mail settings

Available with Bootify Professional. Enable or disable mail support and configure the generated application's SMTP connection.

Input parameters:

- `connection` (string)
- `displayName` (string|null)
- `enabled` (boolean)
- `from` (string|null)
- `host` (string|null)
- `projectId` (string, required): The project ID returned by startProject
- `username` (string|null)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateFrontend` (~115 tokens)

Update project frontend

Update one or more frontend settings of an existing Bootify project. Background information: https://bootify.io/docs/frontend-settings.html

Input parameters:

- `buildTool` (string)
- `cssFramework` (string)
- `framework` (string)
- `htmxEnabled` (boolean): Used only with Thymeleaf and JTE
- `projectId` (string, required): The project ID returned by startProject
- `typescriptEnabled` (boolean): Used only with Vite or Webpack for Thymeleaf and JTE

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateDatabase` (~74 tokens)

Update project database

Update the database and schema management settings of an existing Bootify project. Background information: https://bootify.io/docs/general-tab.html

Input parameters:

- `mongoSchemaType` (string)
- `projectId` (string, required): The project ID returned by startProject
- `schemaType` (string)
- `type` (string)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateDatabaseNaming` (~87 tokens)

Update project database naming

Update one or more database naming settings of an existing Bootify project. Background information: https://bootify.io/docs/general-tab.html

Input parameters:

- `namingStrategy` (string)
- `pluralizeTableName` (boolean)
- `projectId` (string, required): The project ID returned by startProject
- `tablePrefix` (string|null)
- `tableSuffix` (string|null)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateDateFields` (~73 tokens)

Update project date fields

Enable or disable generated date fields and configure their names. Background information: https://bootify.io/docs/general-tab.html

Input parameters:

- `dateCreatedName` (string)
- `enabled` (boolean)
- `lastUpdatedName` (string)
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `listAvailableDependencies` (~94 tokens)

List available project dependencies

List dependencies that can be added to the generated Maven or Gradle build. These dependencies are managed by the project's Spring Boot version and therefore do not require a dependency version. Use the optional query to narrow the result. Successful calls record MCP usage and activity for this project.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject
- `query` (string): Optional case-insensitive text contained in the coordinates

Output parameters:

- `dependencies` (array)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addDependency` (~92 tokens)

Add a project dependency

Add an extra application dependency to the generated Maven or Gradle build. Bootify already adds dependencies required by selected project features. Call listAvailableDependencies to find supported coordinates, then pass the returned groupId:artifactId. Spring Boot supplies the compatible dependency version.

Input parameters:

- `dependency` (string, required): Maven coordinates: groupId:artifactId[:version]
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `removeDependency` (~70 tokens)

Remove a project dependency

Remove a dependency from the generated Maven or Gradle build using groupId:artifactId. A version may be supplied but is not used for matching.

Input parameters:

- `dependency` (string, required): Maven coordinates: groupId:artifactId[:version]
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addAppModule` (~229 tokens)

Add a project application module

Available with Bootify Professional. Add a custom application module. References name the modules this module depends on. The same graph defines package boundaries for MODULITH and physical build modules for MULTI_MODULE; select either with updateAdvancedOptions first. The implicit base module is the lowest-level shared module and is integrated directly or transitively by every other module. A custom module with no references depends on base. The implicit web module is the highest-level application wrapper and automatically depends on every custom root module; in MULTI_MODULE it assembles the executable application. Neither implicit module can be edited. Dependencies must be acyclic and should point from a feature toward the lower-level modules it uses. Background information: https://bootify.io/docs/modules-tab.html

Input parameters:

- `name` (string, required): Name of the new custom module
- `projectId` (string, required): The project ID returned by startProject
- `references` (array): Unique names of existing custom modules used as direct dependencies. References already available through another selected module are removed automatically. Omit or use an empty array to depend on th…

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateAppModule` (~254 tokens)

Update a project application module

Available with Bootify Professional. Update or rename a custom application module identified by its current name. When provided, references replace all current direct dependencies. The same graph defines package boundaries for MODULITH and physical build modules for MULTI_MODULE; select either with updateAdvancedOptions first. The implicit base module is the lowest-level shared module and is integrated directly or transitively by every other module. A custom module with no references depends on base. The implicit web module is the highest-level application wrapper and automatically depends on every custom root module; in MULTI_MODULE it assembles the executable application. Neither implicit module can be edited. Dependencies must be acyclic and should point from a feature toward the lower-level modules it uses. Background information: https://bootify.io/docs/modules-tab.html

Input parameters:

- `name` (string, required): Current name of the custom module
- `newName` (string): New module name; omit to keep its name
- `projectId` (string, required): The project ID returned by startProject
- `references` (array): Unique names of existing custom modules used as direct dependencies. References already available through another selected module are removed automatically. Omit or use an empty array to depend on th…

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteAppModule` (~76 tokens)

Delete a project application module

Delete a custom application module by name. The implicit base and web modules cannot be deleted. Bootify applies its consistency rules to references and assigned project elements. Available with Bootify Professional.

Input parameters:

- `name` (string, required): Name of the custom module to delete
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addEnum` (~117 tokens)

Add a project enum

Add an enum to an existing Bootify project, identified by name.

Input parameters:

- `appModule` (string|null): Custom app module name; null selects base. Available with Bootify Professional.
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Name of the new enum
- `projectId` (string, required): The project ID returned by startProject
- `values` (array, required): Ordered, unique enum values such as DRAFT and PUBLISHED

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateEnum` (~149 tokens)

Update a project enum

Update or rename an enum identified by its current name. Provide newName, values, appModule, featurePackage, or several.

Input parameters:

- `appModule` (string|null): Custom app module name; null selects base. Available with Bootify Professional.
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Current name of the enum to update
- `newName` (string): New enum name; omit to keep the current name
- `projectId` (string, required): The project ID returned by startProject
- `values` (array): Ordered, unique enum values such as DRAFT and PUBLISHED

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteEnum` (~57 tokens)

Delete a project enum

Delete an enum identified by name. Referencing fields are changed to String by Bootify's consistency rules.

Input parameters:

- `name` (string, required): Name of the enum to delete
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addDataObject` (~148 tokens)

Add a project data object

Add a custom data object by name. Entity-generated DTOs are returned by getProject with generated=true and must be changed through their entity fields or REST/frontend options. Background information: https://bootify.io/spring-data/hibernate-json-type.html

Input parameters:

- `appModule` (string|null): Custom app module; null selects base. Available with Bootify Professional.
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `fields` (array, required): Complete ordered data object field list.
- `name` (string, required): Name of the new data object
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateDataObject` (~168 tokens)

Update a project data object

Update or rename a custom data object by name. Entity-generated DTOs are returned by getProject with generated=true and must be changed through their entity fields or REST/frontend options. Background information: https://bootify.io/spring-data/hibernate-json-type.html

Input parameters:

- `appModule` (string|null): Custom app module; null selects base. Available with Bootify Professional.
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `fields` (array): Complete ordered data object field list.
- `name` (string, required): Current name of the data object
- `newName` (string): New data object name; omit to keep its name
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteDataObject` (~87 tokens)

Delete a project data object

Delete a custom data object by name. Entity-generated DTOs are returned by getProject with generated=true and must be changed through their entity fields or REST/frontend options. Background information: https://bootify.io/spring-data/hibernate-json-type.html

Input parameters:

- `name` (string, required): Current name of the data object
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addEntity` (~223 tokens)

Add a project entity

Add an entity to an existing Bootify project. Entity, field, module, inheritance and custom field-type references use names.

Input parameters:

- `appModule` (string|null): App module name; null selects the base module. Available with Bootify Professional.
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `fields` (array, required): Complete ordered entity field list. Exactly one primary key is required for a concrete entity unless inherited; abstract superclasses may omit it. A primary key must be the first field and use INTEGE…
- `frontendEnabled` (boolean)
- `inherits` (string|null): Name of the superclass entity; null removes inheritance
- `name` (string, required): Name of the new entity
- `paginationEnabled` (boolean)
- `projectId` (string, required): The project ID returned by startProject
- `restEnabled` (boolean)
- `searchFilterEnabled` (boolean)
- `superclass` (boolean)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateEntity` (~243 tokens)

Update a project entity

Update or rename an entity identified by its current name. Only provided properties are changed; a provided fields array replaces all fields.

Input parameters:

- `appModule` (string|null): App module name; null selects the base module. Available with Bootify Professional.
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `fields` (array): Complete ordered entity field list. Exactly one primary key is required for a concrete entity unless inherited; abstract superclasses may omit it. A primary key must be the first field and use INTEGE…
- `frontendEnabled` (boolean)
- `inherits` (string|null): Name of the superclass entity; null removes inheritance
- `name` (string, required): Current name of the entity to update
- `newName` (string): New entity name; omit to keep the current name
- `paginationEnabled` (boolean)
- `projectId` (string, required): The project ID returned by startProject
- `restEnabled` (boolean)
- `searchFilterEnabled` (boolean)
- `superclass` (boolean)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteEntity` (~54 tokens)

Delete a project entity

Delete an entity identified by name. Bootify applies its consistency rules to dependent project data.

Input parameters:

- `name` (string, required): Name of the entity to delete
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `importSqlSchema` (~67 tokens)

Import an SQL schema

Parse SQL DDL and reconcile its tables, fields and relations with an existing Bootify project. Matching entities are updated and new entities are added.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject
- `sql` (string, required): SQL DDL containing CREATE TABLE statements

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `entitiesAdded` (array)
- `entitiesUpdated` (array)
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addBreakpoint` (~92 tokens)

Add a schema breakpoint

Available with Bootify Professional. Snapshot the current database schema so subsequent schema changes generate a new Flyway, Liquibase or Mongock changelog. Available only when getProject BREAKPOINTS reports AVAILABLE. Generated changelogs are blueprints and must be adapted to production data. Use this tool only after the user has explicitly confirmed adding a breakpoint.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `breakpointId` (string): Breakpoint ID in Unix epoch seconds
- `breakpointStatus` (string)
- `breakpoints` (array)
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `removeBreakpoint` (~80 tokens)

Remove a schema breakpoint

Available with Bootify Professional. Permanently remove one breakpoint. This changes generated changelogs and cannot be undone. Copy its epoch-second ID from getProject BREAKPOINTS. Use this tool only after the user has explicitly confirmed removing the breakpoint.

Input parameters:

- `breakpointId` (string, required)
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `breakpointId` (string): Breakpoint ID in Unix epoch seconds
- `breakpointStatus` (string)
- `breakpoints` (array)
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addRelation` (~321 tokens)

Add an entity relation

Add a relation whose type describes the cardinality from fromEntity to toEntity. For MANY_TO_ONE, ONE_TO_ONE and MANY_TO_MANY the owning field is fromEntity.fromField; for ONE_TO_MANY it is toEntity.toField. The response includes that canonical owning-side value as identifier. Bidirectional relations require both fields. Background information: https://bootify.io/docs/jpa-relationship-types-with-examples.html. fromEntity and toEntity must already exist. The owning entity's application module must depend on the target entity's module.

Input parameters:

- `fromEntity` (string, required): Entity on the from side of the cardinality
- `fromField` (string|null): Field generated on fromEntity. Required unless an unidirectional ONE_TO_MANY relation omits this reverse field
- `projectId` (string, required): The project ID returned by startProject
- `required` (boolean): Whether the owning foreign key is required. Not applicable to MANY_TO_MANY or self-relations
- `tableName` (string|null): Join-table name; required only for MANY_TO_MANY
- `toEntity` (string, required): Entity on the to side of the cardinality
- `toField` (string|null): Field generated on toEntity. Required for ONE_TO_MANY and bidirectional relations; also required for self-referencing MANY_TO_MANY relations
- `type` (string, required): Cardinality from fromEntity to toEntity
- `unidirectional` (boolean): Omit the reverse field. Relations across application modules must be unidirectional

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `identifier` (string): Current canonical selector; copy into subsequent update or delete calls
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateRelation` (~371 tokens)

Update an entity relation

Update a relation whose type describes the cardinality from fromEntity to toEntity. For MANY_TO_ONE, ONE_TO_ONE and MANY_TO_MANY the owning field is fromEntity.fromField; for ONE_TO_MANY it is toEntity.toField. The response includes that canonical owning-side value as identifier. Bidirectional relations require both fields. Background information: https://bootify.io/docs/jpa-relationship-types-with-examples.html. Identify the existing relation with its current identifier returned by addRelation, updateRelation or getProject; do not reconstruct internal IDs. Only provided relation properties are changed. If an update changes the owning entity or field, use the newly returned identifier for subsequent calls.

Input parameters:

- `fromEntity` (string): Entity on the from side of the cardinality
- `fromField` (string|null): Field generated on fromEntity. Required unless an unidirectional ONE_TO_MANY relation omits this reverse field
- `identifier` (string, required): Current identifier copied verbatim from addRelation, updateRelation or getProject RELATIONS
- `projectId` (string, required): The project ID returned by startProject
- `required` (boolean): Whether the owning foreign key is required. Not applicable to MANY_TO_MANY or self-relations
- `tableName` (string|null): Join-table name; required only for MANY_TO_MANY
- `toEntity` (string): Entity on the to side of the cardinality
- `toField` (string|null): Field generated on toEntity. Required for ONE_TO_MANY and bidirectional relations; also required for self-referencing MANY_TO_MANY relations
- `type` (string): Cardinality from fromEntity to toEntity
- `unidirectional` (boolean): Omit the reverse field. Relations across application modules must be unidirectional

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `identifier` (string): Current canonical selector; copy into subsequent update or delete calls
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteRelation` (~98 tokens)

Delete an entity relation

Delete a relation using the current identifier returned by addRelation, updateRelation or getProject with RELATIONS details. The identifier is the owning entity and owning field joined with a dot; copy it verbatim because ONE_TO_MANY ownership is on the to side.

Input parameters:

- `identifier` (string, required): Current identifier copied verbatim from addRelation, updateRelation or getProject RELATIONS
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addIndex` (~125 tokens)

Add a database index

Add a normal or unique index over ordered entity fields or owning-side relations. Many-to-many relations are excluded. The response returns its name selector as Entity.field1-field2.

Input parameters:

- `entity` (string, required): Entity containing the indexed fields or owning-side relations
- `fields` (array, required): Ordered field or owning-side relation names. Order affects index usage; many-to-many relations are not available and a primary key cannot be used alone.
- `projectId` (string, required): The project ID returned by startProject
- `unique` (boolean, required): Whether the index enforces a unique field combination

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `name` (string): Current canonical selector; copy into subsequent update or delete calls
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateIndex` (~130 tokens)

Update a database index

Update an index by its current Entity.field1-field2 identifier. Only provided properties are changed; the response contains its updated identifier.

Input parameters:

- `entity` (string): Entity containing the indexed fields or owning-side relations
- `fields` (array): Ordered field or owning-side relation names. Order affects index usage; many-to-many relations are not available and a primary key cannot be used alone.
- `name` (string, required): Current Entity.field1-field2 identifier
- `projectId` (string, required): The project ID returned by startProject
- `unique` (boolean): Whether the index enforces a unique field combination

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `name` (string): Current canonical selector; copy into subsequent update or delete calls
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteIndex` (~45 tokens)

Delete a database index

Delete an index by its current name.

Input parameters:

- `name` (string, required): Current Entity.field1-field2 identifier
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addRestController` (~177 tokens)

Add a REST controller

Available with Bootify Professional. Add a custom REST controller by name. Entity-generated controllers are returned by the matching getProject details option with generated=true and must be changed through their entity options.

Input parameters:

- `appModule` (string|null): Custom application module name; null selects the web module
- `endpoints` (array, required)
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Name of the new REST controller
- `parameters` (array, required): Types for every placeholder and query declaration, in the same order as path. Bootify derives whether each parameter is a path or query parameter.
- `path` (string, required): Controller base path, with optional {name} placeholders
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateRestController` (~196 tokens)

Update a REST controller

Available with Bootify Professional. Update or rename a custom REST controller by name. Entity-generated controllers are returned by the matching getProject details option with generated=true and must be changed through their entity options.

Input parameters:

- `appModule` (string|null): Custom application module name; null selects the web module
- `endpoints` (array)
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Current name of the REST controller
- `newName` (string): New controller name; omit to keep its name
- `parameters` (array): Types for every placeholder and query declaration, in the same order as path. Bootify derives whether each parameter is a path or query parameter.
- `path` (string): Controller base path, with optional {name} placeholders
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteRestController` (~75 tokens)

Delete a REST controller

Available with Bootify Professional. Delete a custom REST controller by name. Entity-generated controllers are returned by the matching getProject details option with generated=true and must be changed through their entity options.

Input parameters:

- `name` (string, required): Current name of the REST controller
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addFrontendController` (~177 tokens)

Add a frontend controller

Available with Bootify Professional. Add a custom frontend controller by name. Entity-generated controllers are returned by the matching getProject details option with generated=true and must be changed through their entity options.

Input parameters:

- `appModule` (string|null): Custom application module name; null selects the web module
- `endpoints` (array, required)
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Name of the new frontend controller
- `parameters` (array, required): Types for every placeholder and query declaration, in the same order as path. Bootify derives whether each parameter is a path or query parameter.
- `path` (string, required): Controller base path, with optional {name} placeholders
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateFrontendController` (~196 tokens)

Update a frontend controller

Available with Bootify Professional. Update or rename a custom frontend controller by name. Entity-generated controllers are returned by the matching getProject details option with generated=true and must be changed through their entity options.

Input parameters:

- `appModule` (string|null): Custom application module name; null selects the web module
- `endpoints` (array)
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Current name of the frontend controller
- `newName` (string): New controller name; omit to keep its name
- `parameters` (array): Types for every placeholder and query declaration, in the same order as path. Bootify derives whether each parameter is a path or query parameter.
- `path` (string): Controller base path, with optional {name} placeholders
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteFrontendController` (~75 tokens)

Delete a frontend controller

Available with Bootify Professional. Delete a custom frontend controller by name. Entity-generated controllers are returned by the matching getProject details option with generated=true and must be changed through their entity options.

Input parameters:

- `name` (string, required): Current name of the frontend controller
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `listSecurityPaths` (~97 tokens)

List selectable security paths

Return the canonical METHOD /path values that may be assigned to security roles. Pass securityConfigName while editing so that its current paths remain available. Frontend paths can only be protected by BASIC_AUTH, FORM_SESSION or KEYCLOAK_CLIENT. Successful calls record MCP usage and activity for this project.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject
- `securityConfigName` (string): Existing config being edited

Output parameters:

- `frontend` (array)
- `rest` (array)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `addSecurityConfig` (~103 tokens)

Add a security configuration

Create a config with safe defaults. Configure roles, login and an optional user source through their dedicated tools.

Input parameters:

- `appModule` (string|null): Custom app module; null selects base
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Security config name
- `projectId` (string, required): The project ID returned by startProject
- `type` (string, required)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `updateSecurityConfig` (~122 tokens)

Update basic security configuration

Change only the identity, type, module or authentication mode. Changing type resets type-specific settings to defaults.

Input parameters:

- `appModule` (string|null): Custom app module; null selects base
- `authenticationMethod` (string)
- `featurePackage` (string|null): Optional dot-separated package path for domain-driven or mixed structure; null uses automatic assignment
- `name` (string, required): Current config name
- `newName` (string): New config name
- `projectId` (string, required): The project ID returned by startProject
- `type` (string)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `configureSecurityLogin` (~119 tokens)

Configure security login

Configure only login, JWT, Keycloak and session behavior. Provide just the fields that should change.

Input parameters:

- `jwtAlgorithm` (string|null)
- `keycloakClientId` (string|null)
- `keycloakRealmId` (string|null)
- `loginClientIds` (object)
- `loginMethods` (array)
- `name` (string, required): Security config name
- `projectId` (string, required): The project ID returned by startProject
- `registrationEndpoint` (boolean)
- `rememberMe` (string|null)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `configureSecurityUserSource` (~189 tokens)

Configure security user source

Configure the user entity and its credential, OAuth mapping, password reset and token fields. Provide just the fields that should change.

Input parameters:

- `externalIdField` (string|null)
- `hashField` (string|null)
- `loginTypeField` (string|null)
- `mapEmailField` (string|null)
- `mapFirstNameField` (string|null)
- `mapLastNameField` (string|null)
- `name` (string, required): Security config name
- `projectId` (string, required): The project ID returned by startProject
- `refreshTokenExpiryPath` (string|null)
- `refreshTokenPath` (string|null)
- `resetStartField` (string|null)
- `resetUidField` (string|null)
- `sourceEntity` (string|null): User source entity; null uses in-memory users
- `usernameField` (string|null)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `setSecurityRoles` (~92 tokens)

Set security roles and paths

Replace the role setup. Call listSecurityPaths first and use its exact METHOD /path values.

Input parameters:

- `name` (string, required): Security config name
- `projectId` (string, required): The project ID returned by startProject
- `roleEnum` (string|null): Enum supplying role names
- `roleFieldEnumPath` (string|null)
- `roleSource` (string, required)
- `roles` (array, required)

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `deleteSecurityConfig` (~42 tokens)

Delete a security configuration

Delete a security configuration by name.

Input parameters:

- `name` (string, required): Security config to delete
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `affectedAreas` (array): Object lists changed directly or by automatic effects. Lists are not returned; use getProject with these details when needed. Empty for no list changes.
- `changes` (object): Only settings whose values actually changed, including automatic effects, using final stored values in MCP format. Nested objects contain changed properties only. Empty when no settings changed; valu…
- `projectId` (string): The project ID returned by startProject
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `getOpenApiPreview` (~79 tokens)

Get the generated OpenAPI preview

Available with Bootify Professional. Generate and return the OpenAPI document for the current project configuration. Use it to inspect resolved paths, parameters, request and response schemas, status codes and security schemes before exporting the project. Successful calls record MCP usage and activity for this project.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `document` (object): The generated OpenAPI document
- `openApiVersion` (string)
- `pathCount` (integer)
- `projectId` (string): The project ID returned by startProject
- `schemaCount` (integer)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `listProjectFiles` (~70 tokens)

List generated project files

Return every file path that would be present in the ZIP export of an existing Bootify project, without generating or returning file contents. Listing fails when the project plan has expired. Successful calls record MCP usage and activity for this project.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `fileCount` (integer)
- `files` (array)
- `message` (string)
- `projectId` (string)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `getProjectFile` (~120 tokens)

Read a generated project file

Return one generated project file. The path may exactly match a value returned by listProjectFiles, with or without the project root directory, such as pom.xml. Text is returned as UTF-8 and binary content as Base64. Successful calls record MCP usage and activity for this project. Generated files can include private signing keys for RSA JWT configurations; treat them as sensitive.

Input parameters:

- `path` (string, required): An exact path from listProjectFiles, with or without the project root directory
- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `content` (string)
- `contentType` (string)
- `encoding` (string)
- `message` (string)
- `path` (string)
- `projectId` (string)
- `size` (integer)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `exportProject` (~129 tokens)

Export a Bootify project

Return a ZIP download URL for an existing Bootify project. This tool should be called after all project details and the schema have been configured with the user and the current setup has been presented. Ask for approval before exporting unless the user already explicitly requested the export in the current context. The client can download and extract it when the environment supports it. Export fails when the project plan has expired. Successful calls record MCP usage and activity for this project. Generated files can include private signing keys for RSA JWT configurations; treat them as sensitive.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `contentType` (string)
- `downloadUrl` (string)
- `filename` (string)
- `message` (string)
- `projectId` (string)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `getGitExportStatus` (~97 tokens)

Inspect Git export configuration

Available with Bootify Professional. Return the saved repository URL, target branch and defaultCommitMessage derived from current changes using the builder's commit message generator. This does not contact the remote or preview a Git diff. Credentials are never returned. If unconfigured, open configurationUrl to configure Git in the builder. Successful calls record MCP usage and activity for this project.

Input parameters:

- `projectId` (string, required): The project ID returned by startProject

Output parameters:

- `configurationUrl` (string)
- `configured` (boolean)
- `defaultCommitMessage` (string)
- `projectId` (string)
- `repositoryUrl` (string|null)
- `targetBranch` (string|null)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

### `exportProjectToGit` (~131 tokens)

Export a Bootify project to Git

Available with Bootify Professional. Generate, commit and push to the saved repository and target branch. Replaces the target branch's file contents with the generated project, including deleting other files. Use only when the user has authorized the Git export. Inspect getGitExportStatus first. The optional message overrides defaultCommitMessage; when omitted it is calculated at export time. No commit is created when generated files have not changed; commitSha is then null. Requires saved Git credentials and active export access. Successful calls record MCP usage and activity.

Input parameters:

- `message` (string)
- `projectId` (string, required)

Output parameters:

- `commitSha` (string|null)
- `hasChanges` (boolean)
- `message` (string)
- `projectId` (string)
- `repositoryUrl` (string)
- `targetBranch` (string)
- `userProjectChanged` (boolean): Present only once when the project appears to have been changed by the user since the preceding MCP call within the last two hours

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-bootify-mcp/bootify#diagnostics

## Score history

- 2026-11-05: 79
- 2026-11-04: 79
- 2026-11-03: 79
- 2026-11-02: 79
- 2026-11-01: 79
- 2026-10-31: 79
- 2026-10-30: 79
- 2026-10-29: 79
- 2026-10-28: 78
- 2026-10-27: 78
- 2026-10-26: 77
- 2026-10-25: 77
- 2026-10-24: 76
- 2026-10-23: 76
- 2026-10-22: 76
- 2026-10-21: 75
- 2026-10-20: 75
- 2026-10-19: 74
- 2026-10-18: 74
- 2026-10-17: 73
- 2026-10-16: 73
- 2026-10-15: 72
- 2026-10-14: 72
- 2026-10-13: 71
- 2026-10-12: 71
- 2026-10-10: 70
- 2026-10-09: 69
- 2026-10-04: 67
- 2026-10-03: 67
- 2026-10-02: 67

## Common questions

### What is the io.bootify/mcp server?

io.bootify/mcp is listed in the public MCP registry as io.bootify/mcp. Build Spring Boot applications, ready for coding agents, including best practices. This page covers its hosted endpoint (https://bootify.io/mcp).

### Is the io.bootify/mcp server safe to use?

io.bootify/mcp scores 79 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.bootify/mcp server expose?

io.bootify/mcp exposes 57 tools: startProject, getProject, linkProject, copyProject, deleteProject, and 52 more. Their descriptions and schemas cost roughly 7,267 tokens of context every time the server is loaded.

### Does the io.bootify/mcp server require authentication?

No. We connected to io.bootify/mcp without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.bootify/mcp server still maintained?

io.bootify/mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://bootify.io/mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-bootify-mcp/bootify.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-bootify-mcp/bootify.json
- HTML version of this page: https://verifymcp.io/servers/io-bootify-mcp/bootify
