@theronap/agnoclast-mcp 0.9.253 → 0.9.254

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.
@@ -5,7 +5,7 @@
5
5
  // that web/lib/engine/release.test.ts pins to the server's registry.
6
6
 
7
7
  /** Tools any release flag gates — hidden when the server cannot be asked. Mirror of allGatedTools(). */
8
- export const GATED_FALLBACK = ['my_messages', 'read_conversation', 'send_message', 'set_obligation_owed_to']
8
+ export const GATED_FALLBACK = ['my_messages', 'read_conversation', 'send_message', 'set_manager']
9
9
 
10
10
  export const RELEASE_FETCH_TIMEOUT_MS = 2500
11
11
 
package/lib/server.mjs CHANGED
@@ -3347,6 +3347,33 @@ function renderNudge(payload) {
3347
3347
  },
3348
3348
  )
3349
3349
 
3350
+ // 2026-10-21. Change who a member reports to — people and AI agents (Theron: "It's got to be real").
3351
+ server.registerTool(
3352
+ 'set_manager',
3353
+ {
3354
+ title: 'Change who someone reports to',
3355
+ description: "Move a member of one of the person's brains — a person or an AI agent — to report to someone else (a person or an agent). ONLY when the person asked you to. Everyone below the member moves with them. This changes permissions: the new manager and everyone above them can see the member's scoped work, and what the manager gives them becomes an assignment instead of a request; the old chain loses both. Reversible: move them back the same way. Only an owner or admin of the brain can do it; nobody reports to themselves or to someone in their own line of reports, and owners stay at the top. Use an email address when a name could match two people.",
3356
+ inputSchema: {
3357
+ member: z.string().describe('who moves: their email address, or their name as it appears in the brain'),
3358
+ manager: z.string().describe('who they will report to: an email address or a name as it appears in the brain'),
3359
+ brain: z.string().optional().describe('which brain — required if the person belongs to more than one'),
3360
+ },
3361
+ },
3362
+ async ({ member, manager, brain }) => {
3363
+ let res
3364
+ try {
3365
+ res = await fetchCortex(`${BASE}/api/members/manager`, {
3366
+ method: 'POST',
3367
+ headers: { Authorization: `Bearer ${TOKEN}`, 'Content-Type': 'application/json' },
3368
+ body: JSON.stringify({ member, manager, brain }),
3369
+ })
3370
+ } catch (e) { return toolError(`Could not reach Agnoclast: ${e.message}`) }
3371
+ const out = await res.json().catch(() => null)
3372
+ if (!res.ok) return toolError(`Not moved: ${out?.detail ?? out?.error ?? res.status}`)
3373
+ return { content: [{ type: 'text', text: out.summary }] }
3374
+ },
3375
+ )
3376
+
3350
3377
  // 2026-10-12. A member leaves a brain THEMSELVES — the remove_member path with the caller as the target.
3351
3378
  server.registerTool(
3352
3379
  'leave_brain',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theronap/agnoclast-mcp",
3
- "version": "0.9.253",
3
+ "version": "0.9.254",
4
4
  "description": "Connect your AI assistant to Cortex — your org's projects, activity, gaps, and directives, scoped to you.",
5
5
  "type": "module",
6
6
  "bin": {