-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
100 lines (96 loc) · 6.1 KB
/
Copy pathindex.html
File metadata and controls
100 lines (96 loc) · 6.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Toolsmith — forge MCP tools and Agent Skills from your OpenAPI</title>
<meta name="description" content="Load any OpenAPI and design the best possible agent layer on top of it — a rich MCP tool for every operation with resources, prompts, and sampling guidance, plus one or more Agent Skills per tool. Exports the enriched OpenAPI, an MCP server design, a registry server.json, and a ready-to-ship skills bundle. Runs in your browser." />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<script async src="https://www.googletagmanager.com/gtag/js?id=G-WNSPT4B4S8"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','G-WNSPT4B4S8');</script>
</head>
<body>
<header class="topbar">
<div class="brand"><strong>Toolsmith</strong><span class="tag">toolsmith.apicommons.org</span></div>
<nav>
<a href="#" id="nav-about" title="What this does">About</a>
<a href="https://apis.io" target="_blank" rel="noopener">APIs.io</a>
<a href="https://apicommons.org" target="_blank" rel="noopener">API Commons</a>
<a href="https://github.com/api-commons/toolsmith" target="_blank" rel="noopener">GitHub</a>
<button id="engage-ae" class="engage-btn" type="button" title="Work with API Evangelist on your agent layer">Get help</button>
</nav>
</header>
<!-- Laneworks ad network (ads.laneworks.net) -->
<script async src="https://ads.laneworks.net/embed.js"></script>
<div data-laneworks-ad="top-banner"></div>
<div class="toolbar">
<span class="tb-label">OpenAPI</span>
<button class="ghost-btn" id="load-ae" type="button" title="Load the API Evangelist network API">API Evangelist</button>
<button class="ghost-btn" id="load-apisio" type="button" title="Load the APIs.io search API">APIs.io</button>
<input type="url" id="url-in" placeholder="https://…/openapi.yml" />
<button class="ghost-btn" id="load-url" type="button">Fetch</button>
<input type="file" id="file" accept=".json,.yaml,.yml" hidden />
<button class="ghost-btn" id="upload-btn" type="button">Upload</button>
<button class="ghost-btn" id="paste-btn" type="button">Paste</button>
<span class="tb-sep"></span>
<button class="measure-btn" id="draft-all" type="button" title="Draft an MCP tool, prompt, and skill for every operation that has none yet">Draft all</button>
<div class="counts" id="status"></div>
</div>
<div class="cfg-bar">
<label>Registry name<input type="text" id="srv-name" placeholder="com.example/my-api" /></label>
<label>Server name<input type="text" id="srv-display" placeholder="My API MCP Server" /></label>
<label>Version<input type="text" id="srv-version" placeholder="1.0.0" /></label>
<label>Remote URL<input type="text" id="srv-remote" placeholder="https://mcp.example.com/mcp" /></label>
<label>Transport<select id="srv-transport"><option value="streamable-http">streamable-http</option><option value="sse">sse</option><option value="stdio">stdio</option></select></label>
<label>Repository<input type="text" id="srv-repo" placeholder="https://github.com/org/repo" /></label>
</div>
<details class="drawer" id="paste-drawer" hidden>
<summary>Paste an OpenAPI (JSON or YAML)</summary>
<div class="io-grid"><div class="io" style="grid-column:1/-1">
<textarea id="paste-text" spellcheck="false" placeholder="Paste an OpenAPI document, then Load…"></textarea>
<div style="margin-top:.5rem"><button class="measure-btn" id="paste-add" type="button">Load</button></div>
</div></div>
</details>
<main class="split">
<section class="pane left" id="left">
<h3>Operations</h3>
<input type="search" id="op-filter" placeholder="Filter operations…" />
<div id="ops"><div class="empty-note">Load an OpenAPI to start forging its agent layer.</div></div>
</section>
<section class="pane" id="right">
<div class="out-tabs" id="main-tabs">
<button class="out-tab is-active" data-tab="design">Design</button>
<button class="out-tab" data-tab="source">OpenAPI</button>
<button class="out-tab" data-tab="checks" id="checks-tab">Checks</button>
<button class="out-tab" data-tab="exports">Exports</button>
</div>
<div id="design-view"><div class="empty-note">Select an operation on the left to design its MCP tool and Agent Skills.</div></div>
<div id="checks-view" hidden></div>
<div id="source-view" hidden>
<div class="out-actions">
<button class="measure-btn" id="apply-source" type="button">Apply changes</button>
<span class="muted small">Edit the OpenAPI directly — your designs live in it as <code>x-mcp</code> / <code>x-agent-skills</code> extensions.</span>
</div>
<textarea id="source-text" class="source-editor" spellcheck="false"></textarea>
</div>
<div id="exports-view" hidden>
<div class="out-tabs sub" id="export-tabs">
<button class="out-tab is-active" data-out="openapi">Enriched OpenAPI</button>
<button class="out-tab" data-out="mcp">MCP design</button>
<button class="out-tab" data-out="serverjson">server.json</button>
<button class="out-tab" data-out="scaffold">MCP server</button>
<button class="out-tab" data-out="skills">Agent Skills</button>
<button class="out-tab" data-out="apisjson">APIs.json</button>
</div>
<div class="out-actions">
<button class="measure-btn" id="dl-out" type="button">Download</button>
<button class="ghost-btn" id="copy-out" type="button">Copy</button>
<span class="muted small" id="out-hint"></span>
</div>
<pre class="output" id="output"></pre>
</div>
</section>
</main>
<script type="module" src="/src/main.ts"></script>
</body>
</html>