@muxoai/platform 1.2.2 → 1.3.0
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 +22 -0
- package/.claude-plugin/marketplace.json +17 -0
- package/.codex/config.toml +5 -0
- package/README.md +57 -28
- package/dist/cli.js +328 -10
- package/dist/engine.d.ts +28 -0
- package/dist/engine.js +194 -27
- package/dist/mcp.d.ts +36 -0
- package/dist/mcp.js +534 -21
- package/dist/nl.d.ts +34 -0
- package/dist/nl.js +577 -0
- package/dist/providers/composio-instant.js +442 -0
- package/dist/providers/composio-sdk.js +88 -30
- package/dist/providers/stripe-billing.d.ts +13 -3
- package/dist/providers/stripe-billing.js +240 -36
- package/dist/providers/stripe-projects.js +14 -3
- package/dist/sdk.d.ts +84 -1
- package/dist/sdk.js +53 -0
- package/dist/server.js +476 -15
- package/dist/store.d.ts +18 -2
- package/dist/store.js +197 -8
- package/dist/types.d.ts +14 -2
- package/dist/ui/console-html.js +216 -26
- package/package.json +4 -1
- package/plugins/muxo/.claude-plugin/plugin.json +2 -2
- package/plugins/muxo/.codex-plugin/plugin.json +12 -8
- package/plugins/muxo/.mcp.json +33 -1
- package/plugins/muxo/mcp.json +38 -0
- package/plugins/muxo/plugin.json +59 -0
- package/plugins/muxo/skills/setup/SKILL.md +28 -0
package/dist/ui/console-html.js
CHANGED
|
@@ -611,6 +611,27 @@ export function renderConsoleHtml() {
|
|
|
611
611
|
</div>
|
|
612
612
|
</div>
|
|
613
613
|
|
|
614
|
+
<div class="card" style="margin-bottom:18px;border:1px solid var(--accent);background:linear-gradient(180deg, rgba(99,102,241,0.08), rgba(15,17,26,0.95))">
|
|
615
|
+
<div class="section-header" style="margin-bottom:10px">
|
|
616
|
+
<div>
|
|
617
|
+
<div class="section-title">✨ Natural Language Command Bar (<code class="mono">muxo do</code> / <code class="mono">POST /api/v1/do</code>)</div>
|
|
618
|
+
<div class="section-sub">Type any goal in plain English. Muxo extracts tool & schema arguments (via BYOK LLM or semantic router), plans with Supermemory & Ed25519 governance, and executes.</div>
|
|
619
|
+
</div>
|
|
620
|
+
<span id="byok-mode-badge" class="badge badge-projects">Funding: muxo_funded</span>
|
|
621
|
+
</div>
|
|
622
|
+
<div style="display:flex;gap:10px;margin-bottom:10px">
|
|
623
|
+
<input type="text" id="nl-prompt-input" placeholder="e.g. Audit https://muxo.ai for technical SEO, Top up 500 credits, Provision a Turso database named edge-analytics..." onkeydown="if(event.key==='Enter') runNaturalLanguagePrompt()" />
|
|
624
|
+
<button class="btn btn-primary" onclick="runNaturalLanguagePrompt()" style="white-space:nowrap">✨ Run in Plain English</button>
|
|
625
|
+
</div>
|
|
626
|
+
<div style="display:flex;gap:8px;flex-wrap:wrap">
|
|
627
|
+
<button class="btn btn-sm" onclick="fillAndRunNl('Fetch top 3 stories on Hacker News')">HackerNews Top 3</button>
|
|
628
|
+
<button class="btn btn-sm" onclick="fillAndRunNl('Audit https://muxo.ai for technical SEO')">Audit muxo.ai SEO</button>
|
|
629
|
+
<button class="btn btn-sm" onclick="fillAndRunNl('Look up DNS A records for muxo.ai')">DNS Lookup muxo.ai</button>
|
|
630
|
+
<button class="btn btn-sm" onclick="fillAndRunNl('Provision a Turso database named console-nl-db')">Provision Turso DB</button>
|
|
631
|
+
<button class="btn btn-sm" onclick="fillAndRunNl('Top up 500 credits')">Top Up +500 Credits</button>
|
|
632
|
+
</div>
|
|
633
|
+
</div>
|
|
634
|
+
|
|
614
635
|
<div class="grid-2">
|
|
615
636
|
<div class="card">
|
|
616
637
|
<div class="section-header">
|
|
@@ -937,43 +958,49 @@ export function renderConsoleHtml() {
|
|
|
937
958
|
|
|
938
959
|
<!-- TAB 7: BILLING & CREDITS -->
|
|
939
960
|
<section id="tab-billing" class="tab-pane hidden">
|
|
940
|
-
<div class="grid-2">
|
|
961
|
+
<div class="grid-2" style="margin-bottom:18px">
|
|
941
962
|
<div class="card">
|
|
942
963
|
<div class="section-header">
|
|
943
964
|
<div>
|
|
944
|
-
<div class="section-title">Subscription & Credit Top-Ups (
|
|
945
|
-
<div class="section-sub">
|
|
965
|
+
<div class="section-title">Subscription & Credit Top-Ups (Merchant-of-Record + BYOK)</div>
|
|
966
|
+
<div class="section-sub">Buy Muxo Credits ($0.01/credit) where Muxo pays upstream suppliers, or connect BYOK keys below for 0-credit execution.</div>
|
|
946
967
|
</div>
|
|
947
968
|
</div>
|
|
948
969
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px">
|
|
949
970
|
<div style="border:1px solid var(--border-strong);border-radius:8px;padding:16px;background:var(--bg-elevated)">
|
|
950
971
|
<div style="font-weight:600;font-size:15px;margin-bottom:4px">Starter Plan — $29/mo</div>
|
|
951
972
|
<div style="font-size:12.5px;color:var(--text-secondary);margin-bottom:14px">
|
|
952
|
-
|
|
973
|
+
10,000 governed actions/month + 1,000 Instant & Provisioning credits included.
|
|
974
|
+
</div>
|
|
975
|
+
<div style="display:flex;gap:8px;flex-direction:column">
|
|
976
|
+
<button class="btn btn-primary" style="width:100%;justify-content:center" onclick="startCheckout('starter_subscription')">
|
|
977
|
+
Upgrade via Stripe Checkout ($29/mo)
|
|
978
|
+
</button>
|
|
979
|
+
<button class="btn btn-sm btn-emerald" style="width:100%;justify-content:center" onclick="instantUpgradeStarter()">
|
|
980
|
+
⚡ Instant Starter Upgrade (+1,000 Credits)
|
|
981
|
+
</button>
|
|
953
982
|
</div>
|
|
954
|
-
<button class="btn btn-primary" style="width:100%;justify-content:center" onclick="startCheckout('starter_subscription')">
|
|
955
|
-
Upgrade via Stripe Checkout ($29/mo)
|
|
956
|
-
</button>
|
|
957
983
|
</div>
|
|
958
984
|
<div style="border:1px solid var(--border-strong);border-radius:8px;padding:16px;background:var(--bg-elevated)">
|
|
959
|
-
<div style="font-weight:600;font-size:15px;margin-bottom:4px"
|
|
960
|
-
<div style="font-size:12.5px;color:var(--text-secondary);margin-bottom:
|
|
985
|
+
<div style="font-weight:600;font-size:15px;margin-bottom:4px">Credit Pack Top-Up ($0.01 / credit)</div>
|
|
986
|
+
<div style="font-size:12.5px;color:var(--text-secondary);margin-bottom:10px">
|
|
961
987
|
Top up workspace credits for Instant tools, OAuth connectors & cloud provisioning.
|
|
962
988
|
</div>
|
|
963
|
-
<div style="display:flex;gap:
|
|
964
|
-
<
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
<button class="btn btn-sm" style="width:100%;justify-content:center" onclick="instantTopup(1000)">
|
|
968
|
-
⚡ Instant Wallet Top-Up (+1,000 Credits)
|
|
989
|
+
<div style="display:flex;gap:6px;margin-bottom:8px">
|
|
990
|
+
<input type="number" id="topup-credits-input" value="1000" min="100" step="100" style="padding:6px 10px;font-size:12.5px" />
|
|
991
|
+
<button class="btn btn-sm btn-emerald" onclick="instantTopupCustom()" style="white-space:nowrap">
|
|
992
|
+
⚡ Instant Top-Up
|
|
969
993
|
</button>
|
|
970
994
|
</div>
|
|
995
|
+
<button class="btn btn-sm" style="width:100%;justify-content:center" onclick="startCheckout('credit_topup')">
|
|
996
|
+
Stripe Checkout Session
|
|
997
|
+
</button>
|
|
971
998
|
</div>
|
|
972
999
|
</div>
|
|
973
1000
|
|
|
974
1001
|
<div style="border:1px solid var(--border-strong);border-radius:8px;padding:14px;background:rgba(16,185,129,0.05)">
|
|
975
1002
|
<div style="font-weight:600;font-size:13px;margin-bottom:8px;color:var(--emerald)">
|
|
976
|
-
💸 Merchant-of-Record Settlement Ledger
|
|
1003
|
+
💸 Merchant-of-Record & BYOK Settlement Ledger
|
|
977
1004
|
</div>
|
|
978
1005
|
<div id="settlement-summary-box" style="font-size:12px;color:var(--text-secondary);line-height:1.6">
|
|
979
1006
|
Loading supplier settlement metrics...
|
|
@@ -984,25 +1011,65 @@ export function renderConsoleHtml() {
|
|
|
984
1011
|
<div class="card">
|
|
985
1012
|
<div class="section-header">
|
|
986
1013
|
<div>
|
|
987
|
-
<div class="section-title"
|
|
988
|
-
<div class="section-sub">
|
|
1014
|
+
<div class="section-title">🔑 Bring Your Own Key (BYOK) Encrypted Vault</div>
|
|
1015
|
+
<div class="section-sub">Store your own LLM API keys (for natural-language routing) or upstream supplier keys (0 Muxo credit charge / 0% markup). Encrypted with AES-256-GCM.</div>
|
|
989
1016
|
</div>
|
|
990
1017
|
</div>
|
|
991
|
-
<div
|
|
1018
|
+
<div style="display:grid;grid-template-columns:1fr 1.4fr auto;gap:8px;margin-bottom:12px">
|
|
1019
|
+
<select id="byok-provider-select">
|
|
1020
|
+
<option value="openai">OpenAI (LLM Router)</option>
|
|
1021
|
+
<option value="anthropic">Anthropic Claude (LLM Router)</option>
|
|
1022
|
+
<option value="openrouter">OpenRouter (LLM Router)</option>
|
|
1023
|
+
<option value="gemini">Google Gemini (LLM Router)</option>
|
|
1024
|
+
<option value="composio">Composio (0-Credit App & Instant BYOK)</option>
|
|
1025
|
+
<option value="stripe">Stripe Secret Key (0-Credit Infra BYOK)</option>
|
|
1026
|
+
<option value="supermemory">Supermemory v5 (Memory BYOK)</option>
|
|
1027
|
+
<option value="firecrawl">Firecrawl (Scrape/Crawl BYOK)</option>
|
|
1028
|
+
<option value="exa">Exa AI (Search BYOK)</option>
|
|
1029
|
+
</select>
|
|
1030
|
+
<input type="password" id="byok-key-input" placeholder="Paste API key (sk-..., rk_..., sm_...)..." />
|
|
1031
|
+
<button class="btn btn-primary" onclick="saveByokKeyFromUi()">Save Key</button>
|
|
1032
|
+
</div>
|
|
1033
|
+
<div class="table-wrap" style="max-height:240px;overflow-y:auto">
|
|
992
1034
|
<table>
|
|
993
1035
|
<thead>
|
|
994
1036
|
<tr>
|
|
995
|
-
<th>
|
|
996
|
-
<th>
|
|
997
|
-
<th>
|
|
998
|
-
<th>
|
|
1037
|
+
<th>Provider</th>
|
|
1038
|
+
<th>Category</th>
|
|
1039
|
+
<th>Key Hint</th>
|
|
1040
|
+
<th>Env Var</th>
|
|
1041
|
+
<th>Action</th>
|
|
999
1042
|
</tr>
|
|
1000
1043
|
</thead>
|
|
1001
|
-
<tbody id="
|
|
1044
|
+
<tbody id="byok-keys-tbody">
|
|
1045
|
+
<tr><td colspan="5" style="color:var(--text-muted)">No BYOK keys saved yet. Using Muxo Master Wallet (muxo_funded).</td></tr>
|
|
1046
|
+
</tbody>
|
|
1002
1047
|
</table>
|
|
1003
1048
|
</div>
|
|
1004
1049
|
</div>
|
|
1005
1050
|
</div>
|
|
1051
|
+
|
|
1052
|
+
<div class="card">
|
|
1053
|
+
<div class="section-header">
|
|
1054
|
+
<div>
|
|
1055
|
+
<div class="section-title">Audit Credit & Supplier Settlement Ledger</div>
|
|
1056
|
+
<div class="section-sub">Immutable record of user credit purchases, run deductions, BYOK 0-credit runs, and upstream supplier payouts.</div>
|
|
1057
|
+
</div>
|
|
1058
|
+
</div>
|
|
1059
|
+
<div class="table-wrap">
|
|
1060
|
+
<table>
|
|
1061
|
+
<thead>
|
|
1062
|
+
<tr>
|
|
1063
|
+
<th>Time</th>
|
|
1064
|
+
<th>Event & Supplier Settlement</th>
|
|
1065
|
+
<th>Credits Delta</th>
|
|
1066
|
+
<th>Balance</th>
|
|
1067
|
+
</tr>
|
|
1068
|
+
</thead>
|
|
1069
|
+
<tbody id="ledger-tbody"></tbody>
|
|
1070
|
+
</table>
|
|
1071
|
+
</div>
|
|
1072
|
+
</div>
|
|
1006
1073
|
</section>
|
|
1007
1074
|
</main>
|
|
1008
1075
|
</div>
|
|
@@ -1803,6 +1870,126 @@ export function renderConsoleHtml() {
|
|
|
1803
1870
|
'<td class="mono">' + e.balanceAfter + '</td>' +
|
|
1804
1871
|
'</tr>'
|
|
1805
1872
|
).join('');
|
|
1873
|
+
await loadByokKeys();
|
|
1874
|
+
}
|
|
1875
|
+
|
|
1876
|
+
async function loadByokKeys() {
|
|
1877
|
+
try {
|
|
1878
|
+
const data = await api('/api/v1/byok');
|
|
1879
|
+
const tbody = document.getElementById('byok-keys-tbody');
|
|
1880
|
+
const badge = document.getElementById('byok-mode-badge');
|
|
1881
|
+
if (badge) {
|
|
1882
|
+
const hasSupplier = (data.keys || []).some(k => k.category === 'supplier');
|
|
1883
|
+
badge.textContent = hasSupplier ? 'Funding: byok (0 cr)' : 'Funding: muxo_funded';
|
|
1884
|
+
badge.className = hasSupplier ? 'badge badge-sdk' : 'badge badge-projects';
|
|
1885
|
+
}
|
|
1886
|
+
if (!tbody) return;
|
|
1887
|
+
if (!data.keys || !data.keys.length) {
|
|
1888
|
+
tbody.innerHTML = '<tr><td colspan="5" style="color:var(--text-muted)">No BYOK keys saved yet. Using Muxo Master Wallet (muxo_funded).</td></tr>';
|
|
1889
|
+
return;
|
|
1890
|
+
}
|
|
1891
|
+
tbody.innerHTML = data.keys.map(k =>
|
|
1892
|
+
'<tr>' +
|
|
1893
|
+
'<td style="font-weight:600">' + k.providerName + ' <span class="mono" style="color:var(--text-muted);font-size:11px">(' + k.provider + ')</span></td>' +
|
|
1894
|
+
'<td><span class="badge ' + (k.category === 'llm' ? 'badge-sdk' : 'badge-projects') + '">' + k.category + '</span></td>' +
|
|
1895
|
+
'<td class="mono" style="font-size:12px">' + k.keyHint + '</td>' +
|
|
1896
|
+
'<td class="mono" style="font-size:11.5px;color:var(--text-secondary)">' + k.envVarName + '</td>' +
|
|
1897
|
+
'<td><button class="btn btn-sm" onclick="deleteByokKeyFromUi(\\'' + k.provider + '\\')">Delete</button></td>' +
|
|
1898
|
+
'</tr>'
|
|
1899
|
+
).join('');
|
|
1900
|
+
} catch (err) {
|
|
1901
|
+
console.error(err);
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
|
|
1905
|
+
async function saveByokKeyFromUi() {
|
|
1906
|
+
const provider = document.getElementById('byok-provider-select').value;
|
|
1907
|
+
const secretKey = document.getElementById('byok-key-input').value.trim();
|
|
1908
|
+
if (!secretKey) {
|
|
1909
|
+
showToast('Enter an API key first');
|
|
1910
|
+
return;
|
|
1911
|
+
}
|
|
1912
|
+
try {
|
|
1913
|
+
await api('/api/v1/byok', {
|
|
1914
|
+
method: 'POST',
|
|
1915
|
+
body: JSON.stringify({ provider, secretKey })
|
|
1916
|
+
});
|
|
1917
|
+
document.getElementById('byok-key-input').value = '';
|
|
1918
|
+
showToast('Saved encrypted ' + provider.toUpperCase() + ' BYOK key to Vault!');
|
|
1919
|
+
await loadByokKeys();
|
|
1920
|
+
await refreshOverview();
|
|
1921
|
+
} catch (err) {
|
|
1922
|
+
showToast('BYOK Error: ' + err.message);
|
|
1923
|
+
}
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
async function deleteByokKeyFromUi(provider) {
|
|
1927
|
+
try {
|
|
1928
|
+
await api('/api/v1/byok/' + encodeURIComponent(provider), { method: 'DELETE' });
|
|
1929
|
+
showToast('Removed ' + provider + ' BYOK key from Vault');
|
|
1930
|
+
await loadByokKeys();
|
|
1931
|
+
} catch (err) {
|
|
1932
|
+
showToast('Error: ' + err.message);
|
|
1933
|
+
}
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
async function fillAndRunNl(promptText) {
|
|
1937
|
+
const input = document.getElementById('nl-prompt-input');
|
|
1938
|
+
if (input) input.value = promptText;
|
|
1939
|
+
await runNaturalLanguagePrompt();
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1942
|
+
async function runNaturalLanguagePrompt() {
|
|
1943
|
+
const input = document.getElementById('nl-prompt-input');
|
|
1944
|
+
const promptText = (input ? input.value : '').trim();
|
|
1945
|
+
if (!promptText) {
|
|
1946
|
+
showToast('Enter a natural language instruction first');
|
|
1947
|
+
return;
|
|
1948
|
+
}
|
|
1949
|
+
const box = document.getElementById('quick-run-output');
|
|
1950
|
+
box.textContent = '✨ Routing natural language intent: "' + promptText + '"...';
|
|
1951
|
+
try {
|
|
1952
|
+
const res = await api('/api/v1/do', {
|
|
1953
|
+
method: 'POST',
|
|
1954
|
+
body: JSON.stringify({ prompt: promptText, autoApprove: true })
|
|
1955
|
+
});
|
|
1956
|
+
box.textContent = JSON.stringify({
|
|
1957
|
+
prompt: res.prompt,
|
|
1958
|
+
intent: res.intent,
|
|
1959
|
+
status: res.status,
|
|
1960
|
+
fundingMode: res.plan && res.plan.supplierSettlement ? res.plan.supplierSettlement.fundingMode : 'muxo_funded',
|
|
1961
|
+
creditCost: res.plan ? res.plan.creditCost : 0,
|
|
1962
|
+
planId: res.plan ? res.plan.id : null,
|
|
1963
|
+
runId: res.run ? res.run.id : null,
|
|
1964
|
+
receiptId: res.receipt ? res.receipt.id : null,
|
|
1965
|
+
output: res.run ? res.run.output : (res.authHandoff || res.message)
|
|
1966
|
+
}, null, 2);
|
|
1967
|
+
showToast('Executed NL intent -> ' + res.intent.toolSlug + ' (' + res.status + ')');
|
|
1968
|
+
await refreshOverview();
|
|
1969
|
+
} catch (err) {
|
|
1970
|
+
box.textContent = 'NL Execution Error: ' + err.message;
|
|
1971
|
+
showToast('Error: ' + err.message);
|
|
1972
|
+
}
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
async function instantUpgradeStarter() {
|
|
1976
|
+
try {
|
|
1977
|
+
const res = await api('/api/v1/billing/upgrade', {
|
|
1978
|
+
method: 'POST',
|
|
1979
|
+
body: JSON.stringify({ tier: 'starter' })
|
|
1980
|
+
});
|
|
1981
|
+
showToast(res.message || 'Upgraded workspace to Starter Plan (+1,000 Credits)!');
|
|
1982
|
+
await refreshOverview();
|
|
1983
|
+
await loadLedger();
|
|
1984
|
+
} catch (err) {
|
|
1985
|
+
showToast('Upgrade Error: ' + err.message);
|
|
1986
|
+
}
|
|
1987
|
+
}
|
|
1988
|
+
|
|
1989
|
+
async function instantTopupCustom() {
|
|
1990
|
+
const input = document.getElementById('topup-credits-input');
|
|
1991
|
+
const credits = Math.max(1, Number((input && input.value) || 1000));
|
|
1992
|
+
await instantTopup(credits);
|
|
1806
1993
|
}
|
|
1807
1994
|
|
|
1808
1995
|
async function instantTopup(credits) {
|
|
@@ -1821,10 +2008,12 @@ export function renderConsoleHtml() {
|
|
|
1821
2008
|
|
|
1822
2009
|
async function startCheckout(kind) {
|
|
1823
2010
|
try {
|
|
1824
|
-
showToast('Creating
|
|
2011
|
+
showToast('Creating Stripe Checkout session...');
|
|
2012
|
+
const input = document.getElementById('topup-credits-input');
|
|
2013
|
+
const credits = Math.max(100, Number((input && input.value) || 1000));
|
|
1825
2014
|
const res = await api('/api/v1/billing/checkout', {
|
|
1826
2015
|
method: 'POST',
|
|
1827
|
-
body: JSON.stringify({ kind })
|
|
2016
|
+
body: JSON.stringify({ kind, credits })
|
|
1828
2017
|
});
|
|
1829
2018
|
if (res.url) {
|
|
1830
2019
|
window.location.href = res.url;
|
|
@@ -1866,6 +2055,7 @@ export function renderConsoleHtml() {
|
|
|
1866
2055
|
window.addEventListener('DOMContentLoaded', async () => {
|
|
1867
2056
|
await checkCheckoutReturn();
|
|
1868
2057
|
await refreshOverview();
|
|
2058
|
+
loadByokKeys().catch(() => {});
|
|
1869
2059
|
// Sync live Stripe Projects & Composio providers in background on first load
|
|
1870
2060
|
loadConnections(true).catch(() => {});
|
|
1871
2061
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muxoai/platform",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Muxo — Unified Execution, Provisioning & Governance Platform over Composio, Stripe Projects, Microsoft Agent Governance & Supermemory",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,6 +45,9 @@
|
|
|
45
45
|
"vendor/microsoft-governance/package.json",
|
|
46
46
|
"vendor/microsoft-governance/dist",
|
|
47
47
|
"plugins",
|
|
48
|
+
".agents",
|
|
49
|
+
".claude-plugin",
|
|
50
|
+
".codex",
|
|
48
51
|
"README.md",
|
|
49
52
|
"ARCHITECTURE.md"
|
|
50
53
|
],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Governed agent execution across 1,000+ Connected Apps (managed OAuth handoff), Instant Tools, live Cloud Infrastructure provisioning, Supermemory v5 recall, and Microsoft Agent Governance Ed25519 receipts.",
|
|
3
|
+
"version": "1.2.3",
|
|
4
|
+
"description": "Governed agent execution across 1,000+ Connected Apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning, Supermemory v5 recall, and Microsoft Agent Governance Ed25519 receipts.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muxo",
|
|
7
7
|
"email": "founders@muxo.ai",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Unified access to 1,000+ SaaS apps (managed OAuth handoff), Instant Tools, live Cloud Infrastructure provisioning (Postgres, Redis, SQLite, Storage), Supermemory v5 contextual recall, and Ed25519-signed Microsoft Agent Governance receipts through the hosted app or local CLI.",
|
|
3
|
+
"version": "1.2.3",
|
|
4
|
+
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Unified access to 1,000+ SaaS apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning (Postgres, Redis, SQLite, Storage), Supermemory v5 contextual recall, and Ed25519-signed Microsoft Agent Governance receipts through the hosted app or local CLI.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muxo",
|
|
7
7
|
"email": "founders@muxo.ai",
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"keywords": [
|
|
14
14
|
"muxo",
|
|
15
|
+
"openai",
|
|
16
|
+
"chatgpt",
|
|
17
|
+
"codex",
|
|
15
18
|
"app",
|
|
16
19
|
"mcp",
|
|
17
20
|
"cli",
|
|
18
|
-
"codex",
|
|
19
21
|
"oauth",
|
|
20
22
|
"infrastructure",
|
|
21
23
|
"governance",
|
|
@@ -25,11 +27,13 @@
|
|
|
25
27
|
"productivity"
|
|
26
28
|
],
|
|
27
29
|
"skills": "./skills/",
|
|
30
|
+
"mcpServers": "./.mcp.json",
|
|
28
31
|
"apps": "./.app.json",
|
|
32
|
+
"onboardingSkill": "./skills/setup/SKILL.md",
|
|
29
33
|
"interface": {
|
|
30
34
|
"displayName": "Muxo",
|
|
31
|
-
"shortDescription": "Governed SaaS apps, cloud infra & memory",
|
|
32
|
-
"longDescription": "Discover, plan, authorize via OAuth handoff, and execute governed actions across 1,000+ Connected Apps (GitHub, Gmail, Slack, Notion, Linear), Instant Tools, and live Cloud Infrastructure (Neon Postgres, Turso SQLite, Supabase, Cloudflare, Vercel) with Supermemory v5 workspace recall and Ed25519 cryptographic receipts.",
|
|
35
|
+
"shortDescription": "Governed SaaS apps, cloud infra, instant web/SEO tools & memory",
|
|
36
|
+
"longDescription": "Discover, plan, authorize via OAuth handoff, and execute governed actions across 1,000+ Connected Apps (GitHub, Gmail, Slack, Notion, Linear), Instant Tools (web search, scrape, multi-page crawl, technical SEO audit), and live Cloud Infrastructure (Neon Postgres, Turso SQLite, Supabase, Cloudflare, Vercel) with Supermemory v5 workspace recall and Ed25519 cryptographic receipts.",
|
|
33
37
|
"developerName": "Muxo",
|
|
34
38
|
"category": "Productivity",
|
|
35
39
|
"capabilities": [
|
|
@@ -40,9 +44,9 @@
|
|
|
40
44
|
"privacyPolicyURL": "https://muxo.ai/privacy",
|
|
41
45
|
"termsOfServiceURL": "https://muxo.ai/terms",
|
|
42
46
|
"defaultPrompt": [
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
47
|
+
"Audit https://muxo.ai for technical SEO and crawl its top pages.",
|
|
48
|
+
"Connect my GitHub or Gmail account and open a tracking issue for our next release.",
|
|
49
|
+
"Provision a free Turso SQLite database and pull the credentials into .env.muxo."
|
|
46
50
|
],
|
|
47
51
|
"composerIcon": "./assets/logo.png",
|
|
48
52
|
"logo": "./assets/logo.png",
|
package/plugins/muxo/.mcp.json
CHANGED
|
@@ -1,8 +1,40 @@
|
|
|
1
1
|
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
|
|
2
3
|
"mcpServers": {
|
|
3
4
|
"muxo": {
|
|
5
|
+
"type": "streamable-http",
|
|
6
|
+
"url": "https://api.muxo.ai/mcp",
|
|
4
7
|
"command": "npx",
|
|
5
|
-
"args": ["-y", "
|
|
8
|
+
"args": ["-y", "@muxoai/platform@latest", "mcp"],
|
|
9
|
+
"oauth": {
|
|
10
|
+
"clientId": "muxo-openai-plugin",
|
|
11
|
+
"callbackPort": 3118,
|
|
12
|
+
"scopes": [
|
|
13
|
+
"muxo:mcp",
|
|
14
|
+
"muxo:read",
|
|
15
|
+
"muxo:execute",
|
|
16
|
+
"muxo:provision"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"extensions": {
|
|
20
|
+
"com.openai": {
|
|
21
|
+
"auth": {
|
|
22
|
+
"type": "mixed",
|
|
23
|
+
"client": {
|
|
24
|
+
"mode": "dcr"
|
|
25
|
+
},
|
|
26
|
+
"authorizationUrl": "https://api.muxo.ai/oauth/authorize",
|
|
27
|
+
"tokenUrl": "https://api.muxo.ai/oauth/token",
|
|
28
|
+
"registrationUrl": "https://api.muxo.ai/oauth/register",
|
|
29
|
+
"baseScopes": [
|
|
30
|
+
"muxo:mcp",
|
|
31
|
+
"muxo:read",
|
|
32
|
+
"muxo:execute",
|
|
33
|
+
"muxo:provision"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
6
38
|
}
|
|
7
39
|
}
|
|
8
40
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
|
|
3
|
+
"mcpServers": {
|
|
4
|
+
"muxo": {
|
|
5
|
+
"type": "streamable-http",
|
|
6
|
+
"url": "https://api.muxo.ai/mcp",
|
|
7
|
+
"oauth": {
|
|
8
|
+
"clientId": "muxo-openai-plugin",
|
|
9
|
+
"callbackPort": 3118,
|
|
10
|
+
"scopes": [
|
|
11
|
+
"muxo:mcp",
|
|
12
|
+
"muxo:read",
|
|
13
|
+
"muxo:execute",
|
|
14
|
+
"muxo:provision"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
"extensions": {
|
|
18
|
+
"com.openai": {
|
|
19
|
+
"auth": {
|
|
20
|
+
"type": "mixed",
|
|
21
|
+
"client": {
|
|
22
|
+
"mode": "dcr"
|
|
23
|
+
},
|
|
24
|
+
"authorizationUrl": "https://api.muxo.ai/oauth/authorize",
|
|
25
|
+
"tokenUrl": "https://api.muxo.ai/oauth/token",
|
|
26
|
+
"registrationUrl": "https://api.muxo.ai/oauth/register",
|
|
27
|
+
"baseScopes": [
|
|
28
|
+
"muxo:mcp",
|
|
29
|
+
"muxo:read",
|
|
30
|
+
"muxo:execute",
|
|
31
|
+
"muxo:provision"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
|
+
"name": "muxo",
|
|
4
|
+
"version": "1.2.3",
|
|
5
|
+
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Unified access to 1,000+ SaaS apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning (Postgres, Redis, SQLite, Storage), Supermemory v5 contextual recall, and Ed25519-signed Microsoft Agent Governance receipts.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Muxo",
|
|
8
|
+
"email": "founders@muxo.ai",
|
|
9
|
+
"url": "https://muxo.ai"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://muxo.ai",
|
|
12
|
+
"repository": "https://github.com/muxo-ai/muxo",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"muxo",
|
|
16
|
+
"openai",
|
|
17
|
+
"chatgpt",
|
|
18
|
+
"codex",
|
|
19
|
+
"mcp",
|
|
20
|
+
"cli",
|
|
21
|
+
"oauth",
|
|
22
|
+
"infrastructure",
|
|
23
|
+
"governance",
|
|
24
|
+
"supermemory",
|
|
25
|
+
"integrations",
|
|
26
|
+
"automation",
|
|
27
|
+
"productivity"
|
|
28
|
+
],
|
|
29
|
+
"skills": "./skills/",
|
|
30
|
+
"mcpServers": "./mcp.json",
|
|
31
|
+
"extensions": {
|
|
32
|
+
"com.openai": {
|
|
33
|
+
"apps": "./.app.json",
|
|
34
|
+
"onboardingSkill": "./skills/setup/SKILL.md",
|
|
35
|
+
"interface": {
|
|
36
|
+
"displayName": "Muxo",
|
|
37
|
+
"shortDescription": "Governed SaaS apps, cloud infra, instant web/SEO tools & memory",
|
|
38
|
+
"longDescription": "Discover, plan, authorize via OAuth handoff, and execute governed actions across 1,000+ Connected Apps (GitHub, Gmail, Slack, Notion, Linear), Instant Tools (web search, scrape, multi-page crawl, technical SEO audit), and live Cloud Infrastructure (Turso SQLite, Neon Postgres, Supabase, Upstash Redis, Resend) with Supermemory v5 workspace recall and Ed25519 cryptographic receipts.",
|
|
39
|
+
"developerName": "Muxo",
|
|
40
|
+
"category": "Productivity",
|
|
41
|
+
"capabilities": [
|
|
42
|
+
"Interactive",
|
|
43
|
+
"Write"
|
|
44
|
+
],
|
|
45
|
+
"websiteURL": "https://muxo.ai",
|
|
46
|
+
"privacyPolicyURL": "https://muxo.ai/privacy",
|
|
47
|
+
"termsOfServiceURL": "https://muxo.ai/terms",
|
|
48
|
+
"defaultPrompt": [
|
|
49
|
+
"Audit https://muxo.ai for technical SEO and crawl its top pages.",
|
|
50
|
+
"Connect my Gmail or GitHub account via OAuth handoff and fetch recent items.",
|
|
51
|
+
"Provision a Turso SQLite database and store its connection secrets in the Muxo Vault."
|
|
52
|
+
],
|
|
53
|
+
"composerIcon": "./assets/logo.png",
|
|
54
|
+
"logo": "./assets/logo.png",
|
|
55
|
+
"brandColor": "#6366F1"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup
|
|
3
|
+
description: Guided onboarding skill for setting up the Muxo plugin in OpenAI ChatGPT and Codex. Helps users verify workspace authorization, connect external SaaS apps via OAuth handoff, provision cloud infrastructure, or install the local Muxo CLI.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Muxo Onboarding & Setup
|
|
7
|
+
|
|
8
|
+
Welcome to **Muxo** — the unified execution, cloud provisioning, contextual memory, and governance platform for OpenAI ChatGPT and Codex.
|
|
9
|
+
|
|
10
|
+
## Step 1: Verify your Muxo connection
|
|
11
|
+
|
|
12
|
+
1. If you are in **ChatGPT** or **Codex** with the hosted Muxo MCP server (`https://api.muxo.ai/mcp`) enabled:
|
|
13
|
+
- Call `get_profile` and `get_organization` to confirm your workspace ID, credit balance (`fundingMode: "muxo_funded"`), and active governance policy.
|
|
14
|
+
2. If you are in a terminal environment and prefer the local CLI:
|
|
15
|
+
```bash
|
|
16
|
+
npx -y @muxoai/cli@latest login --signup --name "my-agent"
|
|
17
|
+
muxo whoami
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Step 2: Connect your first SaaS app or run an Instant tool
|
|
21
|
+
|
|
22
|
+
- **Zero-OAuth Instant Tools (`instant.*`)** work immediately with no setup:
|
|
23
|
+
- Web search (`instant.web.search`), page scraping (`instant.web.scrape`), multi-page crawling (`instant.web.crawl`), technical SEO audits (`instant.seo.audit`), Hacker News (`instant.hackernews.top_stories`), and DNS lookups (`instant.dns.lookup`).
|
|
24
|
+
- **Connected Apps (`app.*`)** use automatic OAuth handoff:
|
|
25
|
+
- Plan any action (e.g., `app.github.create_issue` or `app.gmail.fetch_emails`) via `plan_action`.
|
|
26
|
+
- If the app is not connected yet, `plan_action` returns `authHandoff.redirectUrl`. Open that link to authorize, then call `wait_for_connection({ provider })` to resume.
|
|
27
|
+
- **Cloud Infrastructure (`resource.*`)** provisions live databases and services via Stripe Projects:
|
|
28
|
+
- Provision Turso SQLite (`resource.turso.database`), Neon Postgres (`resource.neon.postgres`), Supabase (`resource.supabase.project`), or Upstash Redis (`resource.upstash.redis`) and pull encrypted `.env` credentials via `muxo env pull`.
|