@muxoai/sdk 1.4.4 → 1.4.5
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/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/README.md +11 -1
- package/dist/cli.js +0 -0
- package/dist/composio-catalog.d.ts +1 -0
- package/dist/composio-catalog.js +12 -0
- package/dist/engine.d.ts +2 -0
- package/dist/engine.js +20 -4
- package/dist/mcp-schema.js +14 -2
- package/dist/mcp.js +36 -0
- package/dist/oss-suite.js +2 -2
- package/dist/server.js +14 -5
- package/dist/skills-catalog.js +41 -2
- package/dist/store.d.ts +4 -1
- package/dist/store.js +37 -3
- package/dist/types.d.ts +1 -0
- package/dist/ui/console-html.js +12 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/plugins/muxo/.claude-plugin/plugin.json +2 -2
- package/plugins/muxo/.codex-plugin/plugin.json +3 -3
- package/plugins/muxo/.cursor-plugin/plugin.json +2 -2
- package/plugins/muxo/plugin.json +3 -3
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"plugins": [
|
|
7
7
|
{
|
|
8
8
|
"name": "muxo",
|
|
9
|
-
"version": "1.4.
|
|
9
|
+
"version": "1.4.5",
|
|
10
10
|
"description": "Governed execution across 1,000+ Connected Apps, Instant Tools (search, scrape, crawl, SEO audit), Cloud Infrastructure provisioning, Workspace Memory recall, and cryptographic execution receipts.",
|
|
11
11
|
"source": {
|
|
12
12
|
"source": "local",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"metadata": {
|
|
10
10
|
"description": "Official Muxo plugin marketplace for governed execution across Connected Apps, Instant Tools, Cloud Infrastructure, and Workspace Memory.",
|
|
11
|
-
"version": "1.4.
|
|
11
|
+
"version": "1.4.5"
|
|
12
12
|
},
|
|
13
13
|
"plugins": [
|
|
14
14
|
{
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"strict": false,
|
|
21
21
|
"description": "Governed execution across 1,000+ Connected Apps, Instant Tools (search, scrape, crawl, SEO audit), Cloud Infrastructure provisioning, Workspace Memory recall, and verifiable audit records.",
|
|
22
|
-
"version": "1.4.
|
|
22
|
+
"version": "1.4.5",
|
|
23
23
|
"category": "Productivity",
|
|
24
24
|
"skills": [
|
|
25
25
|
"./plugins/muxo/skills/muxo",
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **Let your AI agents take action across business apps, with approvals, spending controls, and proof of what happened.**
|
|
4
4
|
|
|
5
|
-
Muxo (`v1.4.
|
|
5
|
+
Muxo (`v1.4.5`) is the governed action, workflow automation, cloud provisioning, and business-receipt platform for AI agents and B2B SaaS teams. Before any external write or provisioning action runs, Muxo shows **what changes**, **who is affected**, **the estimated USD cost (`$X.XX` alongside credits or `$0.00` BYOK)**, and **which guardrail triggered approval**. After execution, Muxo issues both a **business-facing receipt** (*what changed, who authorized it, what succeeded, what remains unresolved, and exact USD/credit cost*) and a **cryptographic Ed25519 + SHA-256 audit receipt**.
|
|
6
6
|
|
|
7
7
|
Customers and their agents interact exclusively with **Muxo** — either via tested workflow packs, structured tool slugs, or free-form **Natural Language** (`muxo do`, `POST /api/v1/do`, `client.do()`, and MCP `plan_action`).
|
|
8
8
|
|
|
@@ -121,6 +121,16 @@ Muxo ships a portable OpenAI Plugin (`plugins/muxo/plugin.json` & `plugins/muxo/
|
|
|
121
121
|
|
|
122
122
|
## Architecture & Source Layout
|
|
123
123
|
|
|
124
|
+
### Domain skills and workspace gateways
|
|
125
|
+
|
|
126
|
+
Tool inspection and action planning include a `domainSkill` hint when a matching playbook exists. Read its provider pitfalls and required execution lane before planning:
|
|
127
|
+
|
|
128
|
+
- List skills: `GET /api/v1/skills` or MCP `get_run_context({ action: "skills", provider: "github", category: "app_automation" })`.
|
|
129
|
+
- Read a skill: MCP `get_run_context({ action: "get_skill", slug: "github-automation" })`, `muxo://skills/github-automation`, or `GET /skills/github-automation/SKILL.md`.
|
|
130
|
+
- Reconcile an existing run without replaying it: `get_run_context({ action: "reconcile_run", run_id: "<original-run-id>" })`. Reconciliation reports available run and receipt evidence; it does not guarantee an external effect.
|
|
131
|
+
|
|
132
|
+
For Composio BYOK, `POST /api/v1/byok` accepts an optional `mcpGatewayUrl` alongside the privately supplied key. Only HTTPS `connect.composio.dev` and `mcp.composio.dev` URLs without embedded credentials, query parameters, or fragments are accepted. Key rotation preserves the workspace gateway; deleting the Composio key removes it. Configure it in the console's BYOK form or through the API. Skills and gateways never grant OAuth consent, approval, or execution authority.
|
|
133
|
+
|
|
124
134
|
| File / Directory | Responsibility |
|
|
125
135
|
| --- | --- |
|
|
126
136
|
| `ARCHITECTURE.md` | Internal engineering blueprint, Keep/Adopt/Drop ecosystem matrix, and Stripe Projects analysis |
|
package/dist/cli.js
CHANGED
|
File without changes
|
|
@@ -250,6 +250,7 @@ export interface ComposioMcpGatewayResult {
|
|
|
250
250
|
data: Record<string, unknown> | null;
|
|
251
251
|
error?: string;
|
|
252
252
|
}
|
|
253
|
+
export declare function normalizeComposioByokGatewayUrl(value: string): string;
|
|
253
254
|
export declare function canUseComposioMcpGatewayForExecution(opts: {
|
|
254
255
|
apiKey?: string | null;
|
|
255
256
|
gatewayUrl?: string | null;
|
package/dist/composio-catalog.js
CHANGED
|
@@ -1892,6 +1892,18 @@ export function renderDefaultHostedSiteHtml(params) {
|
|
|
1892
1892
|
</body>
|
|
1893
1893
|
</html>`;
|
|
1894
1894
|
}
|
|
1895
|
+
export function normalizeComposioByokGatewayUrl(value) {
|
|
1896
|
+
try {
|
|
1897
|
+
const url = new URL(value.trim());
|
|
1898
|
+
if (url.protocol === "https:" &&
|
|
1899
|
+
["connect.composio.dev", "mcp.composio.dev"].includes(url.hostname) &&
|
|
1900
|
+
!url.port && !url.username && !url.password && !url.search && !url.hash) {
|
|
1901
|
+
return url.href;
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
catch { }
|
|
1905
|
+
throw new Error("MCP gateway must be an HTTPS Composio URL without credentials, query parameters, or fragments.");
|
|
1906
|
+
}
|
|
1895
1907
|
export function canUseComposioMcpGatewayForExecution(opts) {
|
|
1896
1908
|
const key = String(opts.apiKey || "").trim();
|
|
1897
1909
|
if (!key)
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MuxoConfig } from "./config.js";
|
|
2
|
+
import { type MuxoDomainSkillHint } from "./skills-catalog.js";
|
|
2
3
|
import { exportTemporalEventHistory, type DurableWorkflow } from "./durable-workflow.js";
|
|
3
4
|
import { type CommercialPlaybookDefinition, type CommercialRoiReport, type CompiledPolicyAsCodeBundle, type HarnessConfigurationBundle, type OtelTraceExportBundle, type PolicyAsCodeEvaluationResult, type RunReconciliationReport } from "./oss-suite.js";
|
|
4
5
|
import { type NaturalLanguageResolution } from "./nl.js";
|
|
@@ -126,6 +127,7 @@ export declare class MuxoEngine {
|
|
|
126
127
|
instructions: string;
|
|
127
128
|
};
|
|
128
129
|
humanHandoff?: HumanHandoff;
|
|
130
|
+
domainSkill?: MuxoDomainSkillHint;
|
|
129
131
|
llmGuidance: LlmGuidance;
|
|
130
132
|
nextStep: string;
|
|
131
133
|
}>;
|
package/dist/engine.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
2
|
import { isStripeProjectsExclusiveProvider, normalizeStripeProjectsProviderSlug, wrapMuxoConnectUrl, } from "./composio-catalog.js";
|
|
3
|
+
import { getProviderSkillHint } from "./skills-catalog.js";
|
|
3
4
|
import { APPROVED_PLAN_STATUSES, approvalRequiredError, buildApprovalHumanHandoff, buildApprovalUrl, buildOAuthHumanHandoff, clampWaitSeconds, looksLikeToolSlug, unknownToolError, } from "./mcp-schema.js";
|
|
4
5
|
import { completeCloudProvisioningWorkflow, createCloudProvisioningWorkflow, exportTemporalEventHistory, normalizeWorkflowTarget, rollbackDurableWorkflow as runSagaRollbackOnWorkflow, signalDurableWorkflow as sendSignalToWorkflow, workflowNotFoundError, } from "./durable-workflow.js";
|
|
5
6
|
import { buildMemoryKnowledgeGraph } from "./memory-graph.js";
|
|
@@ -174,21 +175,30 @@ export class MuxoEngine {
|
|
|
174
175
|
// 4. inspect_tool
|
|
175
176
|
async inspectTool(slug) {
|
|
176
177
|
const normalized = slug.trim();
|
|
178
|
+
const withSkillHint = (tool) => {
|
|
179
|
+
const hint = getProviderSkillHint(tool.providerSlug || tool.slug, this.config.baseUrl);
|
|
180
|
+
return hint
|
|
181
|
+
? {
|
|
182
|
+
...tool,
|
|
183
|
+
domainSkill: hint,
|
|
184
|
+
}
|
|
185
|
+
: tool;
|
|
186
|
+
};
|
|
177
187
|
const billing = this.stripeBilling
|
|
178
188
|
.listTools()
|
|
179
189
|
.find((t) => t.slug.toLowerCase() === normalized.toLowerCase() ||
|
|
180
190
|
t.upstreamSlug.toLowerCase() === normalized.toLowerCase());
|
|
181
191
|
if (billing)
|
|
182
|
-
return billing;
|
|
192
|
+
return withSkillHint(billing);
|
|
183
193
|
const instant = this.composioInstant.inspectTool(normalized);
|
|
184
194
|
if (instant)
|
|
185
|
-
return instant;
|
|
195
|
+
return withSkillHint(instant);
|
|
186
196
|
const proj = this.stripeProjects.inspectTool(normalized);
|
|
187
197
|
if (proj)
|
|
188
|
-
return proj;
|
|
198
|
+
return withSkillHint(proj);
|
|
189
199
|
const sdk = await this.composioSdk.inspectTool(normalized);
|
|
190
200
|
if (sdk)
|
|
191
|
-
return sdk;
|
|
201
|
+
return withSkillHint(sdk);
|
|
192
202
|
throw unknownToolError(normalized);
|
|
193
203
|
}
|
|
194
204
|
// 5. connection_status
|
|
@@ -692,6 +702,8 @@ export class MuxoEngine {
|
|
|
692
702
|
? this.buildApprovalHandoff(plan)
|
|
693
703
|
: undefined;
|
|
694
704
|
const llmGuidance = this.buildPlanLlmGuidance(plan, authHandoff);
|
|
705
|
+
const domainSkill = getProviderSkillHint(tool.providerSlug || tool.slug, this.config.baseUrl) ||
|
|
706
|
+
undefined;
|
|
695
707
|
return {
|
|
696
708
|
plan,
|
|
697
709
|
tool,
|
|
@@ -699,6 +711,7 @@ export class MuxoEngine {
|
|
|
699
711
|
memoryContext,
|
|
700
712
|
...(authHandoff ? { authHandoff } : {}),
|
|
701
713
|
...(humanHandoff ? { humanHandoff } : {}),
|
|
714
|
+
...(domainSkill ? { domainSkill } : {}),
|
|
702
715
|
llmGuidance,
|
|
703
716
|
nextStep,
|
|
704
717
|
};
|
|
@@ -1347,6 +1360,9 @@ export class MuxoEngine {
|
|
|
1347
1360
|
input: plan.input,
|
|
1348
1361
|
connectedAccountId: activeConnId,
|
|
1349
1362
|
composioApiKey: composioByok,
|
|
1363
|
+
mcpGatewayUrl: composioByok
|
|
1364
|
+
? this.store.getByokMcpGatewayUrl(ctx.workspace.id)
|
|
1365
|
+
: null,
|
|
1350
1366
|
});
|
|
1351
1367
|
}
|
|
1352
1368
|
else if (plan.lane === "stripe_projects") {
|
package/dist/mcp-schema.js
CHANGED
|
@@ -1103,6 +1103,9 @@ export const MUXO_MCP_TOOLS = [
|
|
|
1103
1103
|
"workflow_history",
|
|
1104
1104
|
"configure_harness",
|
|
1105
1105
|
"harness_presets",
|
|
1106
|
+
"reconcile_run",
|
|
1107
|
+
"skills",
|
|
1108
|
+
"get_skill",
|
|
1106
1109
|
"kill_switch",
|
|
1107
1110
|
"governance_status",
|
|
1108
1111
|
"scan_context",
|
|
@@ -1110,7 +1113,7 @@ export const MUXO_MCP_TOOLS = [
|
|
|
1110
1113
|
"switch_workspace",
|
|
1111
1114
|
"onboard_team",
|
|
1112
1115
|
],
|
|
1113
|
-
description: "Control-plane operation (or omit action and pass any plain-English prompt): 'inspect' (default), 'remember' (save fact/preference), 'recall' (list memories), 'forget' (delete matching memories), 'memory_graph' (Graphiti bi-temporal entity/relationship lineage with optional as_of time-travel & focal_entity 2-hop BFS), 'set_guardrail' (apply plain-English or structured parameter_rules guardrail), 'reset_guardrails' (restore default safe guardrails), 'check_policy' (dry-run evaluate tool_slug + input against policy and parameter guardrails before planning), 'cedar_policy' (compile/evaluate AWS Cedar & OPA Rego policy-as-code), 'otel_traces' (export W3C OpenTelemetry GenAI/MCP spans & Langfuse batch), 'roi_analytics' (FinOps & BYOK unit-economics ROI report), 'playbooks' / 'create_playbook' / 'run_playbook' (list, author custom, or execute multi-step Temporal Saga playbooks), 'rollback_workflow' / 'signal_workflow' / 'workflow_history' (Temporal workflow lifecycle; accepts workflow_id='latest'), 'configure_harness' / 'harness_presets' (apply turnkey harness presets like startup-builder, strict-production, read-only-auditor, finops-byok-zero-cost and generate ready-to-paste harness config blocks), 'kill_switch' (pause/resume agent execution), 'governance_status' (Microsoft 9-module status + LLM policy brief), 'scan_context' (OWASP ASI-06 check), 'list_workspaces', 'switch_workspace', or 'onboard_team'",
|
|
1116
|
+
description: "Control-plane operation (or omit action and pass any plain-English prompt): 'inspect' (default), 'remember' (save fact/preference), 'recall' (list memories), 'forget' (delete matching memories), 'memory_graph' (Graphiti bi-temporal entity/relationship lineage with optional as_of time-travel & focal_entity 2-hop BFS), 'set_guardrail' (apply plain-English or structured parameter_rules guardrail), 'reset_guardrails' (restore default safe guardrails), 'check_policy' (dry-run evaluate tool_slug + input against policy and parameter guardrails before planning), 'cedar_policy' (compile/evaluate AWS Cedar & OPA Rego policy-as-code), 'otel_traces' (export W3C OpenTelemetry GenAI/MCP spans & Langfuse batch), 'roi_analytics' (FinOps & BYOK unit-economics ROI report), 'playbooks' / 'create_playbook' / 'run_playbook' (list, author custom, or execute multi-step Temporal Saga playbooks), 'rollback_workflow' / 'signal_workflow' / 'workflow_history' (Temporal workflow lifecycle; accepts workflow_id='latest'), 'configure_harness' / 'harness_presets' (apply turnkey harness presets like startup-builder, strict-production, read-only-auditor, finops-byok-zero-cost and generate ready-to-paste harness config blocks), 'reconcile_run' (verify run state, receipt signature, and upstream side-effect alignment), 'skills' / 'get_skill' (list or fetch governed domain & workflow SKILL.md playbooks), 'kill_switch' (pause/resume agent execution), 'governance_status' (Microsoft 9-module status + LLM policy brief), 'scan_context' (OWASP ASI-06 check), 'list_workspaces', 'switch_workspace', or 'onboard_team'",
|
|
1114
1117
|
},
|
|
1115
1118
|
prompt: {
|
|
1116
1119
|
type: "string",
|
|
@@ -1221,7 +1224,16 @@ export const MUXO_MCP_TOOLS = [
|
|
|
1221
1224
|
},
|
|
1222
1225
|
slug: {
|
|
1223
1226
|
type: "string",
|
|
1224
|
-
description: "
|
|
1227
|
+
description: "Playbook slug when action='run_playbook', or domain/workflow skill slug when action='get_skill' (e.g. 'github-automation', 'supabase-provisioning')",
|
|
1228
|
+
},
|
|
1229
|
+
provider: {
|
|
1230
|
+
type: "string",
|
|
1231
|
+
description: "Provider slug to filter action='skills' or select a provider's skill with action='get_skill'",
|
|
1232
|
+
},
|
|
1233
|
+
category: {
|
|
1234
|
+
type: "string",
|
|
1235
|
+
enum: ["governance", "app_automation", "cloud_infrastructure", "workflow"],
|
|
1236
|
+
description: "Category filter when action='skills'",
|
|
1225
1237
|
},
|
|
1226
1238
|
workflow_id: {
|
|
1227
1239
|
type: "string",
|
package/dist/mcp.js
CHANGED
|
@@ -340,6 +340,42 @@ export async function dispatchMcpToolCall(engine, ctx, toolName, args = {}) {
|
|
|
340
340
|
prompt: prompt || null,
|
|
341
341
|
});
|
|
342
342
|
}
|
|
343
|
+
if (action === "reconcile_run") {
|
|
344
|
+
const runId = String(args.run_id || args.runId || args.slug || query || prompt || "latest").trim();
|
|
345
|
+
return engine.reconcileRun(ctx, runId);
|
|
346
|
+
}
|
|
347
|
+
if (action === "skills") {
|
|
348
|
+
const skills = listMuxoSkills({
|
|
349
|
+
category: args.category ? String(args.category) : undefined,
|
|
350
|
+
provider: args.provider ? String(args.provider) : undefined,
|
|
351
|
+
query: query || prompt || undefined,
|
|
352
|
+
}, engine.config.baseUrl);
|
|
353
|
+
return {
|
|
354
|
+
ok: true,
|
|
355
|
+
action: "skills",
|
|
356
|
+
count: skills.length,
|
|
357
|
+
skills,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
if (action === "get_skill" || action === "skill") {
|
|
361
|
+
const skillSlug = String(args.slug ||
|
|
362
|
+
args.skill_slug ||
|
|
363
|
+
args.skillSlug ||
|
|
364
|
+
args.provider ||
|
|
365
|
+
query ||
|
|
366
|
+
prompt ||
|
|
367
|
+
"github-automation").trim();
|
|
368
|
+
const skill = getMuxoSkill(skillSlug, engine.config.baseUrl);
|
|
369
|
+
if (!skill) {
|
|
370
|
+
throw new Error(`Skill '${skillSlug}' not found in Muxo catalog.`);
|
|
371
|
+
}
|
|
372
|
+
return {
|
|
373
|
+
ok: true,
|
|
374
|
+
action: "get_skill",
|
|
375
|
+
skill,
|
|
376
|
+
markdown: renderMuxoSkillMarkdown(skill.slug, engine.config.baseUrl),
|
|
377
|
+
};
|
|
378
|
+
}
|
|
343
379
|
if (action === "governance_status") {
|
|
344
380
|
return engine.getGovernanceOverview(ctx);
|
|
345
381
|
}
|
package/dist/oss-suite.js
CHANGED
|
@@ -451,7 +451,7 @@ export function buildOtelTraceExport(params) {
|
|
|
451
451
|
{ key: "service.name", value: { stringValue: "muxo-agent-runtime" } },
|
|
452
452
|
{
|
|
453
453
|
key: "service.version",
|
|
454
|
-
value: { stringValue: params.version || "1.4.
|
|
454
|
+
value: { stringValue: params.version || "1.4.5" },
|
|
455
455
|
},
|
|
456
456
|
{
|
|
457
457
|
key: "muxo.workspace.id",
|
|
@@ -467,7 +467,7 @@ export function buildOtelTraceExport(params) {
|
|
|
467
467
|
{
|
|
468
468
|
scope: {
|
|
469
469
|
name: "@muxoai/otel-genai-mcp-tracer",
|
|
470
|
-
version: params.version || "1.4.
|
|
470
|
+
version: params.version || "1.4.5",
|
|
471
471
|
},
|
|
472
472
|
spans,
|
|
473
473
|
},
|
package/dist/server.js
CHANGED
|
@@ -120,6 +120,7 @@ Set or inspect them via MCP \`get_run_context({ action: "set_guardrail", prompt:
|
|
|
120
120
|
- \`muxo://governance/policy\` — Active guardrails, kill-switch status, trust score, and \`llmPolicyBrief\`
|
|
121
121
|
- \`muxo://context\` — Live workspace context, active guardrails, provisioned resources, and \`llmSystemPrompt\`
|
|
122
122
|
- \`muxo://memory/graph\` — Active Supermemory defaults and bi-temporal knowledge graph facts
|
|
123
|
+
- \`muxo://skills\` & \`muxo://skills/{skillSlug}\` — Governed domain & workflow skills catalog (140+ app, cloud provisioning, and multi-app workflow \`SKILL.md\` playbooks)
|
|
123
124
|
- **MCP Prompts (\`prompts/list\` & \`prompts/get\`)**:
|
|
124
125
|
- \`context\` — Inject workspace memory, active defaults, and guardrail summary
|
|
125
126
|
- \`policy_guardrails\` — Inject the active \`llmSystemDirective\`, risk-lane matrix, and optional dry-run policy simulation for \`tool_slug\`
|
|
@@ -719,7 +720,10 @@ export function createMuxoServer(customConfig) {
|
|
|
719
720
|
},
|
|
720
721
|
"/api/v1/byok/{provider}": { delete: { summary: "Delete a BYOK provider key from the vault" } },
|
|
721
722
|
"/api/v1/tools": { get: { summary: "Search unified catalogue across instant.*, app.*, and resource.*" } },
|
|
722
|
-
"/api/v1/tools/{slug}": { get: { summary: "Inspect tool schema, risk level, credit cost, and LLM context URL" } },
|
|
723
|
+
"/api/v1/tools/{slug}": { get: { summary: "Inspect tool schema, risk level, credit cost, domainSkill pitfalls, and LLM context URL" } },
|
|
724
|
+
"/api/v1/skills": { get: { summary: "List governed domain, cloud provisioning, and multi-app workflow skills" } },
|
|
725
|
+
"/api/v1/skills/{slug}": { get: { summary: "Inspect governed domain or workflow skill definition and SKILL.md markdown" } },
|
|
726
|
+
"/skills/{slug}/SKILL.md": { get: { summary: "Download governed SKILL.md markdown bundle for any app, cloud provider, or workflow" } },
|
|
723
727
|
"/api/v1/connections": {
|
|
724
728
|
get: { summary: "List connected OAuth accounts and cloud providers" },
|
|
725
729
|
post: { summary: "Start managed OAuth connection handoff" },
|
|
@@ -854,7 +858,7 @@ Users purchase Muxo Credits (\`POST /api/v1/billing/topup\` or \`muxo billing to
|
|
|
854
858
|
}
|
|
855
859
|
if (pathname === "/llms.txt" && req.method === "GET") {
|
|
856
860
|
res.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
|
|
857
|
-
res.end(`# Muxo\n> Unified agent execution across Connected Apps, Instant Tools, Cloud Infrastructure, Workspace Memory, and Safety Guardrails.\n\n- Skill Document: ${config.baseUrl}/skill.md\n- Auth Guide: ${config.baseUrl}/auth.md\n- OpenAPI 3.1 Spec: ${config.baseUrl}/api/openapi.json\n- MCP Endpoint: ${config.baseUrl}/mcp\n- OAuth Callback Handoff: ${config.baseUrl}/oauth/callback\n- Plugin Marketplace (Codex/OpenAI): ${config.baseUrl}/.agents/plugins/marketplace.json\n- Plugin Marketplace (Claude/Droid): ${config.baseUrl}/.claude-plugin/marketplace.json\n- Console (app.muxo.ai): ${config.baseUrl}/\n- Landing & Provider Canvas (muxo.ai): ${config.baseUrl}/landing\n- Documentation (docs.muxo.ai): ${config.docsUrl}\n\n## Agent-Native Policy, Context & Governance Interface\n- MCP Control Plane (\`get_run_context\`): \`action: "recall" | "remember" | "forget" | "set_guardrail" | "reset_guardrails" | "check_policy" | "governance_status" | "kill_switch" | "scan_context"\`\n- Strict /v1 Organization Brief: \`get_organization({ company_context: { required: false } })\` returns accepted workspace policy facts + learned defaults in \`company_context.packet\`\n- Dry-Run Policy Simulator: \`POST ${config.baseUrl}/api/v1/guardrails/check\` (\`{ "tool_slug": "...", "input": { ... } }\`) or MCP \`get_run_context({ action: "check_policy", tool_slug, input })\`\n- Guardrails & Policy Brief: \`GET/POST ${config.baseUrl}/api/v1/guardrails\`, \`POST ${config.baseUrl}/api/v1/guardrails/reset\`, \`GET ${config.baseUrl}/api/v1/governance\` (includes \`llmPolicyBrief\`)\n- MCP Resources: \`muxo://policy/brief\`, \`muxo://governance/policy\`, \`muxo://context\`, \`muxo://memory/graph\`\n- MCP Prompts: \`context\`, \`policy_guardrails\`, \`governed_execution\`, \`security_audit\`\n`);
|
|
861
|
+
res.end(`# Muxo\n> Unified agent execution across Connected Apps, Instant Tools, Cloud Infrastructure, Workspace Memory, and Safety Guardrails.\n\n- Skill Document: ${config.baseUrl}/skill.md\n- Domain & Workflow Skills Catalog: ${config.baseUrl}/api/v1/skills (or ${config.baseUrl}/skills/<slug>/SKILL.md)\n- Auth Guide: ${config.baseUrl}/auth.md\n- OpenAPI 3.1 Spec: ${config.baseUrl}/api/openapi.json\n- MCP Endpoint: ${config.baseUrl}/mcp\n- OAuth Callback Handoff: ${config.baseUrl}/oauth/callback\n- Plugin Marketplace (Codex/OpenAI): ${config.baseUrl}/.agents/plugins/marketplace.json\n- Plugin Marketplace (Claude/Droid): ${config.baseUrl}/.claude-plugin/marketplace.json\n- Console (app.muxo.ai): ${config.baseUrl}/\n- Landing & Provider Canvas (muxo.ai): ${config.baseUrl}/landing\n- Documentation (docs.muxo.ai): ${config.docsUrl}\n\n## Agent-Native Policy, Context & Governance Interface\n- MCP Control Plane (\`get_run_context\`): \`action: "recall" | "remember" | "forget" | "set_guardrail" | "reset_guardrails" | "check_policy" | "governance_status" | "kill_switch" | "scan_context" | "skills" | "get_skill" | "reconcile_run"\`\n- Strict /v1 Organization Brief: \`get_organization({ company_context: { required: false } })\` returns accepted workspace policy facts + learned defaults in \`company_context.packet\`\n- Dry-Run Policy Simulator: \`POST ${config.baseUrl}/api/v1/guardrails/check\` (\`{ "tool_slug": "...", "input": { ... } }\`) or MCP \`get_run_context({ action: "check_policy", tool_slug, input })\`\n- Guardrails & Policy Brief: \`GET/POST ${config.baseUrl}/api/v1/guardrails\`, \`POST ${config.baseUrl}/api/v1/guardrails/reset\`, \`GET ${config.baseUrl}/api/v1/governance\` (includes \`llmPolicyBrief\`)\n- MCP Resources: \`muxo://policy/brief\`, \`muxo://governance/policy\`, \`muxo://context\`, \`muxo://memory/graph\`, \`muxo://skills\`, \`muxo://skills/{skillSlug}\`\n- MCP Prompts: \`context\`, \`policy_guardrails\`, \`governed_execution\`, \`security_audit\`\n`);
|
|
858
862
|
return;
|
|
859
863
|
}
|
|
860
864
|
// Serve Installable Muxo Plugin Manifests & Metadata (Portable OpenAI Agent Plugins + Codex + Claude + Cursor)
|
|
@@ -3086,8 +3090,11 @@ Users purchase Muxo Credits (\`POST /api/v1/billing/topup\` or \`muxo billing to
|
|
|
3086
3090
|
}
|
|
3087
3091
|
if (pathname === "/api/v1/byok" && req.method === "POST") {
|
|
3088
3092
|
const body = JSON.parse((await readBody(req)) || "{}");
|
|
3089
|
-
const provider = String(body.provider || "").trim();
|
|
3090
|
-
const secretKey = String(body.secretKey || body.apiKey || body.key || "").trim();
|
|
3093
|
+
const provider = String(body.providerSlug || body.provider_slug || body.provider || "").trim();
|
|
3094
|
+
const secretKey = String(body.secretKey || body.secret_key || body.apiKey || body.api_key || body.key || "").trim();
|
|
3095
|
+
const mcpGatewayUrl = body.mcpGatewayUrl || body.mcp_gateway_url
|
|
3096
|
+
? String(body.mcpGatewayUrl || body.mcp_gateway_url).trim()
|
|
3097
|
+
: null;
|
|
3091
3098
|
if (!provider || !secretKey) {
|
|
3092
3099
|
sendJson(res, 400, {
|
|
3093
3100
|
ok: false,
|
|
@@ -3095,7 +3102,9 @@ Users purchase Muxo Credits (\`POST /api/v1/billing/topup\` or \`muxo billing to
|
|
|
3095
3102
|
});
|
|
3096
3103
|
return;
|
|
3097
3104
|
}
|
|
3098
|
-
const record = store.setByokKey(ctx.workspace.id, provider, secretKey
|
|
3105
|
+
const record = store.setByokKey(ctx.workspace.id, provider, secretKey, {
|
|
3106
|
+
mcpGatewayUrl,
|
|
3107
|
+
});
|
|
3099
3108
|
sendJson(res, 201, {
|
|
3100
3109
|
ok: true,
|
|
3101
3110
|
key: record,
|
package/dist/skills-catalog.js
CHANGED
|
@@ -641,6 +641,43 @@ function buildCatalogSkills(baseUrl = "https://api.muxo.ai") {
|
|
|
641
641
|
sourceRepo: "ComposioHQ/awesome-claude-skills (transpiled for Muxo Governed MCP)",
|
|
642
642
|
});
|
|
643
643
|
}
|
|
644
|
+
// 4. Ensure all curated PROVIDER_SKILL_OVERRIDES are registered even if not in ENTERPRISE_TOOLKITS_CATALOG
|
|
645
|
+
const DISPLAY_NAMES = {
|
|
646
|
+
metaads: "Meta Ads",
|
|
647
|
+
googleads: "Google Ads",
|
|
648
|
+
google_analytics: "Google Analytics (GA4)",
|
|
649
|
+
discord: "Discord",
|
|
650
|
+
airtable: "Airtable",
|
|
651
|
+
figma: "Figma",
|
|
652
|
+
zendesk: "Zendesk",
|
|
653
|
+
asana: "Asana",
|
|
654
|
+
posthog: "PostHog",
|
|
655
|
+
sentry: "Sentry",
|
|
656
|
+
};
|
|
657
|
+
for (const [prov, override] of Object.entries(PROVIDER_SKILL_OVERRIDES)) {
|
|
658
|
+
if (isStripeProjectsExclusiveProvider(prov))
|
|
659
|
+
continue;
|
|
660
|
+
const slug = `${prov}-automation`;
|
|
661
|
+
if (seenSlugs.has(slug))
|
|
662
|
+
continue;
|
|
663
|
+
const displayName = DISPLAY_NAMES[prov] || prov.charAt(0).toUpperCase() + prov.slice(1);
|
|
664
|
+
addSkill({
|
|
665
|
+
slug,
|
|
666
|
+
name: slug,
|
|
667
|
+
title: `${displayName} Governed Automation Skill`,
|
|
668
|
+
description: `Automate ${displayName} workflows through Muxo MCP (${mcpServerUrl}) with managed OAuth connections, Cedar/OPA parameter guardrails, and signed execution receipts.`,
|
|
669
|
+
category: "app_automation",
|
|
670
|
+
lane: "composio_sdk",
|
|
671
|
+
providerSlug: prov,
|
|
672
|
+
providerName: displayName,
|
|
673
|
+
requiresMcp: ["muxo"],
|
|
674
|
+
mcpServerUrl,
|
|
675
|
+
recommendedTools: override.recommendedTools,
|
|
676
|
+
workflowSteps: override.workflowSteps,
|
|
677
|
+
pitfalls: override.pitfalls,
|
|
678
|
+
sourceRepo: "ComposioHQ/awesome-claude-skills (transpiled for Muxo Governed MCP)",
|
|
679
|
+
});
|
|
680
|
+
}
|
|
644
681
|
return skills;
|
|
645
682
|
}
|
|
646
683
|
export function listMuxoSkills(filter, baseUrl = "https://api.muxo.ai") {
|
|
@@ -671,8 +708,10 @@ export function getMuxoSkill(slug, baseUrl = "https://api.muxo.ai") {
|
|
|
671
708
|
if (!clean)
|
|
672
709
|
return null;
|
|
673
710
|
const all = buildCatalogSkills(baseUrl);
|
|
674
|
-
return (all.find((s) => s.slug.toLowerCase() === clean ||
|
|
675
|
-
s.providerSlug.toLowerCase() === clean) ||
|
|
711
|
+
return (all.find((s) => s.slug.toLowerCase() === clean) ||
|
|
712
|
+
all.find((s) => s.category !== "workflow" && s.providerSlug.toLowerCase() === clean) ||
|
|
713
|
+
all.find((s) => s.providerSlug.toLowerCase() === clean) ||
|
|
714
|
+
null);
|
|
676
715
|
}
|
|
677
716
|
export function renderMuxoSkillMarkdown(slug, baseUrl = "https://api.muxo.ai") {
|
|
678
717
|
const skill = getMuxoSkill(slug, baseUrl);
|
package/dist/store.d.ts
CHANGED
|
@@ -178,7 +178,10 @@ export declare class MuxoStore {
|
|
|
178
178
|
category: "llm" | "supplier";
|
|
179
179
|
envVarName: string;
|
|
180
180
|
};
|
|
181
|
-
setByokKey(workspaceId: string, providerInput: string, secretKey: string
|
|
181
|
+
setByokKey(workspaceId: string, providerInput: string, secretKey: string, options?: {
|
|
182
|
+
mcpGatewayUrl?: string | null;
|
|
183
|
+
}): ByokKeyRecord;
|
|
184
|
+
getByokMcpGatewayUrl(workspaceId: string): string | null;
|
|
182
185
|
getByokKey(workspaceId: string, providerInput: string): string | null;
|
|
183
186
|
deleteByokKey(workspaceId: string, providerInput: string): boolean;
|
|
184
187
|
listByokKeys(workspaceId: string): ByokKeyRecord[];
|
package/dist/store.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DatabaseSync } from "node:sqlite";
|
|
2
2
|
import crypto from "node:crypto";
|
|
3
|
+
import { normalizeComposioByokGatewayUrl } from "./composio-catalog.js";
|
|
3
4
|
export const BYOK_PROVIDER_CATALOG = {
|
|
4
5
|
openai: { category: "llm", envVarName: "OPENAI_API_KEY", label: "OpenAI (GPT-4o / o3-mini)" },
|
|
5
6
|
anthropic: { category: "llm", envVarName: "ANTHROPIC_API_KEY", label: "Anthropic (Claude 3.7 Sonnet)" },
|
|
@@ -1204,7 +1205,7 @@ export class MuxoStore {
|
|
|
1204
1205
|
envVarName,
|
|
1205
1206
|
};
|
|
1206
1207
|
}
|
|
1207
|
-
setByokKey(workspaceId, providerInput, secretKey) {
|
|
1208
|
+
setByokKey(workspaceId, providerInput, secretKey, options) {
|
|
1208
1209
|
const trimmed = secretKey.trim();
|
|
1209
1210
|
if (!trimmed) {
|
|
1210
1211
|
throw new Error("BYOK secretKey must not be empty");
|
|
@@ -1214,7 +1215,17 @@ export class MuxoStore {
|
|
|
1214
1215
|
const keyPreview = trimmed.length <= 8
|
|
1215
1216
|
? `${trimmed.slice(0, 2)}***`
|
|
1216
1217
|
: `${trimmed.slice(0, 6)}...${trimmed.slice(-4)}`;
|
|
1217
|
-
|
|
1218
|
+
if (options?.mcpGatewayUrl && provider !== "composio") {
|
|
1219
|
+
throw new Error("MCP gateway URLs are only supported for Composio BYOK.");
|
|
1220
|
+
}
|
|
1221
|
+
const cleanGatewayUrl = options?.mcpGatewayUrl
|
|
1222
|
+
? normalizeComposioByokGatewayUrl(options.mcpGatewayUrl)
|
|
1223
|
+
: provider === "composio" ? this.getByokMcpGatewayUrl(workspaceId) || "" : "";
|
|
1224
|
+
const secretPayload = {
|
|
1225
|
+
[envVarName]: trimmed,
|
|
1226
|
+
...(cleanGatewayUrl ? { COMPOSIO_MCP_GATEWAY_URL: cleanGatewayUrl } : {}),
|
|
1227
|
+
};
|
|
1228
|
+
const encryptedHex = this.encryptSecrets(workspaceId, secretPayload);
|
|
1218
1229
|
this.db
|
|
1219
1230
|
.prepare(`INSERT INTO byok_keys (
|
|
1220
1231
|
workspace_id, provider, category, env_var_name, key_preview, encrypted_secret_hex, updated_at
|
|
@@ -1233,9 +1244,19 @@ export class MuxoStore {
|
|
|
1233
1244
|
envVarName,
|
|
1234
1245
|
keyPreview,
|
|
1235
1246
|
configured: true,
|
|
1247
|
+
...(cleanGatewayUrl ? { mcpGatewayUrl: cleanGatewayUrl } : {}),
|
|
1236
1248
|
updatedAt: now,
|
|
1237
1249
|
};
|
|
1238
1250
|
}
|
|
1251
|
+
getByokMcpGatewayUrl(workspaceId) {
|
|
1252
|
+
const row = this.db
|
|
1253
|
+
.prepare("SELECT encrypted_secret_hex FROM byok_keys WHERE workspace_id = ? AND provider = 'composio'")
|
|
1254
|
+
.get(workspaceId);
|
|
1255
|
+
if (!row)
|
|
1256
|
+
return null;
|
|
1257
|
+
const dec = this.decryptSecrets(workspaceId, row.encrypted_secret_hex);
|
|
1258
|
+
return dec.COMPOSIO_MCP_GATEWAY_URL || null;
|
|
1259
|
+
}
|
|
1239
1260
|
getByokKey(workspaceId, providerInput) {
|
|
1240
1261
|
const { provider, envVarName } = this.normalizeByokProvider(providerInput);
|
|
1241
1262
|
const row = this.db
|
|
@@ -1255,11 +1276,23 @@ export class MuxoStore {
|
|
|
1255
1276
|
}
|
|
1256
1277
|
listByokKeys(workspaceId) {
|
|
1257
1278
|
const rows = this.db
|
|
1258
|
-
.prepare("SELECT provider, category, env_var_name, key_preview, updated_at FROM byok_keys WHERE workspace_id = ? ORDER BY updated_at DESC")
|
|
1279
|
+
.prepare("SELECT provider, category, env_var_name, key_preview, encrypted_secret_hex, updated_at FROM byok_keys WHERE workspace_id = ? ORDER BY updated_at DESC")
|
|
1259
1280
|
.all(workspaceId);
|
|
1260
1281
|
const configuredMap = new Map();
|
|
1261
1282
|
for (const r of rows) {
|
|
1262
1283
|
const p = String(r.provider);
|
|
1284
|
+
let mcpGatewayUrl;
|
|
1285
|
+
if (p === "composio" && r.encrypted_secret_hex) {
|
|
1286
|
+
try {
|
|
1287
|
+
const dec = this.decryptSecrets(workspaceId, String(r.encrypted_secret_hex));
|
|
1288
|
+
if (dec.COMPOSIO_MCP_GATEWAY_URL) {
|
|
1289
|
+
mcpGatewayUrl = dec.COMPOSIO_MCP_GATEWAY_URL;
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
catch {
|
|
1293
|
+
// ignore
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1263
1296
|
configuredMap.set(p, {
|
|
1264
1297
|
provider: p,
|
|
1265
1298
|
providerSlug: p,
|
|
@@ -1267,6 +1300,7 @@ export class MuxoStore {
|
|
|
1267
1300
|
envVarName: String(r.env_var_name),
|
|
1268
1301
|
keyPreview: String(r.key_preview),
|
|
1269
1302
|
configured: true,
|
|
1303
|
+
...(mcpGatewayUrl ? { mcpGatewayUrl } : {}),
|
|
1270
1304
|
updatedAt: String(r.updated_at),
|
|
1271
1305
|
});
|
|
1272
1306
|
}
|
package/dist/types.d.ts
CHANGED
package/dist/ui/console-html.js
CHANGED
|
@@ -2003,9 +2003,12 @@ async function loadByokKeys() {
|
|
|
2003
2003
|
async function saveByokKeyFromUi() {
|
|
2004
2004
|
var provider = byId('byok-provider-select').value;
|
|
2005
2005
|
var secretKey = byId('byok-key-input').value.trim();
|
|
2006
|
+
var gwInput = byId('byok-gateway-input');
|
|
2007
|
+
var mcpGatewayUrl = provider === 'composio' && gwInput && gwInput.value ? gwInput.value.trim() : undefined;
|
|
2006
2008
|
if (!secretKey) { showToast('Paste a key first'); byId('byok-key-input').focus(); return; }
|
|
2007
|
-
await post('/api/v1/byok', { provider: provider, secretKey: secretKey, apiKey: secretKey });
|
|
2009
|
+
await post('/api/v1/byok', { provider: provider, secretKey: secretKey, apiKey: secretKey, mcpGatewayUrl: mcpGatewayUrl });
|
|
2008
2010
|
byId('byok-key-input').value = '';
|
|
2011
|
+
if (gwInput) gwInput.value = '';
|
|
2009
2012
|
showToast('Saved your ' + provider + ' key. It is encrypted in your vault.');
|
|
2010
2013
|
await loadByokKeys();
|
|
2011
2014
|
}
|
|
@@ -2365,6 +2368,13 @@ function init() {
|
|
|
2365
2368
|
onSubmit('policy-form', savePolicy);
|
|
2366
2369
|
onSubmit('scan-form', scanContextFromUi);
|
|
2367
2370
|
onSubmit('byok-form', saveByokKeyFromUi);
|
|
2371
|
+
var byokSelect = byId('byok-provider-select');
|
|
2372
|
+
if (byokSelect) {
|
|
2373
|
+
byokSelect.addEventListener('change', function () {
|
|
2374
|
+
var gwField = byId('byok-gateway-field');
|
|
2375
|
+
if (gwField) gwField.hidden = byokSelect.value !== 'composio';
|
|
2376
|
+
});
|
|
2377
|
+
}
|
|
2368
2378
|
onSubmit('join-workspace-form', joinWorkspaceFromForm);
|
|
2369
2379
|
onSubmit('create-workspace-form', createWorkspaceFromForm);
|
|
2370
2380
|
onSubmit('team-onboard-form', onboardTeamFromForm);
|
|
@@ -2761,6 +2771,7 @@ export function renderConsoleHtml() {
|
|
|
2761
2771
|
</select>
|
|
2762
2772
|
</label>
|
|
2763
2773
|
<label class="field"><span>Key</span><input id="byok-key-input" type="password" placeholder="Paste the key" autocomplete="off" /></label>
|
|
2774
|
+
<label class="field" id="byok-gateway-field" hidden><span>MCP Gateway URL (optional)</span><input id="byok-gateway-input" type="url" placeholder="https://connect.composio.dev/mcp" autocomplete="off" /></label>
|
|
2764
2775
|
<button class="btn btn-primary" type="submit" style="min-height:40px">Save key</button>
|
|
2765
2776
|
</form>
|
|
2766
2777
|
<div class="table-wrap">
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const MUXO_VERSION = "1.4.
|
|
1
|
+
export declare const MUXO_VERSION = "1.4.5";
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const MUXO_VERSION = "1.4.
|
|
1
|
+
export const MUXO_VERSION = "1.4.5";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muxoai/sdk",
|
|
3
|
-
"version": "1.4.
|
|
4
|
-
"description": "Muxo
|
|
3
|
+
"version": "1.4.5",
|
|
4
|
+
"description": "Muxo \u2014 Unified Execution, Provisioning & Governance Platform over Composio, Stripe Projects, Microsoft Agent Governance & Supermemory",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://muxo.ai",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "Governed agent execution across 1,000+ Connected Apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning, Workspace Memory recall, and verifiable audit records.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muxo AI LLC",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://muxo.ai"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://muxo.ai",
|
|
11
|
-
"repository": "https://github.com/
|
|
11
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"skills": "./skills/",
|
|
14
14
|
"hooks": "./hooks/hooks.json",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Unified access to 1,000+ Connected Apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning (Postgres, Redis, SQLite, Storage), Workspace Memory recall, and verifiable audit records.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muxo AI LLC",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://muxo.ai"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://muxo.ai",
|
|
11
|
-
"repository": "https://github.com/
|
|
11
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"keywords": [
|
|
14
14
|
"muxo",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"com.openai": {
|
|
34
34
|
"onboardingSkill": "./skills/setup/SKILL.md",
|
|
35
35
|
"publication": {
|
|
36
|
-
"release_notes": "Muxo v1.4.
|
|
36
|
+
"release_notes": "Muxo v1.4.5: Unified governed execution across 1,000+ Connected Apps, Instant web/SEO tools, 94 Stripe Projects Cloud Infrastructure services, MCP 2026-07-28 compliance, and Workspace Memory."
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
3
|
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Connect and operate 1,000+ external apps via managed OAuth, zero-auth Instant Tools (web search, scrape, crawl, SEO audit, remote workbench), live Cloud Infrastructure provisioning (Stripe Projects), and Workspace Memory from Cursor.",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.5",
|
|
5
5
|
"mcpServers": "../mcp.json",
|
|
6
6
|
"skills": "../skills/",
|
|
7
7
|
"author": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"url": "https://muxo.ai"
|
|
11
11
|
},
|
|
12
12
|
"homepage": "https://muxo.ai",
|
|
13
|
-
"repository": "https://github.com/
|
|
13
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"keywords": [
|
|
16
16
|
"muxo",
|
package/plugins/muxo/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "muxo",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.5",
|
|
5
5
|
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Unified access to 1,000+ Connected Apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning (Postgres, Redis, SQLite, Storage), Workspace Memory recall, and verifiable audit records.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muxo AI LLC",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"url": "https://muxo.ai"
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://muxo.ai",
|
|
12
|
-
"repository": "https://github.com/
|
|
12
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"keywords": [
|
|
15
15
|
"muxo",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"commerce_description": "This plugin does not sell retail products or process consumer checkout inside ChatGPT."
|
|
110
110
|
},
|
|
111
111
|
"publication": {
|
|
112
|
-
"release_notes": "Muxo v1.4.
|
|
112
|
+
"release_notes": "Muxo v1.4.5: Unified governed execution across 1,000+ Connected Apps, Instant web/SEO tools, 94 Stripe Projects Cloud Infrastructure services, MCP 2026-07-28 compliance, and Workspace Memory."
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
}
|