Solid Commerce Docs

Solid Commerce in Microsoft 365 Copilot

Value. Bring Solid Commerce into the Microsoft 365 surface — Outlook, Teams, the Copilot side panel, and the M365 Copilot CLI — so ops, finance, and customer-service teams already in M365 can run their marketplace work in place.

Choose this when your team is an M365 shop (Outlook for buyer comms, Teams for internal, Excel for reconciliation) and Copilot is your assistant layer.

Connect

  1. A Microsoft 365 admin installs Solid Commerce from the Microsoft Teams / Copilot app store for your tenant.
  2. On first use, Copilot prompts each user to authorize. Microsoft Entra ID identifies the user; the Solid Commerce access token is issued by Solid Commerce, scoped to the company you select.
  3. The consent screen lists requested scopes in plain English.

The OAuth flow uses the Teams platform redirects (.../v1.0/oAuthRedirect and .../v1.0/oAuthConsentRedirect).

Try it — right inside your M365 apps

Reads run immediately; writes (reply, fulfill, cancel, reprice) ask for confirmation first.

Under the hood (for builders)

The declarative agent calls the same canonical Solid Commerce API:

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

Solid Commerce is published through Microsoft Partner Center to the Copilot / Teams app store. Review our Privacy Policy and Terms.