Back to the catalog

Marrow

Evidence-grounded, graph-connected, correctable memory for agents.

Open source Open in the app JSON README (API)

About

Evidence-grounded, graph-connected, correctable memory for agents.

Details

Kind
MCP servers
Topic
AI, RAG & memory
Publisher
id.marrow
Origin
official
Category
ferramentas
Transport
http
Version
1.0.10
Added
2026-08-29 03:01:35
Updated
2026-08-29 03:01:35
Origin id
id.marrow/marrow

README

# Marrow CLI

Use the Marrow CLI to add records, run queries, manage API keys, and start MCP
over stdio. Connect remote-capable MCP clients directly to
`https://mcp.marrow.id`; use `marrow mcp` when a client requires a local stdio
server. Version `1.0.11` uses separate credentials for account and product work:

- a CLI session authorizes human account and API-key management;
- `MARROW_API_KEY` authorizes product commands and local MCP;
- non-secret defaults live in the Marrow config file;
- customer keys never enter command arguments or Marrow config.

The CLI runs inside a trusted application process. Keep returned text as data
and preserve citations, warnings, and `insufficient_evidence` when another
model consumes it. See the [OpenAPI document](../openapi.yaml) and the
[Native Memory API](../api-reference/memory.md).

## Install

Install CLI version 1.0.11 with Node.js 20 or newer:

```bash
npm install -g @marrowid/cli@1.0.11
npm exec --package @marrowid/cli@1.0.11 -- marrow --version
marrow --version
marrow --help
```

If an older global binary is already on `PATH`, the `npm exec` check verifies
1.0.11 independently before you replace the global install.

## First setup

Create the local config, set only the defaults you need, then inspect the local
setup without making a network request:

```bash
marrow init
marrow config --workspace default
marrow doctor
```

`marrow init` and `marrow config` write only the API base URL and workspace
default. `marrow doctor` reports package, platform, config permissions,
and whether `MARROW_API_KEY` is present. It reports presence, never the key.

An upgraded client that finds a legacy plaintext `apiKey` refuses every network
request. Set `MARROW_API_KEY` through your shell, process manager, or secret
store; the next network command removes only the legacy key field atomically and
preserves the non-secret defaults.

## Credentials and platform support

| Task | Credential | Storage |
| :--- | :--- | :--- |
| Product ingest, query, and native memory commands | Customer API key | `MARROW_API_KEY` in the process environment |
| Local stdio MCP | Customer API key | Inherited `MARROW_API_KEY`; never MCP JSON |
| Hosted MCP | Interactive authorization or customer API key | MCP client's protected credential store |
| API-key create, rotate, revoke, and list | CLI account session | macOS Keychain |
| Browser account and billing work | Browser session | Marrow Console |

## Auth

Customer API keys are for apps and automation, not for signing in to this local CLI.

Device sign-in is available on macOS in version 1.0.11:

```bash
marrow auth login
marrow auth status
```

The browser flow must show the account, short code, expiry, and consequence
before deliberate approval. Login or signup alone does not approve a device.
Linux and Windows reject `marrow auth login` before sending a device request;
use the Console for account management and an environment customer key for
product commands and local MCP.

Sign out the device when it should no longer manage the account:

```bash
marrow auth logout
```

Logout clears the CLI session. It does not revoke or rotate customer API keys.

## Add records

Product commands require `MARROW_API_KEY`. Preview a source before writing:

```bash
marrow ingest url https://example.com/onboarding-note --dry-run --dated-at 2026-05-16
marrow ingest file ./onboarding.md --dry-run --dated-at 2026-05-16
```

Submit it when the preview is correct:

```bash
marrow ingest url https://example.com/onboarding-note --dated-at 2026-05-16 --idempotency-key onboarding-note-2026-05-16
marrow ingest file ./onboarding.md --dated-at 2026-05-16 --idempotency-key onboarding-file-2026-05-16
```

Use the authored, published, or otherwise relevant date. A live submission
requires a caller-owned idempotency key between 8 and 160 characters. Reuse the
same key when retrying the same submission; use a new key for a different
source or changed content. Dry-runs may omit it. Poll the returned job until it
reaches `succeeded`, `failed`, or `quarantined`:

```bash
marrow ingest jobs list --limit 5
marrow ingest jobs show <job-id>
```

## Query Marrow

Ask one concrete question after processing succeeds:

```bash
marrow query "What should this workflow remember about onboarding?" \
  --mode answer \
  --preset accuracy
```

The response includes citations, source labels, excerpts, and warnings. If
Marrow returns `insufficient_evidence`, add relevant material or continue
without Marrow.

Native workspace, peer, session, claim, event, and queue commands use the same
environment customer key. Use each command's `--help` option for its exact
arguments.

## Manage API keys on macOS

With an active CLI account session:

```bash
marrow api-keys list
marrow api-keys create --name "Production app"
marrow api-keys create --name "Query only" --scope query
marrow api-keys create --name "Memory app" --scope ingest --scope query --scope memory.read --scope memory.write
marrow api-keys rotate <key-id>
marrow api-keys revoke <key-id>
```

Omit scope flags for the `ingest,query` default. Available scopes are `ingest`,
`query`, `memory.read`, and `memory.write`. Create and rotate show a new secret
once; list and revoke never reveal it.

## MCP

Connect remote-capable clients to:

```text
https://mcp.marrow.id
```

People can use interactive authorization to connect an MCP client to their
Marrow account. A server-managed client can use an API key with the required
memory scopes. Connected applications remain visible and revocable in Console.

Use `marrow mcp` when the MCP client requires a local stdio server. It connects
to the same Marrow account and exposes the same 14 tools as Hosted MCP.

`marrow mcp` is the shipped local newline-delimited JSON-RPC entrypoint over
stdio. Start the MCP client from a process that already inherits
`MARROW_API_KEY`; do not paste a key into MCP client JSON.

```bash
marrow mcp
```

The server exposes 14 tools for query, peer, session, claim, event, queue, and
representation workflows. The canonical query tool requires `query`;
native-memory reads require `memory.read`; writes require `memory.write`.
Wrong-scope and revoked-key errors are returned to the client. See the
[MCP tool table](./app-context.md#mcp-tools) and the short
[coding-agent prompt](./app-context.md#prompt-for-a-coding-agent).

The local MCP server and tool schemas are available with the CLI. Calls to
native memory remain scoped by `memory.read` and `memory.write`.

## Output and troubleshooting

Human-readable output is the default. Use `--json` only when automation needs a
stable structured response.

- Missing key: configure `MARROW_API_KEY` in the invoking process.
- Missing live-ingest replay key: add `--idempotency-key <key>`, or use
  `--dry-run` while previewing.
- Legacy plaintext key: supply the environment key once so the client can
  remove the legacy config field before network use.
- Wrong scope: rotate or create a key with only the required scope.
- Revoked key: replace the environment value; do not restore the old key.
- Device login on Linux or Windows: use the Console for account work.
- Local setup uncertainty: run `marrow doctor`; it performs no network request.

Proprietary. `UNLICENSED` means the package is a distribution channel, not an
open-source grant.

More