@phenomenalorg/mcp 0.5.2 → 0.5.4
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/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -8,7 +8,7 @@ description: Use when the user wants to manage a PTO, school or club in Phenomen
|
|
|
8
8
|
<!-- Generated from the Phenomenal tool registry. Do not edit by hand: a drift
|
|
9
9
|
gate fails when these files are not what the registry currently says. -->
|
|
10
10
|
|
|
11
|
-
_Tool surface:
|
|
11
|
+
_Tool surface: 47 tools · 170 actions · 5 prompts · fingerprint `c6ca31f7`._
|
|
12
12
|
|
|
13
13
|
You are connected to Phenomenal, the platform for this PTO's site, members, events, tickets, email, forms, store and money.
|
|
14
14
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- Generated from the Phenomenal tool registry. Do not edit by hand: a drift
|
|
4
4
|
gate fails when these files are not what the registry currently says. -->
|
|
5
5
|
|
|
6
|
-
_Tool surface:
|
|
6
|
+
_Tool surface: 47 tools · 170 actions · 5 prompts · fingerprint `c6ca31f7`._
|
|
7
7
|
|
|
8
8
|
The curated tools in `references/tools.md` cover the work an officer does most days. Everything else Phenomenal can do is reachable by name:
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- Generated from the Phenomenal tool registry. Do not edit by hand: a drift
|
|
4
4
|
gate fails when these files are not what the registry currently says. -->
|
|
5
5
|
|
|
6
|
-
_Tool surface:
|
|
6
|
+
_Tool surface: 47 tools · 170 actions · 5 prompts · fingerprint `c6ca31f7`._
|
|
7
7
|
|
|
8
8
|
Two tools answer questions no curated tool anticipated.
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- Generated from the Phenomenal tool registry. Do not edit by hand: a drift
|
|
4
4
|
gate fails when these files are not what the registry currently says. -->
|
|
5
5
|
|
|
6
|
-
_Tool surface:
|
|
6
|
+
_Tool surface: 47 tools · 170 actions · 5 prompts · fingerprint `c6ca31f7`._
|
|
7
7
|
|
|
8
8
|
Phenomenal runs a school's PTO: its public website, its member roster, its events and tickets, its email to families, its forms, its store and its money. It exposes all of that over the Model Context Protocol, so an assistant an officer already uses can do the work with them.
|
|
9
9
|
|
|
@@ -97,13 +97,19 @@ Custom HTML supports local <style> blocks in a leaf {id,type:"html",props:{html:
|
|
|
97
97
|
|
|
98
98
|
CSS v1: element/class/ID compounds and comma lists; descendant and child (>) combinators; :hover, :focus, :focus-visible. No global/universal/attribute/sibling selectors, functional pseudos or pseudo-elements. Media queries are a single (min-width:Npx)/(max-width:Npx), N=240–2560, or (prefers-reduced-motion:reduce/no-preference). Existing approved inline typography, spacing, color, borders, table and flex/grid display rules also work in sheets. Linear gradients accept an optional -360–360deg angle; radial gradients an optional circle/ellipse. Both need 2–8 approved opaque named or 3/6-digit hex colors with optional ordered 0–100% stops. Background-position uses two 0–100% values; background-size uses two 100–400% values.
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
Contained web layout accepts grid-template-columns/rows with 1–8 positive px/em/rem/%/vw/vh/fr tracks; fr is 0.01–16. Use the existing media-query grammar to replace unequal desktop tracks such as 1.2fr 1fr with 1fr on small screens. Grid column/row starts and ends use positive lines 1–9 or end spans 1–8; the grid-column/grid-row shorthand requires start / end or start / span N and cannot address beyond line 9 in one declaration list. Separately matching rules can combine start 9 and span 8 so one explicit placement reaches end line 17 across at most 16 tracks; that reach is not a universal implicit-grid size cap, and the compiler does not pretend to evaluate the browser's whole selector cascade. Siblings may share the same bounded cell for a contained overlay; source DOM order decides paint. Position, inset and z-index remain unavailable. align-self/justify-self accept start/end/center/stretch. flex-grow/flex-shrink accept 0–8; flex-basis accepts auto or a positive approved dimension. aspect-ratio accepts one positive number or a positive N / N pair from 0.01–100; object-position requires two 0–100% coordinates. Pair dimensions with object-fit:cover for a stable crop. repeat(), minmax(), named tracks/areas, subgrid and computed sizing remain unavailable. These layout declarations are web-only; email keeps readable source order and omits them.
|
|
101
|
+
|
|
102
|
+
HTML sections use the default contained variant unless the author explicitly chooses variant:"canvas" (shown as Edge to edge). Canvas removes the trusted section envelope's horizontal and vertical inset from the HTML payload only; a title, intro, actions or footnote stays in its trusted rail, and an absent field creates no empty rail. A nested canvas fills only its trusted parent, never the viewport, so do not imitate it with negative margins, 100vw, positioning or another breakout. Email retains the canvas value as content data but emits readable source order with no canvas geometry.
|
|
103
|
+
|
|
104
|
+
The proven representative native-video canvas pattern uses a trusted inverse hero frame and an admitted Look with 1128px border-box content maxima, 24px desktop and 16px mobile horizontal padding, existing flex centering, and finite px/em text maxima. Headings inherit trusted design fonts. Do not add calc(), ch, var(), font-family or an author-font grant. Keep default sections and optional action rails compatible, and preserve approved copy, links, alt text and media exactly.
|
|
105
|
+
|
|
106
|
+
Named local @keyframes animate transform/background-position only. Transform supports up to three distinct single-argument functions: translateX/Y ±16px, rotate ±5deg, scale 0.95–1.05. One animation per rule: shorthand or name/duration/delay/timing-function/iteration-count/direction/fill-mode longhands. Duration 0.2–30s, delay 0–5s, iterations 1–10 or infinite (at least 2s per cycle), linear/ease/ease-in/ease-out/ease-in-out, normal/reverse/alternate/alternate-reverse, none/forwards/backwards/both. Animation names are case-sensitive and must be defined in the same sheet. Transition shorthand supports transform or background-position, 0.1–2s and one of those easings. An admitted animation receives the site's Pause/Resume control and reduced-motion enforcement; static and transition-only styles do not receive that control. Content stays readable.
|
|
101
107
|
|
|
102
108
|
Block-local canonical stylesheet limits: 16,384 characters, 2,048 AST nodes, 64 ordinary rules, 32 declarations per rule, 8 selector arms and 8 compounds per arm, 8 keyframes with 2–16 stops and at most 4 motion declarations per stop. A Look's separate ceiling is 16,384 UTF-8 bytes. One media nesting layer. An unsupported or malformed HTML-island sheet is omitted as a whole while readable HTML remains; invalid Look CSS instead refuses preview/save and is never silently discarded as a valid Look save. No URLs/imports/font loading, custom properties, positioning, opacity, hiding, flashing, resource fetches or !important. Existing HTML/media URL and proposal provenance policies still apply. Web rendering retains scoped interactive/motion behavior. Email resolves static selector specificity, order, inline precedence and inheritance, then emits safe inline styles with solid gradient fallback; hover/media/motion effects are omitted. Email preview uses the actual email producer.
|
|
103
109
|
|
|
104
110
|
Background-position keyframes use exactly two endpoints, from/0% and to/100%, over at least 2s; transform-only entrances may be shorter. The 16,384-character cap applies to canonical serialized CSS. Input/runtime transport allows 2MiB for encoded scope expansion; rescoping restores the same canonical budget. Email matching is capped at 200,000 memoized states per fragment; exhaustion preserves readable content and original inline styles without a partial cascade.
|
|
105
111
|
|
|
106
|
-
CSS policy revision: html-scoped-css-v1.
|
|
112
|
+
CSS policy revision: html-scoped-css-v1.2.
|
|
107
113
|
|
|
108
114
|
Font-family accepts an ordered comma list of at most 8 entries from serif, sans-serif, monospace, system-ui, arial, georgia, verdana only; no quoted/unknown fonts or font loading. Solid background accepts approved opaque named or 3/6-digit hex colors and canonicalizes to background-color, with last-declaration source order; it is a color alias, not general background layer/reset syntax. Example declarations: font-family:Georgia,serif;background:#ffffff;font-size:1rem. Font-size must be at least 12px, 1em/1rem or 100%; 0.95rem is rejected. Unsupported declarations reject the entire stylesheet, so inspect saved HTML rather than assuming generic validation means every style survived.
|
|
109
115
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- Generated from the Phenomenal tool registry. Do not edit by hand: a drift
|
|
4
4
|
gate fails when these files are not what the registry currently says. -->
|
|
5
5
|
|
|
6
|
-
_Tool surface:
|
|
6
|
+
_Tool surface: 47 tools · 170 actions · 5 prompts · fingerprint `c6ca31f7`._
|
|
7
7
|
|
|
8
8
|
Every tool the Phenomenal MCP server offers, in the order a client lists them. `list_my_orgs` is first because every other tool needs an organization id from it.
|
|
9
9
|
|
|
@@ -116,7 +116,7 @@ Read the complete authorized page content, Looks appearance, revisions, actions
|
|
|
116
116
|
|
|
117
117
|
### `preview_page_changes`
|
|
118
118
|
|
|
119
|
-
Validate complete page content and a Look together without writing. DRAFT previews edits; PUBLISH previews the exact stored draft.
|
|
119
|
+
Validate complete page content, pending reusable-copy receipts and a Look together without writing. DRAFT previews edits; PUBLISH accepts no edits or pending copies and previews the exact stored draft.
|
|
120
120
|
|
|
121
121
|
**Hints:** read-only, idempotent. **Confirm:** not required.
|
|
122
122
|
|
|
@@ -128,11 +128,12 @@ Validate complete page content and a Look together without writing. DRAFT previe
|
|
|
128
128
|
- `expectedThemeRevision` (string, required) — Copy exactly from get_page_authoring_state; never infer or synthesize it.
|
|
129
129
|
- `content` (object)
|
|
130
130
|
- `lookChange` (any)
|
|
131
|
+
- `pendingCopies` (array) — Exact pendingCopy receipt(s) from prepare_reusable_content_copy. cancelledRootIds may contain only deliberately removed inserted roots.
|
|
131
132
|
- `effect` (string (DRAFT | PUBLISH)) — DRAFT by default. PUBLISH accepts no edits and previews stored state.
|
|
132
133
|
|
|
133
134
|
### `save_page_changes`
|
|
134
135
|
|
|
135
|
-
Save one previously previewed complete page-and-Look DRAFT atomically. It remains private and never publishes or retries.
|
|
136
|
+
Save one previously previewed complete page-and-Look DRAFT with the identical pending reusable-copy receipts atomically. It remains private and never publishes or retries.
|
|
136
137
|
|
|
137
138
|
**Hints:** writes. **Confirm:** not required.
|
|
138
139
|
|
|
@@ -144,8 +145,82 @@ Save one previously previewed complete page-and-Look DRAFT atomically. It remain
|
|
|
144
145
|
- `expectedThemeRevision` (string, required) — Copy exactly from get_page_authoring_state; never infer or synthesize it.
|
|
145
146
|
- `content` (object)
|
|
146
147
|
- `lookChange` (any)
|
|
148
|
+
- `pendingCopies` (array) — Exact pendingCopy receipt(s) from prepare_reusable_content_copy. cancelledRootIds may contain only deliberately removed inserted roots.
|
|
147
149
|
- `previewDigest` (string, required) — Copy exactly from the matching VALID DRAFT preview.
|
|
148
150
|
|
|
151
|
+
### `list_reusable_content`
|
|
152
|
+
|
|
153
|
+
List compact reusable-content summaries this actor may read, including exact revision, policy and distinct read/use/revise/administer facts. Use get_reusable_content for blocks and grants.
|
|
154
|
+
|
|
155
|
+
**Hints:** read-only, idempotent. **Confirm:** not required.
|
|
156
|
+
|
|
157
|
+
**Arguments**
|
|
158
|
+
|
|
159
|
+
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
160
|
+
- `limit` (integer)
|
|
161
|
+
- `cursor` (string) — The prior page’s last returned content id.
|
|
162
|
+
|
|
163
|
+
### `get_reusable_content`
|
|
164
|
+
|
|
165
|
+
Read one authorized reusable composition and exact revision with complete blocks, grants and permission facts. An unavailable id reveals no metadata.
|
|
166
|
+
|
|
167
|
+
**Hints:** read-only, idempotent. **Confirm:** not required.
|
|
168
|
+
|
|
169
|
+
**Arguments**
|
|
170
|
+
|
|
171
|
+
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
172
|
+
- `contentId` (string, required)
|
|
173
|
+
- `revisionId` (string) — Optional exact immutable revision id.
|
|
174
|
+
|
|
175
|
+
### `save_reusable_content_new`
|
|
176
|
+
|
|
177
|
+
Save a new private reusable-content identity from complete canonical blocks. It does not publish or insert content anywhere.
|
|
178
|
+
|
|
179
|
+
**Hints:** writes, idempotent. **Confirm:** not required.
|
|
180
|
+
|
|
181
|
+
**Arguments**
|
|
182
|
+
|
|
183
|
+
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
184
|
+
- `ownerGroupId` (any)
|
|
185
|
+
- `name` (string, required)
|
|
186
|
+
- `description` (string)
|
|
187
|
+
- `blocks` (array, required) — The complete canonical Phenomenal block array, including every locale and child.
|
|
188
|
+
- `initialUseAudience` (string, required) — public, members, or group:<uuid>.
|
|
189
|
+
- `idempotencyKey` (string, required) — A caller-stable key for this exact input.
|
|
190
|
+
|
|
191
|
+
### `save_reusable_content_revision`
|
|
192
|
+
|
|
193
|
+
Append one immutable complete-block revision under exact revision and policy compare-and-swap values. Existing revisions remain unchanged.
|
|
194
|
+
|
|
195
|
+
**Hints:** writes, idempotent. **Confirm:** not required.
|
|
196
|
+
|
|
197
|
+
**Arguments**
|
|
198
|
+
|
|
199
|
+
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
200
|
+
- `contentId` (string, required)
|
|
201
|
+
- `expectedRevisionId` (string, required)
|
|
202
|
+
- `expectedPolicyVersion` (integer, required)
|
|
203
|
+
- `blocks` (array, required) — The complete canonical Phenomenal block array, including every locale and child.
|
|
204
|
+
- `idempotencyKey` (string, required) — A caller-stable key for this exact input.
|
|
205
|
+
|
|
206
|
+
### `prepare_reusable_content_copy`
|
|
207
|
+
|
|
208
|
+
Read source and destination state first, then create actor-bound 30-minute staging against the complete unsaved candidate and exact destination token. Inspect the returned complete blocks, source snapshot, fresh IDs and expiresAt. For a page, DRAFT preview and explicitly save with the identical pendingCopy, then read back canonical state; event and broadcast saves are also explicit and never publish or send. Copies are independent: source edits or revocation do not rewrite committed destinations, and restricted media keeps its policy. If latest was omitted, retry with the returned explicit source revision.
|
|
209
|
+
|
|
210
|
+
**Hints:** writes, idempotent. **Confirm:** not required.
|
|
211
|
+
|
|
212
|
+
**Arguments**
|
|
213
|
+
|
|
214
|
+
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
215
|
+
- `contentId` (string, required)
|
|
216
|
+
- `revisionId` (string) — Optional exact source revision. Reuse the returned source.revisionId on retry.
|
|
217
|
+
- `destination` (object, required)
|
|
218
|
+
- `expectedDestinationToken` (string, required)
|
|
219
|
+
- `destinationAudience` (string, required) — public, members, or group:<uuid>.
|
|
220
|
+
- `candidateBlocks` (array, required) — The complete canonical Phenomenal block array, including every locale and child.
|
|
221
|
+
- `insertionIndex` (integer, required)
|
|
222
|
+
- `idempotencyKey` (string, required) — A caller-stable key for this exact prepare.
|
|
223
|
+
|
|
149
224
|
### `draft_page`
|
|
150
225
|
|
|
151
226
|
Draft content for a Phenomenal page from a plain-language instruction and return the blocks. It SAVES NOTHING — show the result to the person, then save it with update_page_draft. This counts against the organization's AI budget, exactly as drafting from the admin app does.
|
|
@@ -194,13 +269,14 @@ Take a page off the live Phenomenal site. The draft is kept, but every link anyo
|
|
|
194
269
|
|
|
195
270
|
### `list_events`
|
|
196
271
|
|
|
197
|
-
|
|
272
|
+
List compact event summaries on a Phenomenal organization's calendar, soonest first. Pass eventId alone to read one complete authorized event including pageBlocks.
|
|
198
273
|
|
|
199
274
|
**Hints:** read-only, idempotent. **Confirm:** not required.
|
|
200
275
|
|
|
201
276
|
**Arguments**
|
|
202
277
|
|
|
203
278
|
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
279
|
+
- `eventId` (string) — Read one complete authorized event. Cannot be combined with from or to.
|
|
204
280
|
- `from` (string) — Only events starting on or after this date (YYYY-MM-DD).
|
|
205
281
|
- `to` (string) — Only events starting on or before this date (YYYY-MM-DD).
|
|
206
282
|
|
|
@@ -222,7 +298,7 @@ Create an event in Phenomenal. It starts UNPUBLISHED — nobody outside the orga
|
|
|
222
298
|
|
|
223
299
|
### `update_event`
|
|
224
300
|
|
|
225
|
-
Change an event in Phenomenal — its title, time, place or description. Only the fields you pass are changed. If the event is already published, the site changes at once.
|
|
301
|
+
Change an event in Phenomenal — its title, time, place or description. Only the fields you pass are changed. A prepared copy requires complete pageBlocks, the exact revision and pendingCopies together. If the event is already published, the site changes at once.
|
|
226
302
|
|
|
227
303
|
**Hints:** writes, idempotent. **Confirm:** not required.
|
|
228
304
|
|
|
@@ -235,6 +311,9 @@ Change an event in Phenomenal — its title, time, place or description. Only th
|
|
|
235
311
|
- `endsAt` (string) — A new end, ISO 8601.
|
|
236
312
|
- `location` (string) — A new location.
|
|
237
313
|
- `description` (string) — A new description.
|
|
314
|
+
- `pageBlocks` (array) — The complete prepared event-page candidate. Live data bindings are not supported here.
|
|
315
|
+
- `expectedRevision` (string) — Exact revision read from list_events and used for preparation.
|
|
316
|
+
- `pendingCopies` (array) — Exact pendingCopy receipt(s) from prepare_reusable_content_copy. cancelledRootIds may contain only deliberately removed inserted roots.
|
|
238
317
|
|
|
239
318
|
### `set_event_published`
|
|
240
319
|
|
|
@@ -273,28 +352,33 @@ Who is in one Phenomenal group, with each person's relation to it (member, stewa
|
|
|
273
352
|
|
|
274
353
|
### `list_broadcasts`
|
|
275
354
|
|
|
276
|
-
|
|
355
|
+
List compact broadcast summaries for a Phenomenal organization. Pass broadcastId to read one complete authorized draft including localized subject and body.
|
|
277
356
|
|
|
278
357
|
**Hints:** read-only, idempotent. **Confirm:** not required.
|
|
279
358
|
|
|
280
359
|
**Arguments**
|
|
281
360
|
|
|
282
361
|
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
362
|
+
- `broadcastId` (string) — Read one complete authorized broadcast by id.
|
|
283
363
|
- `status` (string) — Only broadcasts in this state, e.g. "draft" or "sent".
|
|
284
364
|
|
|
285
365
|
### `draft_broadcast`
|
|
286
366
|
|
|
287
|
-
|
|
367
|
+
Create an email broadcast draft, or explicitly save complete prepared bodyBlocks into an existing draft with its exact revision and pendingCopies. SENDS NOTHING in either mode.
|
|
288
368
|
|
|
289
369
|
**Hints:** writes. **Confirm:** not required.
|
|
290
370
|
|
|
291
371
|
**Arguments**
|
|
292
372
|
|
|
293
373
|
- `orgId` (string) — The organization to act for — an id from list_my_orgs. Never invent one; if you are unsure which, ask the person.
|
|
294
|
-
- `
|
|
295
|
-
- `
|
|
296
|
-
- `
|
|
374
|
+
- `broadcastId` (string) — Existing draft id. Omit to create a new markdown draft.
|
|
375
|
+
- `subject` (string) — The subject line families will see.
|
|
376
|
+
- `body` (string) — The message, in Markdown. Write it the way a parent would want to read it — short, warm, and clear about dates and what to do.
|
|
377
|
+
- `audience` (object) — Who it goes to. Omission selects every member for a new draft, but preserves the stored audience when saving an existing draft.
|
|
297
378
|
- `replyTo` (string) — Where replies go. Optional — the organization's contact address is used otherwise.
|
|
379
|
+
- `bodyBlocks` (array) — Complete prepared block-body candidate for existing-draft mode only.
|
|
380
|
+
- `expectedRevision` (string) — Exact revision used to prepare this existing broadcast draft.
|
|
381
|
+
- `pendingCopies` (array) — Exact pendingCopy receipt(s) from prepare_reusable_content_copy. cancelledRootIds may contain only deliberately removed inserted roots.
|
|
298
382
|
|
|
299
383
|
### `send_broadcast_test`
|
|
300
384
|
|