@ounie/mcp 0.3.0 → 0.5.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/README.md +43 -1
- package/dist/api.d.ts +38 -0
- package/dist/api.js +27 -0
- package/dist/api.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +202 -7
- package/dist/index.js.map +1 -1
- package/dist/ui-resources.d.ts +22 -0
- package/dist/ui-resources.js +206 -0
- package/dist/ui-resources.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,45 @@ It speaks MCP over **stdio** and calls the Ounie REST API on your behalf using a
|
|
|
17
17
|
| `ounie_add_to_brain` | `brainId`, `content`, `title?`, `mode?`, `sourceUrl?` | Save a chat result (or any text). `mode:'synthesize'` (default) connects it into the wiki+graph and makes it citable; `mode:'note'` stores it verbatim. |
|
|
18
18
|
| `ounie_add_note` | `brainId`, `title`, `body` | Save a text note as a new source (verbatim). |
|
|
19
19
|
| `ounie_add_link` | `brainId`, `url` | Save a web link as a new source. |
|
|
20
|
+
| `ounie_save_asset` | `brainId`, `title`, `description?`, `type?`, `status?`, `links?`, `tags?`, `client?` | File an **output** made with the brain (carousel, article, ad…) into its Assets library. The opposite of `ounie_add_to_brain`: knowledge IN vs output OUT — assets are never ingested, never cited, cost nothing. Owner/editor only. |
|
|
20
21
|
| `ounie_search` | `brainId`, `query` | Retrieve & summarize relevant saved sources. |
|
|
22
|
+
| `ounie_get_context` | `brainId`, `query` | Retrieve the raw matching wiki pages **without** generating an answer — your assistant reasons over them and cites by `slug`. Cheaper/faster than `ounie_ask_brain`. |
|
|
23
|
+
|
|
24
|
+
### Prefer `ounie_get_context` for answering
|
|
25
|
+
|
|
26
|
+
`ounie_ask_brain` runs Ounie's own LLM to write the answer; `ounie_get_context` returns just
|
|
27
|
+
the retrieved pages so **your** assistant writes the answer. When the assistant is already a
|
|
28
|
+
capable model (Claude, ChatGPT), prefer `ounie_get_context` — it's faster and avoids a
|
|
29
|
+
redundant second model call. Add a standing instruction to your client so it routes there by
|
|
30
|
+
default:
|
|
31
|
+
|
|
32
|
+
> When answering from my Ounie brains, prefer `ounie_get_context` over `ounie_ask_brain`:
|
|
33
|
+
> call `ounie_get_context`, read the returned pages, and write the answer yourself, citing
|
|
34
|
+
> pages inline as `[[slug]]`. Only use `ounie_ask_brain` if I explicitly ask Ounie to answer.
|
|
35
|
+
|
|
36
|
+
## UI templates (ChatGPT app / MCP Apps)
|
|
37
|
+
|
|
38
|
+
Beyond tools, the server advertises the **`resources`** capability and serves a small set of
|
|
39
|
+
self-contained HTML **UI templates** (`ui://ounie/<name>.html`) so **Apps-SDK hosts** (ChatGPT,
|
|
40
|
+
MCP Inspector) render interactive cards inline. Non-Apps clients (Claude.ai, Claude Desktop,
|
|
41
|
+
Cursor) ignore resources and just use the text in each tool result — no behaviour change.
|
|
42
|
+
|
|
43
|
+
| Template | Tool(s) | What it shows |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| `ui://ounie/brain-picker.html` | `ounie_list_brains` | Grid of brains; tap to select. |
|
|
46
|
+
| `ui://ounie/source-list.html` | `ounie_search` | Ranked matching sources with links. |
|
|
47
|
+
| `ui://ounie/saved-toast.html` | `ounie_add_note`, `ounie_add_link` | Save confirmation. |
|
|
48
|
+
|
|
49
|
+
`ounie_get_context` and `ounie_ask_brain` are **text-only by design** (no card): the host model
|
|
50
|
+
writes the answer from the returned pages. (`get_context` briefly had an answer card; it was
|
|
51
|
+
dropped because the card sat above the streamed answer as an empty frame — the text answer is the
|
|
52
|
+
output.) Tool descriptors also carry MCP **annotations** (`readOnlyHint`/`destructiveHint`/
|
|
53
|
+
`openWorldHint`) so hosts label reads correctly.
|
|
54
|
+
|
|
55
|
+
The templates are defined once in `web/` and **vendored** here as `src/ui-resources.ts`
|
|
56
|
+
(hand-synced copy, like the tool list) since this package can't import from `web/`. The hosted
|
|
57
|
+
`POST /api/mcp` is also a submitted **ChatGPT app** (OpenAI Apps directory); domain verification
|
|
58
|
+
is served from `web/src/app/.well-known/openai-apps-challenge`.
|
|
21
59
|
|
|
22
60
|
## Get an API key
|
|
23
61
|
|
|
@@ -115,9 +153,13 @@ mcp/
|
|
|
115
153
|
├── tsconfig.json # NodeNext, strict, outDir dist
|
|
116
154
|
├── README.md
|
|
117
155
|
└── src/
|
|
118
|
-
├── index.ts # MCP stdio server +
|
|
156
|
+
├── index.ts # MCP stdio server: tools (+ annotations) & resources
|
|
157
|
+
├── ui-resources.ts # vendored UI templates (ui://ounie/*) — sync w/ web
|
|
119
158
|
└── api.ts # typed fetch client for the Ounie REST API
|
|
120
159
|
```
|
|
121
160
|
|
|
161
|
+
When you change a UI template or the tool spec, update **both** `web/` and this package
|
|
162
|
+
(`src/index.ts` tools, `src/ui-resources.ts` templates) — they're hand-synced.
|
|
163
|
+
|
|
122
164
|
`ounie_search` currently maps onto `ounie_ask_brain` with a retrieval-oriented prompt; it
|
|
123
165
|
will repoint to a dedicated search endpoint when one ships.
|
package/dist/api.d.ts
CHANGED
|
@@ -55,6 +55,22 @@ export declare class OunieClient {
|
|
|
55
55
|
listBrains(): Promise<Brain[]>;
|
|
56
56
|
/** POST /api/brains/:id/ask -> AskAnswer. */
|
|
57
57
|
ask(brainId: string, question: string): Promise<AskAnswer>;
|
|
58
|
+
/** POST /api/v1/brain-sets/:id/ask -> blended, dual-cited answer (Team only). */
|
|
59
|
+
askBrainSet(setId: string, question: string): Promise<{
|
|
60
|
+
answer: string;
|
|
61
|
+
citations: {
|
|
62
|
+
brain: {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
kind: "primary" | "advisor";
|
|
66
|
+
};
|
|
67
|
+
slug: string;
|
|
68
|
+
title: string;
|
|
69
|
+
url: string | null;
|
|
70
|
+
}[];
|
|
71
|
+
thin: boolean;
|
|
72
|
+
advisorContributed: boolean;
|
|
73
|
+
}>;
|
|
58
74
|
/**
|
|
59
75
|
* POST /api/brains/:id/context -> raw retrieved wiki pages, NO answer LLM.
|
|
60
76
|
* The caller's own model reasons over `contextText` and cites by `slug`.
|
|
@@ -84,6 +100,28 @@ export declare class OunieClient {
|
|
|
84
100
|
sourceUrl?: string;
|
|
85
101
|
externalId?: string;
|
|
86
102
|
}): Promise<Source>;
|
|
103
|
+
/**
|
|
104
|
+
* File an OUTPUT made with the brain into its Assets library (never
|
|
105
|
+
* ingested, never cited, zero cost — the opposite direction of addToBrain).
|
|
106
|
+
* POST /api/brains/:id/assets -> { asset }. Owner/editor only.
|
|
107
|
+
*/
|
|
108
|
+
saveAsset(brainId: string, input: {
|
|
109
|
+
title: string;
|
|
110
|
+
description?: string;
|
|
111
|
+
type?: string;
|
|
112
|
+
status?: string;
|
|
113
|
+
links?: {
|
|
114
|
+
url: string;
|
|
115
|
+
label?: string;
|
|
116
|
+
}[];
|
|
117
|
+
tags?: string[];
|
|
118
|
+
client?: string;
|
|
119
|
+
}): Promise<{
|
|
120
|
+
id: string;
|
|
121
|
+
title: string;
|
|
122
|
+
type: string;
|
|
123
|
+
status: string;
|
|
124
|
+
}>;
|
|
87
125
|
/**
|
|
88
126
|
* Search a brain. There is no dedicated search endpoint yet, so this maps to
|
|
89
127
|
* `ask` with a retrieval-oriented prompt. Swap to a real `/api/brains/:id/search`
|
package/dist/api.js
CHANGED
|
@@ -52,6 +52,10 @@ export class OunieClient {
|
|
|
52
52
|
async ask(brainId, question) {
|
|
53
53
|
return this.request(`/api/brains/${encodeURIComponent(brainId)}/ask`, { method: "POST", body: { question } });
|
|
54
54
|
}
|
|
55
|
+
/** POST /api/v1/brain-sets/:id/ask -> blended, dual-cited answer (Team only). */
|
|
56
|
+
async askBrainSet(setId, question) {
|
|
57
|
+
return this.request(`/api/v1/brain-sets/${encodeURIComponent(setId)}/ask`, { method: "POST", body: { question } });
|
|
58
|
+
}
|
|
55
59
|
/**
|
|
56
60
|
* POST /api/brains/:id/context -> raw retrieved wiki pages, NO answer LLM.
|
|
57
61
|
* The caller's own model reasons over `contextText` and cites by `slug`.
|
|
@@ -100,6 +104,29 @@ export class OunieClient {
|
|
|
100
104
|
});
|
|
101
105
|
return data.source;
|
|
102
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* File an OUTPUT made with the brain into its Assets library (never
|
|
109
|
+
* ingested, never cited, zero cost — the opposite direction of addToBrain).
|
|
110
|
+
* POST /api/brains/:id/assets -> { asset }. Owner/editor only.
|
|
111
|
+
*/
|
|
112
|
+
async saveAsset(brainId, input) {
|
|
113
|
+
const data = await this.request(`/api/brains/${encodeURIComponent(brainId)}/assets`, {
|
|
114
|
+
method: "POST",
|
|
115
|
+
body: {
|
|
116
|
+
title: input.title,
|
|
117
|
+
description: input.description,
|
|
118
|
+
type: input.type,
|
|
119
|
+
status: input.status,
|
|
120
|
+
links: input.links,
|
|
121
|
+
tags: input.tags,
|
|
122
|
+
madeWith: {
|
|
123
|
+
surface: "mcp",
|
|
124
|
+
...(input.client ? { client: input.client } : {}),
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
return data.asset;
|
|
129
|
+
}
|
|
103
130
|
/**
|
|
104
131
|
* Search a brain. There is no dedicated search endpoint yet, so this maps to
|
|
105
132
|
* `ask` with a retrieval-oriented prompt. Swap to a real `/api/brains/:id/search`
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* - ounie_add_note (brainId, title, body)
|
|
13
13
|
* - ounie_add_link (brainId, url)
|
|
14
14
|
* - ounie_add_to_brain (brainId, content, ...)
|
|
15
|
+
* - ounie_save_asset (brainId, title, ...) file an OUTPUT (never ingested)
|
|
15
16
|
* - ounie_search (brainId, query)
|
|
16
17
|
* - ounie_get_context (brainId, query) raw pages, no answer LLM
|
|
17
18
|
*/
|
package/dist/index.js
CHANGED
|
@@ -12,13 +12,25 @@
|
|
|
12
12
|
* - ounie_add_note (brainId, title, body)
|
|
13
13
|
* - ounie_add_link (brainId, url)
|
|
14
14
|
* - ounie_add_to_brain (brainId, content, ...)
|
|
15
|
+
* - ounie_save_asset (brainId, title, ...) file an OUTPUT (never ingested)
|
|
15
16
|
* - ounie_search (brainId, query)
|
|
16
17
|
* - ounie_get_context (brainId, query) raw pages, no answer LLM
|
|
17
18
|
*/
|
|
18
19
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
19
20
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
20
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
21
|
+
import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
21
22
|
import { OunieClient } from "./api.js";
|
|
23
|
+
import { listUiResources, readUiResource } from "./ui-resources.js";
|
|
24
|
+
/** Descriptor `_meta` naming a tool's UI output template (MCP Apps + ChatGPT). */
|
|
25
|
+
function uiMeta(name, invoking, invoked) {
|
|
26
|
+
const uri = `ui://ounie/${name}.html`;
|
|
27
|
+
return {
|
|
28
|
+
ui: { resourceUri: uri },
|
|
29
|
+
"openai/outputTemplate": uri,
|
|
30
|
+
"openai/toolInvocation/invoking": invoking,
|
|
31
|
+
"openai/toolInvocation/invoked": invoked,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
22
34
|
// --- Config --------------------------------------------------------------------
|
|
23
35
|
const API_KEY = process.env.OUNIE_API_KEY;
|
|
24
36
|
const BASE_URL = process.env.OUNIE_BASE_URL ?? "https://ounie.com";
|
|
@@ -29,7 +41,7 @@ if (!API_KEY) {
|
|
|
29
41
|
}
|
|
30
42
|
const client = new OunieClient({ apiKey: API_KEY, baseUrl: BASE_URL });
|
|
31
43
|
// --- Tool definitions ----------------------------------------------------------
|
|
32
|
-
const
|
|
44
|
+
const TOOL_SPECS = [
|
|
33
45
|
{
|
|
34
46
|
name: "ounie_list_brains",
|
|
35
47
|
description: "List the user's Ounie brains (their knowledge containers). Call this FIRST " +
|
|
@@ -40,6 +52,7 @@ const TOOLS = [
|
|
|
40
52
|
properties: {},
|
|
41
53
|
additionalProperties: false,
|
|
42
54
|
},
|
|
55
|
+
_meta: uiMeta("brain-picker", "Loading your brains…", "Pick a brain."),
|
|
43
56
|
},
|
|
44
57
|
{
|
|
45
58
|
name: "ounie_ask_brain",
|
|
@@ -57,6 +70,22 @@ const TOOLS = [
|
|
|
57
70
|
additionalProperties: false,
|
|
58
71
|
},
|
|
59
72
|
},
|
|
73
|
+
{
|
|
74
|
+
name: "ounie_ask_brain_set",
|
|
75
|
+
description: "Answer a question using a BRAIN SET — a primary brain (authoritative facts) " +
|
|
76
|
+
"blended with one or more advisor brains (expert guidance) — in one cited " +
|
|
77
|
+
"answer that tags each citation by source brain. Needs a brain set id (set_…). " +
|
|
78
|
+
"Team plan only.",
|
|
79
|
+
inputSchema: {
|
|
80
|
+
type: "object",
|
|
81
|
+
properties: {
|
|
82
|
+
setId: { type: "string", description: "The brain set's id (set_…)." },
|
|
83
|
+
question: { type: "string", description: "The question to ask." },
|
|
84
|
+
},
|
|
85
|
+
required: ["setId", "question"],
|
|
86
|
+
additionalProperties: false,
|
|
87
|
+
},
|
|
88
|
+
},
|
|
60
89
|
{
|
|
61
90
|
name: "ounie_add_note",
|
|
62
91
|
description: "Add a short verbatim text note as a source (no synthesis). To save a chat " +
|
|
@@ -72,6 +101,7 @@ const TOOLS = [
|
|
|
72
101
|
required: ["brainId", "title", "body"],
|
|
73
102
|
additionalProperties: false,
|
|
74
103
|
},
|
|
104
|
+
_meta: uiMeta("saved-toast", "Saving the note…", "Saved."),
|
|
75
105
|
},
|
|
76
106
|
{
|
|
77
107
|
name: "ounie_add_link",
|
|
@@ -86,6 +116,7 @@ const TOOLS = [
|
|
|
86
116
|
required: ["brainId", "url"],
|
|
87
117
|
additionalProperties: false,
|
|
88
118
|
},
|
|
119
|
+
_meta: uiMeta("saved-toast", "Saving the link…", "Saved."),
|
|
89
120
|
},
|
|
90
121
|
{
|
|
91
122
|
name: "ounie_add_to_brain",
|
|
@@ -117,6 +148,74 @@ const TOOLS = [
|
|
|
117
148
|
additionalProperties: false,
|
|
118
149
|
},
|
|
119
150
|
},
|
|
151
|
+
{
|
|
152
|
+
name: "ounie_save_asset",
|
|
153
|
+
description: "File an OUTPUT made with a brain — a carousel, article, video script, " +
|
|
154
|
+
"landing page, ad — into that brain's Assets library. Two verbs, no " +
|
|
155
|
+
"confusion: ounie_add_to_brain = knowledge IN (becomes citable); " +
|
|
156
|
+
"ounie_save_asset = output OUT (a library entry beside the brain — never " +
|
|
157
|
+
"ingested, never cited, zero cost). Use when the user finishes making " +
|
|
158
|
+
"something with their brain and wants it filed: pass a title, a short " +
|
|
159
|
+
"description (the content itself can go here as Markdown), external links " +
|
|
160
|
+
"(the live post, the published page), and tags. Needs a brainId from " +
|
|
161
|
+
"ounie_list_brains.",
|
|
162
|
+
inputSchema: {
|
|
163
|
+
type: "object",
|
|
164
|
+
properties: {
|
|
165
|
+
brainId: { type: "string", description: "The brain's id." },
|
|
166
|
+
title: { type: "string", description: "What this output is." },
|
|
167
|
+
description: {
|
|
168
|
+
type: "string",
|
|
169
|
+
description: "Markdown notes — context, the copy itself, what it was for.",
|
|
170
|
+
},
|
|
171
|
+
type: {
|
|
172
|
+
type: "string",
|
|
173
|
+
enum: [
|
|
174
|
+
"image",
|
|
175
|
+
"carousel",
|
|
176
|
+
"video",
|
|
177
|
+
"article",
|
|
178
|
+
"blog_post",
|
|
179
|
+
"landing_page",
|
|
180
|
+
"email",
|
|
181
|
+
"ad",
|
|
182
|
+
"doc",
|
|
183
|
+
"other",
|
|
184
|
+
],
|
|
185
|
+
description: "Kind of output; defaults to 'other'.",
|
|
186
|
+
},
|
|
187
|
+
status: {
|
|
188
|
+
type: "string",
|
|
189
|
+
enum: ["draft", "published", "archived"],
|
|
190
|
+
description: "draft (default) | published | archived.",
|
|
191
|
+
},
|
|
192
|
+
links: {
|
|
193
|
+
type: "array",
|
|
194
|
+
description: "Where it lives in the wild (max 10, http(s) only).",
|
|
195
|
+
items: {
|
|
196
|
+
type: "object",
|
|
197
|
+
properties: {
|
|
198
|
+
url: { type: "string" },
|
|
199
|
+
label: { type: "string" },
|
|
200
|
+
},
|
|
201
|
+
required: ["url"],
|
|
202
|
+
additionalProperties: false,
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
tags: {
|
|
206
|
+
type: "array",
|
|
207
|
+
items: { type: "string" },
|
|
208
|
+
description: "Flat filterable tags (max 10).",
|
|
209
|
+
},
|
|
210
|
+
client: {
|
|
211
|
+
type: "string",
|
|
212
|
+
description: "The app that made it (e.g. 'Claude') — shown as provenance.",
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
required: ["brainId", "title"],
|
|
216
|
+
additionalProperties: false,
|
|
217
|
+
},
|
|
218
|
+
},
|
|
120
219
|
{
|
|
121
220
|
name: "ounie_search",
|
|
122
221
|
description: "Find and summarize the most relevant saved sources in a brain for a query, " +
|
|
@@ -131,6 +230,7 @@ const TOOLS = [
|
|
|
131
230
|
required: ["brainId", "query"],
|
|
132
231
|
additionalProperties: false,
|
|
133
232
|
},
|
|
233
|
+
_meta: uiMeta("source-list", "Searching your brain…", "Found matching sources."),
|
|
134
234
|
},
|
|
135
235
|
{
|
|
136
236
|
name: "ounie_get_context",
|
|
@@ -150,16 +250,58 @@ const TOOLS = [
|
|
|
150
250
|
},
|
|
151
251
|
},
|
|
152
252
|
];
|
|
253
|
+
// Behaviour hints so hosts don't default-label read tools as DESTRUCTIVE.
|
|
254
|
+
const READ = { readOnlyHint: true, destructiveHint: false, openWorldHint: false };
|
|
255
|
+
const WRITE = { readOnlyHint: false, destructiveHint: false, openWorldHint: false };
|
|
256
|
+
const WRITE_OPEN = { readOnlyHint: false, destructiveHint: false, openWorldHint: true };
|
|
257
|
+
const TOOL_ANNOTATIONS = {
|
|
258
|
+
ounie_list_brains: READ,
|
|
259
|
+
ounie_ask_brain: READ,
|
|
260
|
+
ounie_ask_brain_set: READ,
|
|
261
|
+
ounie_search: READ,
|
|
262
|
+
ounie_get_context: READ,
|
|
263
|
+
ounie_add_note: WRITE,
|
|
264
|
+
ounie_add_to_brain: WRITE,
|
|
265
|
+
ounie_add_link: WRITE_OPEN,
|
|
266
|
+
ounie_save_asset: WRITE, // links are stored, never fetched
|
|
267
|
+
};
|
|
268
|
+
const TOOLS = TOOL_SPECS.map((t) => ({
|
|
269
|
+
...t,
|
|
270
|
+
annotations: TOOL_ANNOTATIONS[t.name],
|
|
271
|
+
}));
|
|
153
272
|
// --- Server --------------------------------------------------------------------
|
|
154
|
-
const server = new Server({
|
|
273
|
+
const server = new Server({
|
|
274
|
+
name: "ounie-mcp",
|
|
275
|
+
version: "0.5.0",
|
|
276
|
+
icons: [
|
|
277
|
+
{
|
|
278
|
+
src: "https://ounie.com/icon.png",
|
|
279
|
+
mimeType: "image/png",
|
|
280
|
+
sizes: ["512x512"],
|
|
281
|
+
},
|
|
282
|
+
],
|
|
283
|
+
}, { capabilities: { tools: {}, resources: {} } });
|
|
155
284
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
285
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => listUiResources());
|
|
286
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
287
|
+
const res = readUiResource(request.params.uri);
|
|
288
|
+
if (!res)
|
|
289
|
+
throw new Error(`Resource not found: ${request.params.uri}`);
|
|
290
|
+
return res;
|
|
291
|
+
});
|
|
156
292
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
157
293
|
const { name, arguments: args = {} } = request.params;
|
|
158
294
|
try {
|
|
159
295
|
switch (name) {
|
|
160
296
|
case "ounie_list_brains": {
|
|
161
297
|
const brains = await client.listBrains();
|
|
162
|
-
|
|
298
|
+
const view = brains.map((b) => ({
|
|
299
|
+
id: b.id,
|
|
300
|
+
name: b.name,
|
|
301
|
+
emoji: b.emoji ?? null,
|
|
302
|
+
sourceCount: b.sourceCount ?? 0,
|
|
303
|
+
}));
|
|
304
|
+
return card(JSON.stringify(view, null, 2), { brains: view });
|
|
163
305
|
}
|
|
164
306
|
case "ounie_ask_brain": {
|
|
165
307
|
const { brainId, question } = args;
|
|
@@ -169,15 +311,33 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
169
311
|
.join("\n");
|
|
170
312
|
return text(`${answer.answerMd}\n\n${cites ? `Sources:\n${cites}` : ""}`.trim());
|
|
171
313
|
}
|
|
314
|
+
case "ounie_ask_brain_set": {
|
|
315
|
+
const { setId, question } = args;
|
|
316
|
+
const res = await client.askBrainSet(setId, question);
|
|
317
|
+
const cites = res.citations
|
|
318
|
+
.map((c) => `- [${c.brain.kind}: ${c.brain.name}] ${c.title} (${c.slug})${c.url ? ` ${c.url}` : ""}`)
|
|
319
|
+
.join("\n");
|
|
320
|
+
return text(`${res.answer}\n\n${cites ? `Sources:\n${cites}` : ""}`.trim());
|
|
321
|
+
}
|
|
172
322
|
case "ounie_add_note": {
|
|
173
323
|
const { brainId, title, body } = args;
|
|
174
324
|
const source = await client.addNote(brainId, title, body);
|
|
175
|
-
return
|
|
325
|
+
return card(`Added note "${title}" (source ${source.id}).`, {
|
|
326
|
+
brainName: "your brain",
|
|
327
|
+
title,
|
|
328
|
+
status: source.status === "ready" ? "ready" : "processing",
|
|
329
|
+
sourceId: source.id,
|
|
330
|
+
});
|
|
176
331
|
}
|
|
177
332
|
case "ounie_add_link": {
|
|
178
333
|
const { brainId, url } = args;
|
|
179
334
|
const source = await client.addLink(brainId, url);
|
|
180
|
-
return
|
|
335
|
+
return card(`Added link ${url} (source ${source.id}).`, {
|
|
336
|
+
brainName: "your brain",
|
|
337
|
+
title: url,
|
|
338
|
+
status: source.status === "ready" ? "ready" : "processing",
|
|
339
|
+
sourceId: source.id,
|
|
340
|
+
});
|
|
181
341
|
}
|
|
182
342
|
case "ounie_add_to_brain": {
|
|
183
343
|
const { brainId, content, title, mode, sourceUrl, externalId } = args;
|
|
@@ -191,13 +351,37 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
191
351
|
return text(`Saved to brain ${brainId} (source ${source.id}, ${source.status ?? "processing"}). ` +
|
|
192
352
|
`Searchable once ingestion finishes.`);
|
|
193
353
|
}
|
|
354
|
+
case "ounie_save_asset": {
|
|
355
|
+
const { brainId, title, description, type, status, links, tags, client: madeWithClient, } = args;
|
|
356
|
+
const asset = await client.saveAsset(brainId, {
|
|
357
|
+
title,
|
|
358
|
+
description,
|
|
359
|
+
type,
|
|
360
|
+
status,
|
|
361
|
+
links,
|
|
362
|
+
tags,
|
|
363
|
+
client: madeWithClient,
|
|
364
|
+
});
|
|
365
|
+
return text(`Filed "${asset.title}" as a ${asset.type} asset (${asset.id}) in the ` +
|
|
366
|
+
`brain's Assets library — not ingested, not citable, zero cost. ` +
|
|
367
|
+
`View: ${BASE_URL}/dashboard/brains/${brainId}/assets`);
|
|
368
|
+
}
|
|
194
369
|
case "ounie_search": {
|
|
195
370
|
const { brainId, query } = args;
|
|
196
371
|
const answer = await client.search(brainId, query);
|
|
197
372
|
const cites = answer.citations
|
|
198
373
|
.map((c) => `- ${c.title} (${c.slug})`)
|
|
199
374
|
.join("\n");
|
|
200
|
-
|
|
375
|
+
// Citations carry no public URL over REST, so chips aren't clickable
|
|
376
|
+
// here (the hosted /api/mcp path supplies URLs); text answer is intact.
|
|
377
|
+
return card(`${answer.answerMd}\n\n${cites ? `Sources:\n${cites}` : ""}`.trim(), {
|
|
378
|
+
brainName: "your brain",
|
|
379
|
+
results: answer.citations.map((c) => ({
|
|
380
|
+
slug: c.slug,
|
|
381
|
+
title: c.title,
|
|
382
|
+
url: "",
|
|
383
|
+
})),
|
|
384
|
+
});
|
|
201
385
|
}
|
|
202
386
|
case "ounie_get_context": {
|
|
203
387
|
const { brainId, query } = args;
|
|
@@ -228,6 +412,17 @@ function text(value, isError = false) {
|
|
|
228
412
|
isError,
|
|
229
413
|
};
|
|
230
414
|
}
|
|
415
|
+
/** CallTool result that also hydrates a UI card (structuredContent + _meta). */
|
|
416
|
+
function card(value, structuredContent, meta) {
|
|
417
|
+
const res = {
|
|
418
|
+
content: [{ type: "text", text: value }],
|
|
419
|
+
isError: false,
|
|
420
|
+
structuredContent,
|
|
421
|
+
};
|
|
422
|
+
if (meta)
|
|
423
|
+
res._meta = meta;
|
|
424
|
+
return res;
|
|
425
|
+
}
|
|
231
426
|
// --- Boot ----------------------------------------------------------------------
|
|
232
427
|
async function main() {
|
|
233
428
|
const transport = new StdioServerTransport();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP-Apps UI templates for the stdio server — VENDORED COPY of
|
|
3
|
+
* `web/src/server/mcp-ui.ts` + `mcp-resources.ts`. The stdio package can't
|
|
4
|
+
* import from `web/`, so (like the TOOLS array) these strings are hand-synced.
|
|
5
|
+
* Keep them identical to the web originals.
|
|
6
|
+
*/
|
|
7
|
+
export declare const UI_MIME = "text/html;profile=mcp-app";
|
|
8
|
+
export declare function listUiResources(): {
|
|
9
|
+
resources: {
|
|
10
|
+
uri: string;
|
|
11
|
+
name: string;
|
|
12
|
+
mimeType: string;
|
|
13
|
+
}[];
|
|
14
|
+
};
|
|
15
|
+
export declare function readUiResource(uri: string): {
|
|
16
|
+
contents: {
|
|
17
|
+
uri: string;
|
|
18
|
+
mimeType: string;
|
|
19
|
+
text: string;
|
|
20
|
+
_meta: Record<string, unknown>;
|
|
21
|
+
}[];
|
|
22
|
+
} | null;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP-Apps UI templates for the stdio server — VENDORED COPY of
|
|
3
|
+
* `web/src/server/mcp-ui.ts` + `mcp-resources.ts`. The stdio package can't
|
|
4
|
+
* import from `web/`, so (like the TOOLS array) these strings are hand-synced.
|
|
5
|
+
* Keep them identical to the web originals.
|
|
6
|
+
*/
|
|
7
|
+
const SHARED_CSS = `
|
|
8
|
+
:root{
|
|
9
|
+
--aqua:#67e8d0; --violet:#a690f5; --indigo:#5b39d0;
|
|
10
|
+
--ink:#1a1a22; --dim:#5b5b6b; --line:rgba(0,0,0,.10); --panel:#fff; --bg:transparent;
|
|
11
|
+
}
|
|
12
|
+
@media (prefers-color-scheme: dark){
|
|
13
|
+
:root{ --ink:#e9e9f2; --dim:#a3a3b8; --line:rgba(255,255,255,.12); --panel:#15151f; }
|
|
14
|
+
}
|
|
15
|
+
*{box-sizing:border-box}
|
|
16
|
+
html,body{margin:0;background:var(--bg)}
|
|
17
|
+
body{
|
|
18
|
+
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
|
|
19
|
+
color:var(--ink); line-height:1.5; padding:4px;
|
|
20
|
+
}
|
|
21
|
+
.card{
|
|
22
|
+
background:var(--panel); border:1px solid var(--line); border-radius:14px;
|
|
23
|
+
padding:16px; max-width:560px;
|
|
24
|
+
}
|
|
25
|
+
.brain{font-size:12px;color:var(--dim);font-weight:600;letter-spacing:.01em;margin:0 0 10px}
|
|
26
|
+
.chips{display:flex;flex-direction:column;gap:8px;margin:0 0 12px}
|
|
27
|
+
.chip{
|
|
28
|
+
text-align:left;width:100%;cursor:pointer;background:transparent;color:inherit;
|
|
29
|
+
border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;
|
|
30
|
+
transition:border-color .15s,transform .15s;
|
|
31
|
+
}
|
|
32
|
+
.chip:hover{border-color:var(--aqua);transform:translateY(-1px)}
|
|
33
|
+
.chip .t{font-weight:600;font-size:14px;display:block}
|
|
34
|
+
.chip .e{color:var(--dim);font-size:13px;margin-top:3px;display:block}
|
|
35
|
+
.acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
|
|
36
|
+
.btn{
|
|
37
|
+
cursor:pointer;font:inherit;font-size:13px;font-weight:600;border-radius:9px;
|
|
38
|
+
padding:7px 12px;border:1px solid var(--line);background:transparent;color:inherit;
|
|
39
|
+
}
|
|
40
|
+
.btn:hover{border-color:var(--violet)}
|
|
41
|
+
.btn.primary{background:var(--indigo);color:#fff;border-color:transparent}
|
|
42
|
+
.btn.primary:hover{filter:brightness(1.08)}
|
|
43
|
+
.muted{color:var(--dim);font-size:13px;margin:0}
|
|
44
|
+
.foot{margin-top:14px;color:var(--dim);font-size:11px}
|
|
45
|
+
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
|
|
46
|
+
.bcard{cursor:pointer;border:1px solid var(--line);border-radius:12px;padding:14px;text-align:left;background:transparent;color:inherit;font:inherit}
|
|
47
|
+
.bcard:hover{border-color:var(--aqua);transform:translateY(-1px)}
|
|
48
|
+
.bcard .em{font-size:22px}
|
|
49
|
+
.bcard .nm{font-weight:600;font-size:14px;margin-top:6px}
|
|
50
|
+
.bcard .sc{color:var(--dim);font-size:12px;margin-top:2px}
|
|
51
|
+
.toast{display:flex;gap:10px;align-items:flex-start}
|
|
52
|
+
.dot{width:8px;height:8px;border-radius:50%;background:var(--aqua);margin-top:6px;flex:0 0 auto}
|
|
53
|
+
`.trim();
|
|
54
|
+
const BRIDGE_JS = `
|
|
55
|
+
function oai(){ return (window.openai)||null; }
|
|
56
|
+
function out(){ var o=oai(); return (o&&o.toolOutput)||{}; }
|
|
57
|
+
function inp(){ var o=oai(); return (o&&o.toolInput)||{}; }
|
|
58
|
+
function openExt(href){ var o=oai(); if(o&&href) o.openExternal({href:href}); }
|
|
59
|
+
function callTool(n,a){ var o=oai(); if(o) o.callTool(n,a||{}); }
|
|
60
|
+
function follow(p){ var o=oai(); if(o) o.sendFollowUpMessage({prompt:p}); }
|
|
61
|
+
function setState(s){ var o=oai(); if(o&&o.setWidgetState) o.setWidgetState(s); }
|
|
62
|
+
function el(tag,cls,txt){ var e=document.createElement(tag); if(cls)e.className=cls; if(txt!=null)e.textContent=txt; return e; }
|
|
63
|
+
function rerender(){ try{ render(); }catch(e){} }
|
|
64
|
+
window.addEventListener('openai:set_globals', rerender);
|
|
65
|
+
document.addEventListener('DOMContentLoaded', rerender);
|
|
66
|
+
`.trim();
|
|
67
|
+
function docHtml(title, body, js) {
|
|
68
|
+
return `<!doctype html>
|
|
69
|
+
<html lang="en"><head><meta charset="utf-8"/>
|
|
70
|
+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
71
|
+
<title>${title}</title>
|
|
72
|
+
<style>${SHARED_CSS}</style></head>
|
|
73
|
+
<body><div id="root">${body}</div>
|
|
74
|
+
<script>${BRIDGE_JS}
|
|
75
|
+
${js}
|
|
76
|
+
</script></body></html>`;
|
|
77
|
+
}
|
|
78
|
+
const BRAIN_PICKER = docHtml("Pick a brain", `<div class="card" id="card"></div>`, `
|
|
79
|
+
function render(){
|
|
80
|
+
var d=out(), root=document.getElementById('card');
|
|
81
|
+
root.innerHTML='';
|
|
82
|
+
var brains=d.brains||[];
|
|
83
|
+
if(!brains.length){ root.appendChild(el('p','muted','No brains yet — create one on ounie.com.')); return; }
|
|
84
|
+
root.appendChild(el('p','brain','Choose a brain'));
|
|
85
|
+
var grid=el('div','grid');
|
|
86
|
+
brains.forEach(function(b){
|
|
87
|
+
var c=el('button','bcard');
|
|
88
|
+
c.appendChild(el('div','em',b.emoji||'🧠'));
|
|
89
|
+
c.appendChild(el('div','nm',b.name||'Untitled'));
|
|
90
|
+
c.appendChild(el('div','sc',(b.sourceCount||0)+' source'+((b.sourceCount===1)?'':'s')));
|
|
91
|
+
c.onclick=function(){ setState({lastBrainId:b.id}); follow('Use my "'+(b.name||'')+'" brain.'); };
|
|
92
|
+
grid.appendChild(c);
|
|
93
|
+
});
|
|
94
|
+
root.appendChild(grid);
|
|
95
|
+
root.appendChild(el('p','foot','powered by Ounie'));
|
|
96
|
+
}
|
|
97
|
+
`);
|
|
98
|
+
const SOURCE_LIST = docHtml("Matching sources", `<div class="card" id="card"></div>`, `
|
|
99
|
+
function render(){
|
|
100
|
+
var d=out(), root=document.getElementById('card'), inn=inp();
|
|
101
|
+
root.innerHTML='';
|
|
102
|
+
root.appendChild(el('p','brain',d.brainName||'Your brain'));
|
|
103
|
+
if(d.paymentRequired){
|
|
104
|
+
root.appendChild(el('p','muted','This brain is a paid listing. Open it on the web to search.'));
|
|
105
|
+
var pb=el('button','btn primary','Open on ounie.com');
|
|
106
|
+
pb.onclick=function(){ openExt(d.buyUrl||'https://ounie.com'); };
|
|
107
|
+
root.appendChild(pb); return;
|
|
108
|
+
}
|
|
109
|
+
var results=d.results||[];
|
|
110
|
+
if(!results.length){ root.appendChild(el('p','muted','No matching sources yet.')); return; }
|
|
111
|
+
var chips=el('div','chips');
|
|
112
|
+
results.forEach(function(r){
|
|
113
|
+
var c=el('button','chip');
|
|
114
|
+
c.appendChild(el('span','t',r.title||r.slug));
|
|
115
|
+
if(r.url) c.onclick=function(){ openExt(r.url); };
|
|
116
|
+
chips.appendChild(c);
|
|
117
|
+
});
|
|
118
|
+
root.appendChild(chips);
|
|
119
|
+
if(inn.brainId && inn.query){
|
|
120
|
+
var acts=el('div','acts');
|
|
121
|
+
var g=el('button','btn primary','Get a cited answer');
|
|
122
|
+
g.onclick=function(){ callTool('ounie_get_context',{brainId:inn.brainId,query:inn.query}); };
|
|
123
|
+
acts.appendChild(g);
|
|
124
|
+
root.appendChild(acts);
|
|
125
|
+
}
|
|
126
|
+
root.appendChild(el('p','foot','powered by Ounie'));
|
|
127
|
+
}
|
|
128
|
+
`);
|
|
129
|
+
const SAVED_TOAST = docHtml("Saved to Ounie", `<div class="card" id="card"></div>`, `
|
|
130
|
+
function render(){
|
|
131
|
+
var d=out(), root=document.getElementById('card');
|
|
132
|
+
root.innerHTML='';
|
|
133
|
+
var box=el('div','toast');
|
|
134
|
+
box.appendChild(el('div','dot'));
|
|
135
|
+
var col=el('div');
|
|
136
|
+
col.appendChild(el('div','t','Saved to '+(d.brainName||'your brain')));
|
|
137
|
+
if(d.title) col.appendChild(el('div','e',d.title));
|
|
138
|
+
col.appendChild(el('p','muted', d.status==='ready' ? 'Ready to search.' : 'Processing — searchable once ready.'));
|
|
139
|
+
box.appendChild(col);
|
|
140
|
+
root.appendChild(box);
|
|
141
|
+
root.appendChild(el('p','foot','powered by Ounie'));
|
|
142
|
+
}
|
|
143
|
+
`);
|
|
144
|
+
const UI_COMPONENTS = {
|
|
145
|
+
"brain-picker": BRAIN_PICKER,
|
|
146
|
+
"source-list": SOURCE_LIST,
|
|
147
|
+
"saved-toast": SAVED_TOAST,
|
|
148
|
+
};
|
|
149
|
+
const DESCRIPTIONS = {
|
|
150
|
+
"brain-picker": "Pick which Ounie brain to use.",
|
|
151
|
+
"source-list": "Matching saved sources from your Ounie brain.",
|
|
152
|
+
"saved-toast": "Confirmation that something was saved to your brain.",
|
|
153
|
+
};
|
|
154
|
+
export const UI_MIME = "text/html;profile=mcp-app";
|
|
155
|
+
function appOrigin() {
|
|
156
|
+
const raw = process.env.OUNIE_BASE_URL ?? "https://ounie.com";
|
|
157
|
+
try {
|
|
158
|
+
return new URL(raw).origin;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return "https://ounie.com";
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function buildResources() {
|
|
165
|
+
const origin = appOrigin();
|
|
166
|
+
const csp = {
|
|
167
|
+
connect_domains: [origin],
|
|
168
|
+
resource_domains: [origin],
|
|
169
|
+
redirect_domains: [origin],
|
|
170
|
+
};
|
|
171
|
+
const map = {};
|
|
172
|
+
for (const [name, html] of Object.entries(UI_COMPONENTS)) {
|
|
173
|
+
const uri = `ui://ounie/${name}.html`;
|
|
174
|
+
map[uri] = {
|
|
175
|
+
uri,
|
|
176
|
+
name,
|
|
177
|
+
html,
|
|
178
|
+
meta: {
|
|
179
|
+
"openai/widgetDescription": DESCRIPTIONS[name] ?? name,
|
|
180
|
+
"openai/widgetDomain": origin,
|
|
181
|
+
"openai/widgetPrefersBorder": true,
|
|
182
|
+
"openai/widgetCSP": csp,
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
return map;
|
|
187
|
+
}
|
|
188
|
+
const RESOURCES = buildResources();
|
|
189
|
+
export function listUiResources() {
|
|
190
|
+
return {
|
|
191
|
+
resources: Object.values(RESOURCES).map((r) => ({
|
|
192
|
+
uri: r.uri,
|
|
193
|
+
name: r.name,
|
|
194
|
+
mimeType: UI_MIME,
|
|
195
|
+
})),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
export function readUiResource(uri) {
|
|
199
|
+
const r = RESOURCES[uri];
|
|
200
|
+
if (!r)
|
|
201
|
+
return null;
|
|
202
|
+
return {
|
|
203
|
+
contents: [{ uri: r.uri, mimeType: UI_MIME, text: r.html, _meta: r.meta }],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=ui-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-resources.js","sourceRoot":"","sources":["../src/ui-resources.ts"],"names":[],"mappings":"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"}
|