Solid Commerce Docs

Solid Commerce in Gemini CLI

Value. A first-class Solid Commerce CLI experience for engineers and operators who run Gemini CLI as their AI shell.

Choose this when your engineering team uses Gemini CLI as the default AI command-line.

Install

1. Create an API key. In your Solid Commerce workspace, open Developer → API keys → New (the /developer/keys page) and copy the secret — it is shown only once.

2. Add the MCP server to Gemini CLI over stdio by adding it to ~/.gemini/settings.json, passing your key:

{
  "mcpServers": {
    "solidcommerce": {
      "command": "npx",
      "args": ["-y", "@solidcommerce/mcp-server@alpha"],
      "env": {
        "SOLIDCOMMERCE_API_KEY": "YOUR_KEY",
        "SOLIDCOMMERCE_API_BASE_URL": "https://api.takeoffcommerce.com"
      }
    }
  }
}

SOLIDCOMMERCE_API_BASE_URL is required — the server's built-in default points at a legacy host without the /v1 API, so tool calls fail without it.

A hosted remote server (https://mcp.solidcommerce.com/mcp) with per-user OAuth is coming for the non-terminal surfaces (Claude UI, ChatGPT, and so on).

Try it

Start gemini and confirm /mcp lists solidcommerce as connected, then ask in natural language — "list 5 products from my Solid Commerce catalog" — or script against the SDK directly:

1. List today's orders

A read-only call — safe to run the moment you connect.

import { SolidCommerceClient } from '@solidcommerce/sdk';

const client = new SolidCommerceClient({
  baseUrl: 'https://api.solidcommerce.com',
  auth: { kind: 'bearer', token: process.env.SC_TOKEN! },
});

const since = new Date(Date.now() - 86_400_000).toISOString();
const { data } = await client.raw.GET('/v1/orders/orders', {
  params: { query: { created_after: since, limit: 50 } },
});
console.log(`${data?.data.length ?? 0} orders in the last 24h`);

2. Reprice a listing

A write — the audited reason is captured even if you forget to mention it. In a conversational host this surfaces a confirmation prompt first (every write tool is annotated destructiveHint).

await client.raw.PATCH('/v1/listings/list-items/{listItemId}/automation', {
  params: { path: { listItemId: 'li_1234' } },
  body: { list_price: 19.99, metadata: { price_change_reason: 'competitor match' } },
});

3. Check inventory across warehouses

Another read — see stock for every warehouse in one call.

const { data } = await client.raw.GET('/v1/inventory/warehouses');
for (const wh of data?.data ?? []) {
  console.log(wh.name, wh.available_units);
}

Availability

Register through the Gemini CLI plugin / MCP registry; the configuration above is self-serve today. Review our Privacy Policy and Terms.