@shuffleio/shuffle-mcps 0.0.6 → 0.0.8

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.
package/README.md CHANGED
@@ -14,14 +14,24 @@ Turn 3,000+ SaaS tools into MCP servers your agents can use. One search, one cli
14
14
  ---
15
15
 
16
16
  <table align="center">
17
+ <tr>
18
+ <td align="center" width="50%">
19
+ <img src="https://github.com/user-attachments/assets/930d7e2b-61b4-4b1c-b90b-37a55cb6a98d" alt="Easy MCP debugger" width="380" style="border-radius: 12px;" />
20
+ <br/><sub><b>1. Easy to try out</b></sub>
21
+ </td>
22
+ <td align="center" width="50%">
23
+ <img src="https://github.com/user-attachments/assets/ce7f650c-61f7-4b68-bc40-724283e684f4" alt="Easy MCP debugger" width="380" style="border-radius: 12px;" />
24
+ <br/><sub><b>2. Debugger with timeline</b></sub>
25
+ </td>
26
+ </tr>
17
27
  <tr>
18
28
  <td align="center" width="50%">
19
29
  <img src="https://security.shuffler.io/mcp/search-preview.png" alt="Search 3,000+ integrations" width="380" style="border-radius: 12px;" />
20
- <br/><sub><b>1. Search any of 3,000+ tools</b></sub>
30
+ <br/><sub><b>3. Search any of 3,000+ tools</b></sub>
21
31
  </td>
22
32
  <td align="center" width="50%">
23
33
  <img src="https://security.shuffler.io/mcp/app-detail-preview.png" alt="Authenticate and use as MCP" width="380" style="border-radius: 12px;" />
24
- <br/><sub><b>2. Authenticate — your agent uses it instantly</b></sub>
34
+ <br/><sub><b>4. Authenticate — your agent uses it instantly</b></sub>
25
35
  </td>
26
36
  </tr>
27
37
  </table>
@@ -85,7 +95,7 @@ export default function App() {
85
95
 
86
96
  ## The components
87
97
 
88
- The library exports four React components — use one or all of them. They share state, so you can mix-and-match.
98
+ The library exports six React components — use one or all of them. They share state, so you can mix-and-match.
89
99
 
90
100
  | Component | What it does | Live demo |
91
101
  |---|---|---|
@@ -93,6 +103,9 @@ The library exports four React components — use one or all of them. They share
93
103
  | [`<AppSearchDrawer />`](#2-appsearchdrawer--full-search-drawer) | Right-side drawer wrapping `<ShuffleMCP />` plus a "Your apps" status row. This is the exact "Add Ingestion Source" drawer used in production | [/shuffle-mcp-demo §2](https://security.shuffler.io/shuffle-mcp-demo) |
94
104
  | [`<AppDetailDrawer />`](#3-appdetaildrawer--single-app-config) | Right-side drawer for a single app: list/edit/test authentications and try the MCP `tools/call` endpoint inline | [/shuffle-mcp-demo §3](https://security.shuffler.io/shuffle-mcp-demo) |
95
105
  | [`<AgentUI />`](#4-agentui--start--debug-agents) | Standalone "What do you want to do?" hero prompt + live decision-by-decision debugger for `/api/v1/agent` runs. Drop-in replacement for the legacy Shuffle Core agent page | [/agents](https://security.shuffler.io/agents) |
106
+ | [`<AgentRunDrawer />`](#5-agentrundrawer--run-agent-side-panel) | Right-side drawer that hosts `<AgentUI />` in compact mode plus optional caller-provided **Permissions** and **Local LLM** tabs (slot-driven, no host context required) | [/shuffle-mcp-demo §1b](https://security.shuffler.io/shuffle-mcp-demo) |
107
+ | [`<AgentActivityList />`](#6-agentactivitylist--past-executions) | Searchable, status-filterable list of past `/api/v1/agent` runs. Pair with `<AgentExecutionDrawer />` to inspect any row in the canonical Simple/Detailed view | [/shuffle-mcp-demo §8](https://security.shuffler.io/shuffle-mcp-demo) |
108
+ | [`<AgentExecutionDrawer />`](#7-agentexecutiondrawer--inspect-one-run) | Right-side drawer that pre-loads a single `AgentRun` into `<AgentUI />` (no `authorization` token required) for read-only inspection | [/agents](https://security.shuffler.io/agents) |
96
109
 
97
110
  ### 1. `<ShuffleMCP />` — inline search
98
111
 
@@ -237,9 +250,103 @@ Useful props:
237
250
  | `compact` / `hideHeroIcon` / `hideAppPicker` / `hideAttach` | `boolean` | Layout switches for embedding |
238
251
  | `maxWidth` | `number` | Max width of the centered card. Default `900` |
239
252
  | `onRun` | `(info) => void` | Fires whenever a run finishes (success or failure) |
253
+ | `className` / `sx` / `contentSx` | `string` / `SxProps` | Style overrides for the root container and inner content column |
240
254
 
241
255
  Reference page in production: [`src/pages/dashboard/AgentsPage.tsx`](../pages/dashboard/AgentsPage.tsx) (mounted at [`/agents`](https://security.shuffler.io/agents)).
242
256
 
257
+ ### 5. `<AgentRunDrawer />` — Run Agent side panel
258
+
259
+ Right-side drawer that embeds `<AgentUI />` in compact mode, with optional **Permissions** and **Local LLM** tabs you fill via slots. Zero host-app context required — pass `apiKey` / `apiBaseUrl` / `orgId` through `agentUIProps` to authenticate.
260
+
261
+ ```tsx
262
+ import { useState } from 'react';
263
+ import { AgentRunDrawer } from 'shuffle-mcps';
264
+
265
+ const [open, setOpen] = useState(false);
266
+
267
+ <AgentRunDrawer
268
+ open={open}
269
+ onClose={() => setOpen(false)}
270
+ agentUIProps={{ apiKey: user.apiKey, orgId: user.orgId }}
271
+ permissionsSlot={<MyPermissionsPanel />} // optional — tab is hidden when omitted
272
+ localLLMSlot={<MyLocalLLMConfig />} // optional — tab is hidden when omitted
273
+ />
274
+ ```
275
+
276
+ Useful props:
277
+
278
+ | Prop | Type | Description |
279
+ |---|---|---|
280
+ | `open` / `onClose` | `boolean` / `() => void` | Controlled open state |
281
+ | `initialTab` | `'run' \| 'permissions' \| 'localLLM'` | Tab focused on open. Default `'run'` |
282
+ | `permissionsSlot` / `localLLMSlot` | `ReactNode` | Render content for the optional tabs. Tab is hidden when omitted |
283
+ | `agentUIProps` | `Partial<AgentUIProps>` | Forwarded to the embedded `<AgentUI />` |
284
+ | `width` | `number` | Drawer width in px. Default `520` |
285
+ | `title` / `subtitle` | `string` | Header copy |
286
+ | `className` / `paperSx` / `headerSx` / `tabsSx` / `bodySx` | `string` / `SxProps` | Style overrides for the Drawer Paper, header bar, tab strip, and body container |
287
+
288
+ ### 6. `<AgentActivityList />` — past executions
289
+
290
+ Searchable, status-filterable list of past `/api/v1/agent` runs. The component owns its own fetch + pagination loop. `onRunClick` lets the caller decide what happens on row click — typically opening `<AgentExecutionDrawer />`.
291
+
292
+ ```tsx
293
+ import { useState } from 'react';
294
+ import { AgentActivityList, AgentExecutionDrawer, type AgentRun } from 'shuffle-mcps';
295
+
296
+ const [selectedRun, setSelectedRun] = useState<AgentRun | null>(null);
297
+
298
+ <>
299
+ <AgentActivityList
300
+ apiKey={user.apiKey}
301
+ orgId={user.orgId}
302
+ onRunClick={setSelectedRun}
303
+ />
304
+
305
+ <AgentExecutionDrawer
306
+ open={!!selectedRun}
307
+ onClose={() => setSelectedRun(null)}
308
+ run={selectedRun}
309
+ apiKey={user.apiKey}
310
+ orgId={user.orgId}
311
+ />
312
+ </>
313
+ ```
314
+
315
+ Useful props:
316
+
317
+ | Prop | Type | Description |
318
+ |---|---|---|
319
+ | `apiKey` / `apiBaseUrl` / `orgId` | `string` | Auth — same fallback semantics as `<AgentUI />` |
320
+ | `onRunClick` | `(run: AgentRun) => void` | Row click handler |
321
+ | `showSearchBar` / `showStatusChips` | `boolean` | Toggle the toolbar pieces. Default `true` |
322
+ | `limit` | `number` | Page size. Default `50` |
323
+ | `emptyTitle` / `emptySubtitle` | `string` | Empty-state copy |
324
+ | `className` / `sx` / `toolbarSx` / `rowSx` | `string` / `SxProps` | Style overrides for the root container, toolbar, and each run row |
325
+
326
+ ### 7. `<AgentExecutionDrawer />` — inspect one run
327
+
328
+ Right-side drawer that pre-loads a single `AgentRun` into `<AgentUI />` so you can inspect the Simple/Detailed view of any past execution without an `authorization` token.
329
+
330
+ ```tsx
331
+ <AgentExecutionDrawer
332
+ open={!!selectedRun}
333
+ onClose={() => setSelectedRun(null)}
334
+ run={selectedRun}
335
+ apiKey={user.apiKey}
336
+ orgId={user.orgId}
337
+ />
338
+ ```
339
+
340
+ Useful props:
341
+
342
+ | Prop | Type | Description |
343
+ |---|---|---|
344
+ | `open` / `onClose` | `boolean` / `() => void` | Controlled open state |
345
+ | `run` | `AgentRun \| null` | The run to display. When `null` and `open=true`, the drawer renders empty |
346
+ | `width` | `number` | Drawer width in px. Default `720` |
347
+ | `apiKey` / `apiBaseUrl` / `orgId` | `string` | Forwarded to the embedded `<AgentUI />` |
348
+ | `className` / `paperSx` / `headerSx` / `bodySx` | `string` / `SxProps` | Style overrides for the Drawer Paper, header bar, and body container |
349
+
243
350
  ### Predefined search
244
351
 
245
352
  ```tsx
@@ -355,6 +462,18 @@ For finer-grained overrides on `<ShuffleMCP />`, pass `customStyles` — every s
355
462
  />
356
463
  ```
357
464
 
465
+ For the agent components (`<AgentUI />`, `<AgentRunDrawer />`, `<AgentExecutionDrawer />`, `<AgentActivityList />`), every entity in the layout is overridable via MUI `sx` props plus a `className` on the root. The slots are listed per-component in the tables above — typically `sx` (root), `paperSx` (drawer surface), `headerSx`, `tabsSx` / `toolbarSx`, `bodySx`, and `rowSx`. Each one accepts the standard `SxProps<Theme>` shape and is **merged on top of** the defaults, so you only specify what you want to change:
466
+
467
+ ```tsx
468
+ <AgentRunDrawer
469
+ open={open}
470
+ onClose={() => setOpen(false)}
471
+ paperSx={{ background: 'hsl(var(--background))', boxShadow: 'none' }}
472
+ headerSx={{ py: 1.5 }}
473
+ tabsSx={{ '& .MuiTabs-indicator': { display: 'none' } }}
474
+ />
475
+ ```
476
+
358
477
  Full prop reference, framework setup (Next.js, Vue), styling slots, custom rendering, and publishing: [**LIBRARY.md**](./LIBRARY.md).
359
478
 
360
479
  ## Imperative handle