fimo 0.21.0-staging.3 → 0.21.0-staging.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,7 @@ Pick by task:
33
33
  - Project creation, local setup, cloning, and CLI workflows — init, push, deploy, sync, labels, domains, analytics → `fimo-cli`
34
34
  - Fimo agents — create, configure, validate, deploy, run, or inspect them → `fimo-cli` (`references/agents.md`)
35
35
  - AI agent setup — connect Claude Code, Codex, Cursor, or another agent → `fimo-cli` (`references/agent-setup.md`)
36
- - Project MCP setup — configure `fimo mcp` for a local agent → `fimo-cli` (`references/mcp.md`)
36
+ - Remote MCP integrations — add, inspect, search, or run an MCP server → `fimo-cli` (`references/mcp.md`)
37
37
  - The Fimo Studio dashboard / web app UI → `fimo-studio`
38
38
  - Migrating an existing site into Fimo → `fimo-migration`
39
39
 
@@ -106,7 +106,7 @@ Load the matching reference when the user's request fires its trigger. Recipes t
106
106
  - "Login / log out / who am I / switch organization" → `references/account.md` — note: switching **org** is `fimo orgs switch`; bare `fimo switch` changes the active **Fimo Branch** (see `references/branches.md`)
107
107
  - "Create / scaffold / run / validate an agent / agent bundle / wire or enable its triggers / list agent templates / view agent runs, reports, or logs (`fimo agents *`)" → `references/agents.md`
108
108
  - "Install Fimo for my agent / fimo skills install / set up Claude Code, Codex, or Cursor for Fimo" → `references/agent-setup.md`
109
- - "Connect an agent to a Fimo project through MCP / configure `fimo mcp` / expose Fimo tools to a local MCP client" → `references/mcp.md`
109
+ - "Add, inspect, search, or run a remote MCP server / use `fimo mcp`" → `references/mcp.md`
110
110
  - "Refresh / update installed Fimo skills / fimo skills sync / agent missing the latest Fimo conventions" → `references/agent-setup.md`
111
111
  - "Report a Fimo problem or blocking feature request / contact Fimo support / a Fimo API or command keeps failing / a documented argument is rejected / a supported operation needs an undocumented workaround / a Fimo API is abnormally slow / a confirmed missing capability blocks completion or forces a fragile or heavily manual workaround" → `references/support.md`
112
112
  - "Regenerate rule files / I edited AGENTS.md / fimo rules sync" → `references/agent-setup.md`
@@ -2,6 +2,10 @@
2
2
 
3
3
  Use integrations to enable external services for a Fimo project. API keys are stored by Fimo and never printed back to the CLI. Teammates and agents receive access to the integration, not the underlying token.
4
4
 
5
+ Start with `fimo integrations list` whenever the task could benefit from an external service. It is the project-scoped,
6
+ runtime-truthful inventory; use `info` only for the relevant integration instead of loading every provider's tools into
7
+ context.
8
+
5
9
  ## Inspect
6
10
 
7
11
  ```bash
@@ -14,6 +18,26 @@ fimo integrations status firecrawl
14
18
 
15
19
  When running inside an autonomous agent session, `fimo integrations list` shows the effective integrations available to that agent runtime, scoped by `.fimo/agents/<name>/config.yaml`. It lists only usable tools, plus the auth column and the config path that granted access.
16
20
 
21
+ ## Add a remote MCP server
22
+
23
+ Remote MCP servers have a focused command group while remaining integrations underneath:
24
+
25
+ ```bash
26
+ fimo mcp add sentry --url https://mcp.sentry.dev/mcp
27
+
28
+ fimo mcp search "issue tracking"
29
+ fimo mcp info sentry
30
+ fimo mcp run sentry <tool> --input '{"key":"value"}'
31
+ ```
32
+
33
+ Automatic discovery connects public endpoints directly and opens the provider authorization page for OAuth servers.
34
+ Use `--auth none` to require a public endpoint, `--auth bearer --token-stdin` for a bearer token, or `--auth header
35
+ --header-name <name> --token-stdin` for a custom private header. A custom header value is sent exactly as piped, so it
36
+ carries any prefix itself. Fimo requires an HTTPS Streamable HTTP endpoint,
37
+ encrypts credentials, assigns an `mcp_`-prefixed integration key, and reads the server's current tools live. OAuth and
38
+ manual headers are alternative grants and are never sent together. Local stdio commands such as `npx` are not supported. Agents continue to use `fimo integrations list|info|run`
39
+ so native and MCP providers share one runtime policy surface.
40
+
17
41
  ## Integration References
18
42
 
19
43
  Load the integration reference when the user names a specific integration:
@@ -1,83 +1,124 @@
1
- # Project MCP
1
+ # Remote MCP integrations
2
2
 
3
- The **Project MCP** lets an AI coding client use Fimo's project workflows through the Model Context Protocol. It is
4
- the same Fimo tool surface exposed in two ways:
3
+ Use the `mcp` command group to connect a project to remote Model Context Protocol servers. Fimo stores the connection,
4
+ keeps its credential server-side, and makes the server's tools available through the same integration gateway as native
5
+ providers.
5
6
 
6
- - **Local MCP**: `fimo mcp` over stdio, for an AI client running next to a checkout.
7
- - **Remote MCP**: `https://api.fimo.ai/api/mcp` over authenticated Streamable HTTP, for ChatGPT, Claude, and other
8
- clients that support OAuth.
7
+ ## Add a server
9
8
 
10
- The local and remote Project MCP modes share the same catalog. The public Docs MCP at
11
- `https://fimo.ai/docs/mcp` is separate: it is unauthenticated, read-only, and only provides Fimo documentation.
9
+ Start with automatic discovery:
12
10
 
13
- ## Set up the local MCP
11
+ ```bash
12
+ fimo mcp add sentry --url https://mcp.sentry.dev/mcp
13
+ ```
14
14
 
15
- Authenticate the CLI first:
15
+ Fimo connects public servers immediately. When the server advertises OAuth, Fimo opens its authorization page. Use
16
+ `--no-open` to print the URL for a browser on another machine.
17
+
18
+ Bearer token:
16
19
 
17
20
  ```bash
18
- fimo login
21
+ printf '%s\n' "$MCP_TOKEN" | fimo mcp add sentry \
22
+ --url https://mcp.sentry.dev/mcp \
23
+ --auth bearer \
24
+ --token-stdin
19
25
  ```
20
26
 
21
- Then configure the MCP client to launch:
27
+ Multiple custom headers:
22
28
 
23
- ```text
24
- fimo mcp
29
+ ```bash
30
+ printf '%s\n' "$MCP_HEADERS_JSON" | fimo mcp add internal \
31
+ --url https://mcp.example.com/mcp \
32
+ --auth header \
33
+ --header Authorization \
34
+ --header X-Workspace \
35
+ --headers-stdin
25
36
  ```
26
37
 
27
- For clients that accept a JSON command configuration, the equivalent entry is:
28
-
29
- ```json
30
- {
31
- "mcpServers": {
32
- "fimo": {
33
- "command": "npx",
34
- "args": ["fimo@latest", "mcp"]
35
- }
36
- }
37
- }
38
+ `MCP_HEADERS_JSON` must be one JSON object containing every configured header and no others, for example
39
+ `{"Authorization":"Bearer abc123","X-Workspace":"workspace-secret"}`. Header names are matched case-insensitively.
40
+ **Each value is the complete header value and is sent byte for byte**, so include any prefix the server expects. There
41
+ is no scheme or prefix option; anything the header needs goes in the value.
42
+
43
+ Use `--auth none` for a public endpoint or `--auth bearer --token-stdin` for a bearer token, which is the shortcut for
44
+ sending `Authorization: Bearer <token>` from the token alone. The single-header form,
45
+ `--auth header --header-name <name> --token-stdin`, pipes one complete header value.
46
+
47
+ Fimo requires an HTTPS Streamable HTTP endpoint, validates the MCP handshake before saving it, encrypts the credentials,
48
+ and never prints their values. The resulting integration key begins with `mcp_` so it cannot collide with a native
49
+ provider.
50
+
51
+ OAuth and manual credentials are alternative connection grants. Fimo never sends custom secret headers alongside an
52
+ OAuth access token.
53
+
54
+ ## Reconnect OAuth
55
+
56
+ If live discovery or execution reports that an OAuth connection needs authorization again:
57
+
58
+ ```bash
59
+ fimo mcp reconnect sentry
38
60
  ```
39
61
 
40
- Do not add shell output or logging around the command: stdout is reserved for MCP JSON-RPC frames. Diagnostics are
41
- written to stderr.
62
+ This replaces the organization-owned OAuth grant and requires organization admin access. Add `--no-open` to print the
63
+ authorization URL.
42
64
 
43
- ## Project and Branch scope
65
+ ## Rotate credentials
44
66
 
45
- When launched inside a linked Fimo project, `fimo mcp` reads the project from `.fimo.settings.json` and uses the
46
- current git branch as the default Branch. This keeps an AI client working against the same Branch as the checkout.
67
+ Rotation replaces the complete credential bundle on the connection already enabled for this project:
47
68
 
48
- Outside a linked project, the server still works, but each project-scoped tool call must provide `projectId` and
49
- `env` (the compatibility-preserved wire field for a Branch name). The canonical catalog tool is `branches_list`;
50
- `envs_list` remains a compatibility alias. The client can also pass a Branch override when launching the CLI. Never
51
- edit `.fimo.settings.json` manually to change scope.
69
+ ```bash
70
+ printf '%s\n' "$MCP_HEADERS_JSON" | fimo mcp rotate internal --headers-stdin
71
+ printf '%s\n' "$MCP_TOKEN" | fimo mcp rotate sentry --token-stdin
72
+ ```
52
73
 
53
- The CLI credential represents the signed-in user's Fimo authority. If an MCP server is invoked from a Fimo agent
54
- session, the session's frozen capability snapshot still limits the operations available to that agent.
74
+ Custom-header rotation requires the complete value of every configured header. It never merges a partial update, and
75
+ neither command prints the submitted values. Rotation updates the organization-owned connection and requires organization admin access.
55
76
 
56
- ## Capabilities
77
+ ## Discover servers and tools
57
78
 
58
- The Project MCP catalog covers:
79
+ ```bash
80
+ fimo mcp list
81
+ fimo mcp search "issue tracking"
82
+ fimo mcp info sentry
83
+ ```
84
+
85
+ - `list` shows only remote MCP integrations available to the current project.
86
+ - `search` searches the live tool names and descriptions across those servers.
87
+ - `info` shows one server's endpoint, authentication shape, and current live tool catalog.
88
+
89
+ `info` and `run` accept either the short server name (`sentry`) or its complete integration key (`mcp_sentry`). The
90
+ catalog is loaded live; Fimo does not persist or expose a stale copy to the model.
91
+
92
+ ## Run a tool
93
+
94
+ ```bash
95
+ fimo mcp run sentry search_issues --input '{"query":"open regressions"}'
96
+ fimo mcp run sentry projects_list
97
+ fimo mcp run sentry search_issues --input @request.json
98
+ ```
99
+
100
+ Omit `--input` when the tool takes no arguments. Use inline JSON, a project-relative `@file`, or `--input -` to read JSON
101
+ from stdin.
59
102
 
60
- - **Identity and navigation** — current user, projects, and Branches.
61
- - **Content** — schemas, collection entries, search, create/update/delete, bounded bulk operations, and Singles.
62
- - **Labels** — list, read, set, batch-set, and delete localized labels.
63
- - **Media** — list and inspect assets, read canonical pages or ask one targeted question with `assets_read`, generate images or videos, create folders, move, and delete assets. Binary
64
- upload remains `fimo assets upload`.
65
- - **Forms** — create, read, update, and delete forms; inspect submissions and statistics.
66
- - **Files** — read, glob, grep, write, edit, and delete project files within the scoped Branch. Sensitive files
67
- such as credentials and `.env` files are excluded.
68
- - **Agents** — list agents, start a run, and inspect run status.
103
+ ## Studio and project agents
69
104
 
70
- Use the MCP client's tool list as the wire-level source of truth. The catalog is shared with the remote endpoint, so a
71
- client configured locally sees the same tool names and input shapes as a remote client.
105
+ Remote MCP servers remain normal project integrations underneath the focused CLI. Studio chat and autonomous agents
106
+ discover and run them through:
107
+
108
+ ```bash
109
+ fimo integrations list
110
+ fimo integrations info mcp_sentry
111
+ fimo integrations run mcp_sentry search_issues --input '{"query":"open regressions"}'
112
+ ```
72
113
 
73
- ## Local versus remote authorization
114
+ An autonomous agent only sees integrations enabled in its committed `integrations:` policy. Studio receives a frozen
115
+ snapshot of the integrations enabled when the turn starts. Neither surface receives the underlying credential or opens
116
+ a direct connection to the remote server.
74
117
 
75
- Local MCP uses the stored CLI credential (or `FIMO_API_TOKEN` when explicitly configured). It does not use the
76
- browser OAuth consent screen. Remote MCP uses Fimo OAuth with `read`, `write`, and `agents` scopes; the user selects
77
- the optional capabilities during consent.
118
+ ## Supported servers
78
119
 
79
- In both modes, Fimo still checks the user's project permissions, Branch access, input validation, and file safety
80
- rules for every operation. MCP does not grant access to projects the user cannot already access.
120
+ Remote connections support HTTPS Streamable HTTP servers with OAuth, no authentication, a bearer token, or custom
121
+ private headers. Local stdio commands such as `npx`, arbitrary child processes, resources, and prompts are not supported.
81
122
 
82
- For ChatGPT, Claude, or another remote MCP client, use the setup guide in the public [MCP documentation](https://fimo.ai/docs/ai/mcp)
83
- instead of the local stdio configuration above.
123
+ To connect ChatGPT, Claude, or another remote MCP client to Fimo itself, use Fimo's hosted Project MCP at
124
+ `https://api.fimo.ai/api/mcp`. That is a separate direction from connecting a Fimo project to an external MCP server.
@@ -23,6 +23,29 @@ Write one schema per `src/schemas/<Uid>.json`. The PascalCase filename must matc
23
23
 
24
24
  Required root keys: `uid`, `name`, and `fields`.
25
25
 
26
+ ## Group fields in Studio
27
+
28
+ Use optional top-level `groups` when an entry has meaningful editing areas, such as Overview, Tickets, SEO, or Scheduling. They work best for longer forms where editors regularly work on one area at a time. Usually skip groups for short forms, one-field groups, or vague buckets such as General and Other. Prefer two to five groups organized around editor tasks. This is guidance, not a schema limit.
29
+
30
+ Assign each top-level field with `group`; one field may appear in more than one group. This changes only the Studio layout, not stored content, generated types, validation, permissions, or what agents can edit.
31
+
32
+ ```json
33
+ {
34
+ "uid": "Event",
35
+ "name": "Events",
36
+ "groups": [
37
+ { "id": "overview", "label": "Overview", "default": true },
38
+ { "id": "tickets", "label": "Tickets" }
39
+ ],
40
+ "fields": {
41
+ "title": { "type": "string", "group": "overview" },
42
+ "price": { "type": "number", "group": ["overview", "tickets"] }
43
+ }
44
+ }
45
+ ```
46
+
47
+ Group IDs must be unique, at most one group may be the default, and memberships must reference a declared group. Only top-level fields can be grouped; fields inside blocks cannot declare `group`.
48
+
26
49
  Use `"isSingleton": true` whenever the site has exactly one logical document: a homepage, site settings, an About page, or one campaign landing page. Do not turn it into a one-entry collection just to seed content; keep the Single and load `fimo-cli/references/content.md` for the `fimo singles update` workflow.
27
50
 
28
51
  ```json
@@ -6,7 +6,7 @@ description: >-
6
6
  Triggers: "in Fimo Studio", "in the dashboard", "in the web app",
7
7
  "how do I X in the UI", or screenshots of the dashboard. Topics
8
8
  covered: dashboard content and CMS, publishing from the dashboard,
9
- dashboard SEO/domain settings, schedules and run history, outbound webhooks,
9
+ dashboard SEO/domain settings, project connections, schedules and run history, outbound webhooks,
10
10
  visual editing, version history UI, dashboard sharing/billing, dashboard chat,
11
11
  and the command palette. Never describe
12
12
  UI locations, buttons, or panels from memory — always read the relevant
@@ -41,6 +41,7 @@ Read the relevant reference file when the user's question matches a topic.
41
41
  | SEO Settings | references/seo-settings.md | "How do I set up SEO?", "Favicon, title, share image" |
42
42
  | Schedules | references/schedules.md | "Recurring commands", "Run history", "Run now" |
43
43
  | Webhooks | references/webhooks.md | "React to forms", "Send events to another service" |
44
+ | Connections | references/connections.md | "Connect a service", "Add an MCP server" |
44
45
  | Preview & Responsive | references/preview-and-responsive.md | "How does it look on mobile?", "How do I test sizes?" |
45
46
  | Visual Editing | references/visual-editing.md | "Can I edit visually?", "How do I change colors?" |
46
47
  | Version History | references/version-history.md | "How do I undo?", "How do I go back?" |
@@ -58,6 +59,7 @@ Read the relevant reference file when the user's question matches a topic.
58
59
  | Adding images | Media Library, AI Chat, Edit Mode |
59
60
  | Content/CMS | AI Chat, Media Library |
60
61
  | Webhooks | Project secrets, Forms, Publishing, Agents |
62
+ | Connections | AI Chat, Agents, Project secrets |
61
63
  | Schedules | Project secrets, Environments, Agents |
62
64
  | Visual changes | Edit Mode (quick tweaks), AI Chat (bigger changes), Code Editor (full control) |
63
65
  | Something went wrong | Version History, AI Chat |
@@ -83,6 +83,8 @@ Press **Alt+J** to move to the next entry or **Alt+K** to move to the previous o
83
83
 
84
84
  If a field is invalid, the editor keeps the change unsaved and pins a status bar below the header. Choose **Review issues** to jump to the first invalid field, then **Next issue** to move through the remaining fields. Collapsed blocks open automatically. Once every issue is fixed, the editor confirms that all fields are valid and resumes saving.
85
85
 
86
+ Longer entry forms may have quiet field-group tabs below the header. Choose a group to focus on that part of the entry, or choose **All fields** for the complete form. Studio remembers the selected group for that content type during the browser session, and copied entry links preserve the active group. If validation finds a problem elsewhere, **Review issues** opens All fields before focusing it. Groups only change the editor view; they do not hide content from the API or restrict what the AI can edit.
87
+
86
88
  A field labelled with a padlocked globe is shared across languages: it holds one value for the whole entry, so editing it in any language changes it in all of them. Fields without that marker are per language and only affect the language you are editing. Hover the icon for the same explanation in context.
87
89
 
88
90
  ## Editing Text
@@ -0,0 +1,52 @@
1
+ # Connections
2
+
3
+ Connections let a project use external services without exposing credentials to editors, chat, or agents. Studio, the
4
+ CLI, and project agents all resolve the same project-scoped connection state.
5
+
6
+ ## See what is available
7
+
8
+ 1. Open the project.
9
+ 2. Open **More**, then **Settings**.
10
+ 3. Choose **Connections**.
11
+
12
+ The page has two groups:
13
+
14
+ - **Services** are integrations maintained by Fimo, such as Firecrawl, Fal, and Slack.
15
+ - **MCP servers** are remote servers installed for this project. Choose **Add MCP server** beside this group to add one.
16
+
17
+ Each row shows whether the connection is enabled, disabled, or needs attention. Open a row to enable or disable it for
18
+ the current project, inspect its endpoint and live tools, or perform the repair appropriate to its authentication.
19
+
20
+ ## Add an MCP server
21
+
22
+ Choose **Add MCP server** to open one setup flow:
23
+
24
+ 1. Pick a recommended server, choose **Custom MCP server**, or, if you are an organization owner or admin, choose
25
+ **Use from another project**.
26
+ 2. Recommended servers fill their name and endpoint. A custom server asks for a name and Streamable HTTP HTTPS URL.
27
+ 3. **Connect with** offers the recommended sign-in path. Fimo checks the endpoint; public servers connect immediately,
28
+ while OAuth servers open their provider sign-in page and return after approval.
29
+ 4. Open **Other ways to connect** when the server instead documents a bearer token, one or more custom headers, or no
30
+ authentication.
31
+
32
+ For **Paste an access token**, enter only the token; Fimo adds the `Bearer` scheme. For **Send custom headers**, enter
33
+ each complete value exactly as the server expects, including any prefix (`Authorization` with `Bearer abc123`). Fimo
34
+ encrypts every saved grant and never shows its private value again.
35
+
36
+ **Use from another project** does not make other projects' servers generally visible. It is an explicit admin-only
37
+ picker that attaches an existing organization Connection to this project without revealing or copying its credential.
38
+
39
+ Each authentication method has one repair:
40
+
41
+ - **Reconnect** signs in again for OAuth.
42
+ - **Update credentials** replaces a bearer token or the complete custom-header bundle after it stops working.
43
+ - **Rotate credentials** replaces a healthy token or header bundle proactively.
44
+ - **Retry connection** asks a public server for its tools again without touching any credential.
45
+
46
+ Only organization owners and admins can replace a shared credential. OAuth and manual secret headers are never sent
47
+ together.
48
+
49
+ After the server is added, its detail shows the endpoint and the tools Fimo discovered. Only enabled servers become
50
+ available to Studio chat, autonomous agents, and the Fimo CLI for this project. Agents should discover them with
51
+ `fimo integrations list`, inspect them with `fimo integrations info <integration>`, and run an allowed tool with
52
+ `fimo integrations run <integration> <tool>`.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "bundled": true,
3
3
  "bundler": "esbuild",
4
- "bundledAt": "2026-08-23T10:32:11.563Z",
4
+ "bundledAt": "2026-08-23T18:29:50.492Z",
5
5
  "cliVersion": "0.20.0",
6
6
  "external": [
7
7
  "oxc-parser",