Back to the catalog

inertialai

Embed and analyze sensor and time-series data using the InertialAI API. Provides MCP tools for embedding, similarity search, and nearest-nei

Open source Repository Open in the app JSON README (API)

About

Embed and analyze sensor and time-series data using the InertialAI API. Provides MCP tools for embedding, similarity search, and nearest-neighbor classification, plus workflow skills for IMU session analysis, anomaly detection, and session comparison. Embeddings are stored locally and referenced by handle so high-dimensional vectors never enter the model's context window.

Details

Kind
Plugins
Topic
AI, RAG & memory
Publisher
inertialai
Origin
marketplace
Category
ferramentas
Last push
2026-05-27T21:22:34Z
Repository state
ativo
Language
Python
License
MIT
Added
2026-08-30 01:48:58
Updated
2026-08-30 01:48:58
Origin id
inertialai/claude-plugin/inertialai

README

# InertialAI Claude Code plugin

Time-series embedding and analysis tools for [Claude Code](https://docs.claude.com/en/docs/claude-code), powered by the [InertialAI API](https://docs.inertialai.com).

## Install

```
/plugin marketplace add InertialAI/claude-plugin
/plugin install inertialai@inertialai-plugins
```

Then configure your API key (see below). Requires [`uv`](https://docs.astral.sh/uv/) on `PATH` — the MCP server runs as a `uv` script with inline dependencies, nothing else to install.

## API key

The server resolves the key in this order: `INERTIAL_API_KEY` env var → OS keychain → none. Pick whichever fits your platform:

- **OS keychain (recommended on macOS / Linux desktop / Windows).** In Claude Code, run `/inertialai:setup` — it walks you through running a one-time terminal command that reads the key via `getpass`, validates it, and stores it in your OS keychain. The key never enters the chat.
- **Environment variable (works everywhere including headless Linux / WSL).** Add `export INERTIAL_API_KEY='your-key'` to `~/.zshrc` or `~/.bashrc`, restart your shell.

Never paste your API key into a Claude Code prompt — it would land in transcripts and request logs. Use one of the two paths above.

## Layout

```
.
├── .claude-plugin/marketplace.json          # marketplace catalog
└── plugins/inertialai/
    ├── .claude-plugin/plugin.json           # plugin manifest
    ├── .mcp.json                            # declares the MCP server
    ├── scripts/setup-key.py                 # one-time interactive key installer
    ├── server/                              # MCP server
    │   ├── server.py                        # entry point (PEP 723 script): builds FastMCP, registers tools
    │   ├── store.py                         # SQLite-backed embedding store + vector helpers
    │   ├── auth.py                          # API key resolution + setup-error payload
    │   └── tools/                           # one file per MCP tool, each a Tool subclass
    │       ├── _base.py                     # Tool base class
    │       ├── __init__.py                  # ALL_TOOLS registry
    │       ├── create_embedding.py
    │       ├── list_models.py
    │       ├── compare.py
    │       ├── find_similar.py
    │       ├── classify.py
    │       ├── list_embeddings.py
    │       ├── delete_embedding.py
    │       └── check_setup.py
    └── skills/                              # playbooks Claude auto-invokes
        ├── TEMPLATE.md                      # copy this into skills/<name>/SKILL.md
        ├── analyze-imu-session/SKILL.md
        ├── find-anomalies/SKILL.md
        ├── compare-sessions/SKILL.md
        └── setup/SKILL.md
```

## Adding a new MCP tool

1. Create `plugins/inertialai/server/tools/<your_tool>.py` defining a subclass of `Tool` (`tools/_base.py`). Set `name = "<your_tool>"` and implement `run` (sync or async) with typed parameters and a docstring — FastMCP derives the JSON schema and description from it.
2. Import the class in `tools/__init__.py` and append it to `ALL_TOOLS`.
3. Restart the MCP server (or run `/reload-plugins`).

No edits to `server.py` required.

## Adding a new skill

Copy `plugins/inertialai/skills/TEMPLATE.md` into a new directory:

```
mkdir plugins/inertialai/skills/<your-skill>/
cp plugins/inertialai/skills/TEMPLATE.md plugins/inertialai/skills/<your-skill>/SKILL.md
```

Fill in the frontmatter and sections, then reload.

## Tools

All tools operate on stored **handles** rather than raw vectors, so 512-dim floats never enter the model's context.

| Tool | Purpose |
| --- | --- |
| `create_embedding` | Call the API, store the vector locally, return a handle. Pass `label` to add to a classifier corpus. |
| `list_models` | List available embedding models. |
| `compare` | Cosine similarity between two handles. |
| `find_similar` | Top-k most similar handles to a query. |
| `classify` | Nearest-neighbor classify against the labeled corpus. |
| `list_embeddings` / `delete_embedding` | Manage the local store. |
| `check_setup` | Diagnose API key state and surface setup instructions. |

Embeddings persist in `${CLAUDE_PLUGIN_DATA}/embeddings.db`.

## Adding new models

The API takes `model` as a parameter, so new embedding models work without a plugin update. New endpoint families (forecasting, classification-as-a-service, etc.) get new tools added to `server/server.py`.

## Roadmap

Currently Claude Code only. The MCP server runs as a local subprocess (`uv run --script`), which Cowork's hosted runtime doesn't support. Cowork compatibility is pending a hosted HTTP MCP gateway at `mcp.inertialai.com`; once that ships, the same plugin will work in both products.

More