@getmarrow/mcp 3.9.100 → 3.9.102
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 +53 -16
- package/dist/cli.d.ts +2 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +67 -1000
- package/dist/cli.js.map +1 -1
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +229 -39
- package/dist/env.js.map +1 -1
- package/dist/hook-contract.d.ts +41 -3
- package/dist/hook-contract.d.ts.map +1 -1
- package/dist/hook-contract.js +119 -16
- package/dist/hook-contract.js.map +1 -1
- package/dist/hook-pre-action.d.ts +3 -2
- package/dist/hook-pre-action.d.ts.map +1 -1
- package/dist/hook-pre-action.js +13 -7
- package/dist/hook-pre-action.js.map +1 -1
- package/dist/hook-tool-policy.d.ts +3 -3
- package/dist/hook-tool-policy.d.ts.map +1 -1
- package/dist/hook-tool-policy.js +6 -22
- package/dist/hook-tool-policy.js.map +1 -1
- package/dist/hook.d.ts +1 -1
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +1 -0
- package/dist/hook.js.map +1 -1
- package/dist/host-approval-state.d.ts +9 -0
- package/dist/host-approval-state.d.ts.map +1 -1
- package/dist/host-approval-state.js +4 -0
- package/dist/host-approval-state.js.map +1 -1
- package/dist/host-approval.d.ts +6 -0
- package/dist/host-approval.d.ts.map +1 -1
- package/dist/host-approval.js +3 -1
- package/dist/host-approval.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -9
- package/dist/index.js.map +1 -1
- package/dist/normalized-action.d.ts.map +1 -1
- package/dist/normalized-action.js +6 -2
- package/dist/normalized-action.js.map +1 -1
- package/dist/own-tool.d.ts +83 -0
- package/dist/own-tool.d.ts.map +1 -0
- package/dist/own-tool.js +165 -0
- package/dist/own-tool.js.map +1 -0
- package/dist/tool-catalog.d.ts +6852 -0
- package/dist/tool-catalog.d.ts.map +1 -0
- package/dist/tool-catalog.js +999 -0
- package/dist/tool-catalog.js.map +1 -0
- package/package.json +1 -1
- package/server.json +9 -2
|
@@ -0,0 +1,999 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Marrow's MCP tool registry: every tool this package can serve, plus the
|
|
4
|
+
* names each MARROW_TOOL_PROFILE exposes. Side-effect free, so the hooks can
|
|
5
|
+
* import the exact registered names (see own-tool.ts).
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.PRIMARY_TOOL_NAMES = exports.CORE_TOOL_NAMES = exports.TOOLS = void 0;
|
|
9
|
+
const model_usage_1 = require("./model-usage");
|
|
10
|
+
// Tool definitions (unchanged)
|
|
11
|
+
exports.TOOLS = [
|
|
12
|
+
{
|
|
13
|
+
name: 'marrow_orient',
|
|
14
|
+
description: 'Call at session start or before meaningful work. ' +
|
|
15
|
+
'Returns authorized prior lessons and failure warnings for the current account or agent. ' +
|
|
16
|
+
'If shouldPause=true, stop and review the lesson before acting. ' +
|
|
17
|
+
'Use marrow_agent_runtime for the policy gate before a consequential side effect.',
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
taskType: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
enum: ['implementation', 'security', 'architecture', 'process', 'general'],
|
|
24
|
+
description: 'Optional: filter warnings to a specific task type you are about to perform',
|
|
25
|
+
},
|
|
26
|
+
autoWarn: {
|
|
27
|
+
type: 'boolean',
|
|
28
|
+
description: 'Enable active intervention: scans recent failures, returns HIGH/MEDIUM/LOW severity warnings with recommendations. Recommended: true.',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
required: [],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'marrow_think',
|
|
36
|
+
description: 'Record intent and retrieve authorized governance intelligence before acting. ' +
|
|
37
|
+
'Returns a decision_id for outcome closure plus relevant patterns, prior outcomes, and recommendedNext. ' +
|
|
38
|
+
'Pass previous_outcome to auto-commit the last decision and open a new one. ' +
|
|
39
|
+
'Response MAY include: onboarding_hint (new accounts), intelligence.collective (cross-account patterns), intelligence.team_context (recent decisions from other sessions).',
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: 'object',
|
|
42
|
+
properties: {
|
|
43
|
+
idempotency_key: { type: 'string', description: 'Original privacy-safe pending receipt key when resuming the identical think request.' },
|
|
44
|
+
request_hash: { type: 'string', description: 'Pending receipt request_hash; validates unchanged arguments, credentials, agent and session before resuming.' },
|
|
45
|
+
action: { type: 'string', description: 'What the agent is about to do' },
|
|
46
|
+
type: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
enum: ['implementation', 'security', 'architecture', 'process', 'general'],
|
|
49
|
+
description: 'Type of action (default: general)',
|
|
50
|
+
},
|
|
51
|
+
context: { type: 'object', description: 'Optional metadata about the current situation' },
|
|
52
|
+
previous_decision_id: { type: 'string', description: 'decision_id from previous think() call — auto-commits that session' },
|
|
53
|
+
previous_success: { type: 'boolean', description: 'Did the previous action succeed?' },
|
|
54
|
+
previous_outcome: { type: 'string', description: 'What happened in the previous action (required if previous_decision_id provided)' },
|
|
55
|
+
checkLoop: { type: 'boolean', description: 'Enable loop detection: warns if you are about to retry a failed approach. Recommended: true.' },
|
|
56
|
+
source_kind: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
enum: ['human_directed', 'agent_autonomous', 'scheduled', 'integration', 'system', 'unknown'],
|
|
59
|
+
description: 'Optional provenance source. Defaults to agent_autonomous for MCP calls.',
|
|
60
|
+
},
|
|
61
|
+
human_directed: { type: 'boolean', description: 'True only when the action is directly requested by the owner/user.' },
|
|
62
|
+
instruction_ref: { type: 'string', description: 'Optional privacy-safe opaque reference. Dates, long digit runs, provider IDs, addresses, and domains are rejected locally; valid values are preserved exactly.' },
|
|
63
|
+
source_meta: { type: 'object', description: 'Optional provenance metadata. PII and raw provider IDs are rejected by the API.' },
|
|
64
|
+
},
|
|
65
|
+
required: ['action'],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'marrow_commit',
|
|
70
|
+
description: 'Close a recorded action with success/failure, a specific outcome, and required proof. ' +
|
|
71
|
+
'decision_id comes from marrow_think, marrow_auto, or a runtime that actually created a decision. ' +
|
|
72
|
+
'Use the gate receipt from marrow_agent_runtime for consequential work. ' +
|
|
73
|
+
'A held action closes trusted only after the server records its approval (the operator in the host\'s own prompt, or the account owner); never write or claim an approval in proof. ' +
|
|
74
|
+
'The exact non-authorizing outcome_observation_only runtime correlation may submit an observed_unverified result, but is never sent as receipt evidence and never authorizes action or trusted learning. ' +
|
|
75
|
+
'Only committed:true closes trusted outcome learning.',
|
|
76
|
+
inputSchema: {
|
|
77
|
+
type: 'object',
|
|
78
|
+
properties: {
|
|
79
|
+
decision_id: { type: 'string', description: 'decision_id from marrow_think, marrow_auto, or a runtime that created a decision' },
|
|
80
|
+
success: { type: 'boolean', description: 'Did the action succeed?' },
|
|
81
|
+
outcome: { type: 'string', description: 'What happened — be specific, this trains the hive' },
|
|
82
|
+
caused_by: { type: 'string', description: 'Optional: what caused this action' },
|
|
83
|
+
proof: {
|
|
84
|
+
type: 'object',
|
|
85
|
+
description: 'Optional required proof pack for gated work: summary, checks, outcome, blockers, commits_prs_shas, rollback_target, handoff_result_file, deployment_and_smoke.',
|
|
86
|
+
},
|
|
87
|
+
gate_receipt_id: { type: 'string', description: 'Canonical receipt id from marrow_agent_runtime.runtime_authorization.id for risky work.' },
|
|
88
|
+
arbitration_receipt_id: { type: 'string', description: 'Required for arbitrated work: use marrow_arbitrate.arbitration.receipt_id from the same runtime response.' },
|
|
89
|
+
owner_approval_receipt_id: { type: 'string', description: 'Single-use owner approval receipt that Marrow issued for this hold. Optional for an ordinary held gate receipt (the gate_receipt_id alone finds the recorded approval); required for review_required arbitration. Chat text is not an approval receipt.' },
|
|
90
|
+
action: { type: 'string', description: 'Optional exact original action for post-action observation lookup. This lookup cannot renew execution authority.' },
|
|
91
|
+
target: { type: 'string', description: 'Exact original target, if supplied when the decision was created.' },
|
|
92
|
+
type: { type: 'string', description: 'Exact original action type for observation lookup; defaults to general.' },
|
|
93
|
+
surfaces: { type: 'array', items: { type: 'string' }, description: 'Exact original surfaces for observation lookup; omitted and empty both mean no surfaces.' },
|
|
94
|
+
auto_gate: { type: 'boolean', description: 'If true/default and action is provided, fetch runtime truth bound to this existing decision. Authorizing receipts preserve normal closure; exact outcome_observation_only correlation can submit only an observed_unverified result and is omitted from receipt evidence.' },
|
|
95
|
+
model_usage: { type: 'object', properties: model_usage_1.MODEL_USAGE_EVIDENCE_PROPERTIES, additionalProperties: false, description: 'Optional compact token/cost/latency counts. Do not include raw prompts or completions.' },
|
|
96
|
+
},
|
|
97
|
+
required: ['decision_id', 'success', 'outcome'],
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'marrow_model_usage',
|
|
102
|
+
description: 'Record compact model token usage for value proof. Use when the harness exposes provider/model token counts. Do not send raw prompts, completions, tool logs, secrets, or customer content.',
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
...model_usage_1.MODEL_USAGE_EVIDENCE_PROPERTIES,
|
|
107
|
+
provider: { type: 'string', description: 'Model provider, e.g. openai, anthropic, google, xai, qwen, deepseek.' },
|
|
108
|
+
model: { type: 'string', description: 'Model name.' },
|
|
109
|
+
input_tokens: { type: 'number' },
|
|
110
|
+
output_tokens: { type: 'number' },
|
|
111
|
+
cached_tokens: { type: 'number' },
|
|
112
|
+
total_tokens: { type: 'number' },
|
|
113
|
+
cost_usd: { type: 'number' },
|
|
114
|
+
latency_ms: { type: 'number' },
|
|
115
|
+
task_type: { type: 'string' },
|
|
116
|
+
action_type: { type: 'string' },
|
|
117
|
+
marrow_intervention: { type: 'string', description: 'runtime_gate, risk_gate, prior_lesson, proof_pack, before_you_act, fleet_lesson, or other compact reason.' },
|
|
118
|
+
estimated_tokens_saved: { type: 'number' },
|
|
119
|
+
estimated_cost_saved_usd: { type: 'number' },
|
|
120
|
+
estimated_minutes_saved: { type: 'number' },
|
|
121
|
+
decision_id: { type: 'string' },
|
|
122
|
+
workflow_id: { type: 'string' },
|
|
123
|
+
success: { type: 'boolean' },
|
|
124
|
+
},
|
|
125
|
+
required: [],
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'marrow_run',
|
|
130
|
+
description: 'Governed outcome capture. Records intent, obtains a gate for risky work, and closes only with an explicit measured result.',
|
|
131
|
+
inputSchema: {
|
|
132
|
+
type: 'object',
|
|
133
|
+
properties: {
|
|
134
|
+
description: { type: 'string', description: 'What the agent did' },
|
|
135
|
+
success: { type: 'boolean', description: 'Whether it succeeded' },
|
|
136
|
+
outcome: { type: 'string', description: 'One-line summary of what happened' },
|
|
137
|
+
type: {
|
|
138
|
+
type: 'string',
|
|
139
|
+
enum: ['implementation', 'security', 'architecture', 'process', 'general'],
|
|
140
|
+
description: 'Type of action (default: general)',
|
|
141
|
+
},
|
|
142
|
+
proof: { type: 'object', description: 'Measured evidence required to close high-risk work.' },
|
|
143
|
+
gate_receipt_id: { type: 'string', description: 'Fresh receipt returned by marrow_agent_runtime.' },
|
|
144
|
+
},
|
|
145
|
+
required: ['description', 'success', 'outcome'],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: 'marrow_auto',
|
|
150
|
+
description: 'Durably capture activity with bounded core completion. Respect retry_after_ms and reuse operation_id for pending continuation. A held action waits for an approval the server records (the answer of the person in the dialog of this client when it supports elicitation; otherwise it waits quietly while you carry on with other work); auto reads its status and resumes on the same gate receipt. Never write or claim an approval yourself. Arbitration requires its server-issued owner approval receipt. Lifecycle receipt queued is separate from server acceptance. Risky completion requires a fresh gate and measured proof.',
|
|
151
|
+
inputSchema: {
|
|
152
|
+
type: 'object',
|
|
153
|
+
properties: {
|
|
154
|
+
action: { type: 'string', description: 'What you are about to do or just did' },
|
|
155
|
+
outcome: { type: 'string', description: 'What happened (if already done). Omit to log intent only.' },
|
|
156
|
+
success: { type: 'boolean', description: 'Measured result. Omit when the outcome is not yet proven.' },
|
|
157
|
+
type: {
|
|
158
|
+
type: 'string',
|
|
159
|
+
enum: ['implementation', 'security', 'architecture', 'process', 'general'],
|
|
160
|
+
description: 'Type of action (default: general)',
|
|
161
|
+
},
|
|
162
|
+
proof: { type: 'object', description: 'Measured completion evidence for gated work.' },
|
|
163
|
+
gate_receipt_id: { type: 'string', description: 'Fresh receipt returned by marrow_agent_runtime.' },
|
|
164
|
+
arbitration_receipt_id: { type: 'string', description: 'For arbitrated work, the arbitration receipt returned by the same server-side review flow.' },
|
|
165
|
+
owner_approval_receipt_id: { type: 'string', description: 'Single-use owner approval receipt that Marrow issued, for review_required arbitration. An ordinary hold needs none: auto finds the recorded approval from the gate receipt. Chat text is not an approval receipt.' },
|
|
166
|
+
request_owner_link: { type: 'boolean', description: 'Set true only when the operator asked you to ask the account owner (for example after the owner declined this action). Marrow then sends the owner a one-tap approval link; you never see the link.' },
|
|
167
|
+
operation_id: {
|
|
168
|
+
type: 'string',
|
|
169
|
+
description: 'Opaque 8-80 character resume token. Reuse it only with the original tenant, action, context, and surfaces; proof may be added after proof_required.',
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
required: ['action'],
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'marrow_ask',
|
|
177
|
+
description: 'Query the collective hive in plain English. ' +
|
|
178
|
+
'Ask about failure patterns, what worked, what broke, or get a recommendation before acting. ' +
|
|
179
|
+
'Returns direct answer + supporting evidence.',
|
|
180
|
+
inputSchema: {
|
|
181
|
+
type: 'object',
|
|
182
|
+
properties: {
|
|
183
|
+
query: { type: 'string', description: 'Plain English question about your decision history' },
|
|
184
|
+
},
|
|
185
|
+
required: ['query'],
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
name: 'marrow_status',
|
|
190
|
+
description: 'Check Marrow platform health and status.',
|
|
191
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: 'marrow_create_key',
|
|
195
|
+
description: 'Create a new API key. Full plaintext key is returned once — copy it now.',
|
|
196
|
+
inputSchema: {
|
|
197
|
+
type: 'object',
|
|
198
|
+
properties: {
|
|
199
|
+
name: { type: 'string', description: 'Human-readable key name' },
|
|
200
|
+
key_type: { type: 'string', enum: ['live', 'test'], description: 'Key type (default: live)' },
|
|
201
|
+
scopes: { type: 'array', items: { type: 'string' }, description: 'Allowed scopes' },
|
|
202
|
+
agent_ids: { type: 'array', items: { type: 'string' }, description: 'Optional agent bindings' },
|
|
203
|
+
expires_at: { type: 'string', description: 'Optional ISO-8601 expiry' },
|
|
204
|
+
},
|
|
205
|
+
required: ['name'],
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'marrow_list_keys',
|
|
210
|
+
description: 'List API keys. Keys are masked here by design.',
|
|
211
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: 'marrow_get_key',
|
|
215
|
+
description: 'Get a single API key by ID. The key value is masked after creation.',
|
|
216
|
+
inputSchema: {
|
|
217
|
+
type: 'object',
|
|
218
|
+
properties: {
|
|
219
|
+
id: { type: 'string', description: 'API key ID' },
|
|
220
|
+
},
|
|
221
|
+
required: ['id'],
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: 'marrow_revoke_key',
|
|
226
|
+
description: 'Revoke an API key by ID.',
|
|
227
|
+
inputSchema: {
|
|
228
|
+
type: 'object',
|
|
229
|
+
properties: {
|
|
230
|
+
id: { type: 'string', description: 'API key ID' },
|
|
231
|
+
},
|
|
232
|
+
required: ['id'],
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
name: 'marrow_rotate_key',
|
|
237
|
+
description: 'Rotate an API key by ID. Full plaintext key is returned once — copy it now.',
|
|
238
|
+
inputSchema: {
|
|
239
|
+
type: 'object',
|
|
240
|
+
properties: {
|
|
241
|
+
id: { type: 'string', description: 'API key ID' },
|
|
242
|
+
},
|
|
243
|
+
required: ['id'],
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
name: 'marrow_list_memories',
|
|
248
|
+
description: 'List memories with optional filters (status, query, limit, agent_id for shared memories).',
|
|
249
|
+
inputSchema: {
|
|
250
|
+
type: 'object',
|
|
251
|
+
properties: {
|
|
252
|
+
status: { type: 'string', enum: ['active', 'outdated', 'deleted'], description: 'Filter by status' },
|
|
253
|
+
query: { type: 'string', description: 'Search query' },
|
|
254
|
+
limit: { type: 'number', description: 'Max results (default: 20)' },
|
|
255
|
+
agentId: { type: 'string', description: 'Agent ID for shared memories' },
|
|
256
|
+
},
|
|
257
|
+
required: [],
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
name: 'marrow_get_memory',
|
|
262
|
+
description: 'Get a single memory by ID.',
|
|
263
|
+
inputSchema: { type: 'object', properties: { id: { type: 'string', description: 'Memory ID' } }, required: ['id'] },
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
name: 'marrow_update_memory',
|
|
267
|
+
description: 'Update memory text, tags, or metadata.',
|
|
268
|
+
inputSchema: {
|
|
269
|
+
type: 'object',
|
|
270
|
+
properties: {
|
|
271
|
+
id: { type: 'string', description: 'Memory ID' },
|
|
272
|
+
text: { type: 'string', description: 'New text' },
|
|
273
|
+
source: { type: 'string', description: 'Source' },
|
|
274
|
+
tags: { type: 'array', items: { type: 'string' }, description: 'Tags' },
|
|
275
|
+
actor: { type: 'string', description: 'Actor name' },
|
|
276
|
+
note: { type: 'string', description: 'Audit note' },
|
|
277
|
+
},
|
|
278
|
+
required: ['id'],
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'marrow_delete_memory',
|
|
283
|
+
description: 'Soft delete a memory.',
|
|
284
|
+
inputSchema: {
|
|
285
|
+
type: 'object',
|
|
286
|
+
properties: {
|
|
287
|
+
id: { type: 'string', description: 'Memory ID' },
|
|
288
|
+
actor: { type: 'string', description: 'Actor name' },
|
|
289
|
+
note: { type: 'string', description: 'Audit note' },
|
|
290
|
+
},
|
|
291
|
+
required: ['id'],
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
name: 'marrow_mark_outdated',
|
|
296
|
+
description: 'Mark a memory as outdated.',
|
|
297
|
+
inputSchema: {
|
|
298
|
+
type: 'object',
|
|
299
|
+
properties: {
|
|
300
|
+
id: { type: 'string', description: 'Memory ID' },
|
|
301
|
+
actor: { type: 'string', description: 'Actor name' },
|
|
302
|
+
note: { type: 'string', description: 'Audit note' },
|
|
303
|
+
},
|
|
304
|
+
required: ['id'],
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
name: 'marrow_supersede_memory',
|
|
309
|
+
description: 'Atomically replace a memory with a new version.',
|
|
310
|
+
inputSchema: {
|
|
311
|
+
type: 'object',
|
|
312
|
+
properties: {
|
|
313
|
+
id: { type: 'string', description: 'Memory ID to supersede' },
|
|
314
|
+
text: { type: 'string', description: 'New memory text' },
|
|
315
|
+
source: { type: 'string', description: 'Source' },
|
|
316
|
+
tags: { type: 'array', items: { type: 'string' }, description: 'Tags' },
|
|
317
|
+
actor: { type: 'string', description: 'Actor name' },
|
|
318
|
+
note: { type: 'string', description: 'Audit note' },
|
|
319
|
+
},
|
|
320
|
+
required: ['id', 'text'],
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
name: 'marrow_share_memory',
|
|
325
|
+
description: 'Share a memory with specific agents.',
|
|
326
|
+
inputSchema: {
|
|
327
|
+
type: 'object',
|
|
328
|
+
properties: {
|
|
329
|
+
id: { type: 'string', description: 'Memory ID' },
|
|
330
|
+
agentIds: { type: 'array', items: { type: 'string' }, description: 'Agent IDs to share with' },
|
|
331
|
+
actor: { type: 'string', description: 'Actor name' },
|
|
332
|
+
},
|
|
333
|
+
required: ['id', 'agentIds'],
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
name: 'marrow_export_memories',
|
|
338
|
+
description: 'Export memories to JSON or CSV.',
|
|
339
|
+
inputSchema: {
|
|
340
|
+
type: 'object',
|
|
341
|
+
properties: {
|
|
342
|
+
format: { type: 'string', enum: ['json', 'csv'], description: 'Export format' },
|
|
343
|
+
status: { type: 'string', enum: ['active', 'all'], description: 'Filter by status' },
|
|
344
|
+
tags: { type: 'string', description: 'Comma-separated tags' },
|
|
345
|
+
},
|
|
346
|
+
required: [],
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
name: 'marrow_import_memories',
|
|
351
|
+
description: 'Import memories with merge (dedup) or replace mode.',
|
|
352
|
+
inputSchema: {
|
|
353
|
+
type: 'object',
|
|
354
|
+
properties: {
|
|
355
|
+
memories: { type: 'array', items: { type: 'object', properties: { text: { type: 'string' }, source: { type: 'string' }, tags: { type: 'array', items: { type: 'string' } } } }, description: 'Memories to import' },
|
|
356
|
+
mode: { type: 'string', enum: ['merge', 'replace'], description: 'Import mode' },
|
|
357
|
+
},
|
|
358
|
+
required: ['memories', 'mode'],
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
name: 'marrow_retrieve_memories',
|
|
363
|
+
description: 'Full-text search memories with filters (from, to, tags, source, status, shared).',
|
|
364
|
+
inputSchema: {
|
|
365
|
+
type: 'object',
|
|
366
|
+
properties: {
|
|
367
|
+
query: { type: 'string', description: 'Search query' },
|
|
368
|
+
limit: { type: 'number', description: 'Max results' },
|
|
369
|
+
from: { type: 'string', description: 'From date (ISO-8601)' },
|
|
370
|
+
to: { type: 'string', description: 'To date (ISO-8601)' },
|
|
371
|
+
tags: { type: 'string', description: 'Comma-separated tags' },
|
|
372
|
+
source: { type: 'string', description: 'Source filter' },
|
|
373
|
+
status: { type: 'string', enum: ['active', 'outdated', 'deleted'], description: 'Status filter' },
|
|
374
|
+
shared: { type: 'boolean', description: 'Include shared memories' },
|
|
375
|
+
},
|
|
376
|
+
required: ['query'],
|
|
377
|
+
},
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
name: 'marrow_workflow',
|
|
381
|
+
description: 'Interact with Marrow Workflow Registry. Register, start, and advance multi-step workflows. ' +
|
|
382
|
+
'Actions: register (create workflow template), list (show all), get (details), start (begin instance), ' +
|
|
383
|
+
'advance (complete a step), instances (list runs).',
|
|
384
|
+
inputSchema: {
|
|
385
|
+
type: 'object',
|
|
386
|
+
properties: {
|
|
387
|
+
action: { type: 'string', enum: ['register', 'list', 'get', 'update', 'start', 'advance', 'instances'], description: 'Workflow action to perform' },
|
|
388
|
+
workflowId: { type: 'string', description: 'Workflow ID (required for get/start/advance/instances)' },
|
|
389
|
+
instanceId: { type: 'string', description: 'Instance ID (required for advance)' },
|
|
390
|
+
name: { type: 'string', description: 'Workflow name (for register)' },
|
|
391
|
+
description: { type: 'string', description: 'Workflow description (for register/update)' },
|
|
392
|
+
steps: { type: 'array', description: 'Step definitions (for register)', items: { type: 'object', properties: { step: { type: 'number', description: 'Step order (1, 2, 3...)' }, agent_role: { type: 'string', description: 'Expected agent role (e.g., "builder", "auditor")' }, action_type: { type: 'string', description: 'Action type (e.g., "build", "audit", "patch")' }, description: { type: 'string', description: 'Step description' } }, required: ['step', 'description'] } },
|
|
393
|
+
tags: { type: 'array', items: { type: 'string' }, description: 'Tags (for register)' },
|
|
394
|
+
agentId: { type: 'string', description: 'Agent ID starting the workflow (for start)' },
|
|
395
|
+
context: { type: 'object', description: 'Workflow context (for start)' },
|
|
396
|
+
inputs: { type: 'object', description: 'Workflow inputs (for start)' },
|
|
397
|
+
stepCompleted: { type: 'number', description: 'Step number completed (for advance)' },
|
|
398
|
+
outcome: { type: 'string', description: 'Step outcome (for advance)' },
|
|
399
|
+
nextAgentId: { type: 'string', description: 'Next agent for the following step (for advance)' },
|
|
400
|
+
contextUpdate: { type: 'object', description: 'Context changes (for advance)' },
|
|
401
|
+
status: { type: 'string', enum: ['running', 'completed', 'failed', 'cancelled', 'active', 'archived'], description: 'Filter by status (for list/instances)' },
|
|
402
|
+
},
|
|
403
|
+
required: ['action'],
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
name: 'marrow_dashboard',
|
|
408
|
+
description: 'Get operator dashboard — account health, top failures, workflow status, recent activity, Marrow\'s saves metric. ' +
|
|
409
|
+
'One call returns everything an operator needs to see.',
|
|
410
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
name: 'marrow_digest',
|
|
414
|
+
description: 'Get periodic summary of agent activity and Marrow impact (default 7-day period). ' +
|
|
415
|
+
'Shows decision counts, success rate trend vs previous period, saves, top improvements and risks.',
|
|
416
|
+
inputSchema: {
|
|
417
|
+
type: 'object',
|
|
418
|
+
properties: {
|
|
419
|
+
period: { type: 'string', description: 'Time period: 7d (default), 14d, or 30d' },
|
|
420
|
+
},
|
|
421
|
+
required: [],
|
|
422
|
+
},
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
name: 'marrow_agent_status',
|
|
426
|
+
description: 'Check whether Marrow is passively active for this agent or fleet. ' +
|
|
427
|
+
'Returns connected state, signal quality, non-sensitive proof, and next actions. ' +
|
|
428
|
+
'Use at session start or before owner reporting to prove Marrow is working without a dashboard.',
|
|
429
|
+
inputSchema: {
|
|
430
|
+
type: 'object',
|
|
431
|
+
properties: {
|
|
432
|
+
period: { type: 'string', description: 'Time period: 7d (default), 14d, or 30d' },
|
|
433
|
+
agentId: { type: 'string', description: 'Optional agent_id/session_id filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
434
|
+
},
|
|
435
|
+
required: [],
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
name: 'marrow_runtime_status',
|
|
440
|
+
description: 'Read live Marrow runtime hook diagnostics from /v1/agent/status. ' +
|
|
441
|
+
'Use this when an agent needs exact passive hook, token-capture, outcome-closure, client-update, and repair-command status.',
|
|
442
|
+
inputSchema: {
|
|
443
|
+
type: 'object',
|
|
444
|
+
properties: {
|
|
445
|
+
fast: { type: 'boolean', description: 'Use fast cached summary path when available. Defaults to true.' },
|
|
446
|
+
},
|
|
447
|
+
required: [],
|
|
448
|
+
},
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
name: 'marrow_value_report',
|
|
452
|
+
description: 'Get owner-ready proof of Marrow value for this agent or fleet. ' +
|
|
453
|
+
'Returns summary, decision metrics, saves, active agents, top risks, recommendations, and improvement data without raw decision text.',
|
|
454
|
+
inputSchema: {
|
|
455
|
+
type: 'object',
|
|
456
|
+
properties: {
|
|
457
|
+
period: { type: 'string', description: 'Time period: 7d (default), 14d, 30d, or a day count up to 90.' },
|
|
458
|
+
agentId: { type: 'string', description: 'Optional agent_id/session_id filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
459
|
+
},
|
|
460
|
+
required: [],
|
|
461
|
+
},
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
name: 'marrow_decision_brief',
|
|
465
|
+
description: 'One pre-action call before meaningful or risky work. Returns risk level, workflow/playbook steps, ' +
|
|
466
|
+
'handoff requirements, freshness/source-of-truth checks, minimum verification checks, proof-pack fields, ' +
|
|
467
|
+
'and next actions. Use this before deploys, publishes, merges, audits, patches, secret changes, or production work.',
|
|
468
|
+
inputSchema: {
|
|
469
|
+
type: 'object',
|
|
470
|
+
properties: {
|
|
471
|
+
action: { type: 'string', description: 'What the agent is about to do.' },
|
|
472
|
+
type: { type: 'string', description: 'Decision type, e.g. deploy, audit, patch, review.' },
|
|
473
|
+
role: { type: 'string', description: 'Agent role/playbook: deploy, audit, patch, review, or general.' },
|
|
474
|
+
agentId: { type: 'string', description: 'Optional agent_id filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
475
|
+
sessionId: { type: 'string', description: 'Optional session id. Defaults to MARROW_SESSION_ID.' },
|
|
476
|
+
surfaces: {
|
|
477
|
+
type: 'array',
|
|
478
|
+
items: { type: 'string' },
|
|
479
|
+
description: 'Surfaces to keep current, e.g. github, npm, docs, production, secrets.',
|
|
480
|
+
},
|
|
481
|
+
period: { type: 'number', description: 'Lookback period in days, default 7, max 90.' },
|
|
482
|
+
},
|
|
483
|
+
required: ['action'],
|
|
484
|
+
},
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
name: 'marrow_first_value',
|
|
488
|
+
description: 'First-run Marrow value proof. Returns what is captured, whether outcome closure/runtime gate are active, ' +
|
|
489
|
+
'a plain-English first useful lesson, and a five-minute try-this-now prompt for agents and owners.',
|
|
490
|
+
inputSchema: {
|
|
491
|
+
type: 'object',
|
|
492
|
+
properties: {
|
|
493
|
+
action: { type: 'string', description: 'Optional action to test. Defaults to a production deploy safety prompt.' },
|
|
494
|
+
type: { type: 'string', description: 'Decision type, e.g. deploy, audit, patch, review.' },
|
|
495
|
+
role: { type: 'string', description: 'Agent role/playbook: deploy, audit, patch, review, or general.' },
|
|
496
|
+
agentId: { type: 'string', description: 'Optional agent_id filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
497
|
+
sessionId: { type: 'string', description: 'Optional session id. Defaults to MARROW_SESSION_ID.' },
|
|
498
|
+
surfaces: { type: 'array', items: { type: 'string' }, description: 'Surfaces to test, e.g. production, deploy, github, npm.' },
|
|
499
|
+
context: { type: 'object', description: 'Optional non-sensitive metadata.' },
|
|
500
|
+
proof: { type: 'object', description: 'Optional proof fields already collected.' },
|
|
501
|
+
},
|
|
502
|
+
required: [],
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
name: 'marrow_agent_runtime',
|
|
507
|
+
description: 'One-call agent-native Marrow loop. Returns passive status, decision brief, risk gate, relevant lessons, ' +
|
|
508
|
+
'template suggestion, required proof pack, before-you-act instruction, and exact next action. ' +
|
|
509
|
+
'Its runtime_authorization is the authoritative gate receipt; it returns decision_id only when runtime actually creates a decision. ' +
|
|
510
|
+
'Reuse its server-created decision_id for outcome closure; use marrow_auto or marrow_think only when the completion contract requires decision creation. ' +
|
|
511
|
+
'A review_required hold does not permit the action: wait until the server records an approval, then commit with the same gate receipt. ' +
|
|
512
|
+
'Use this before meaningful work when you want Marrow to guide the whole action in one call.',
|
|
513
|
+
inputSchema: {
|
|
514
|
+
type: 'object',
|
|
515
|
+
properties: {
|
|
516
|
+
action: { type: 'string', description: 'What the agent is about to do.' },
|
|
517
|
+
type: { type: 'string', description: 'Decision type, e.g. deploy, audit, patch, review.' },
|
|
518
|
+
role: { type: 'string', description: 'Agent role/playbook: deploy, audit, patch, review, or general.' },
|
|
519
|
+
agentId: { type: 'string', description: 'Optional agent_id filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
520
|
+
sessionId: { type: 'string', description: 'Optional session id. Defaults to MARROW_SESSION_ID.' },
|
|
521
|
+
surfaces: {
|
|
522
|
+
type: 'array',
|
|
523
|
+
items: { type: 'string' },
|
|
524
|
+
description: 'Surfaces to keep current, e.g. github, npm, docs, production, secrets.',
|
|
525
|
+
},
|
|
526
|
+
context: { type: 'object', description: 'Optional non-sensitive metadata.' },
|
|
527
|
+
proof: { type: 'object', description: 'Optional proof fields already collected, such as checks, rollback_target, smoke_result.' },
|
|
528
|
+
period: { type: 'number', description: 'Lookback period in days, default 7, max 90.' },
|
|
529
|
+
},
|
|
530
|
+
required: ['action'],
|
|
531
|
+
},
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
name: 'marrow_arbitrate',
|
|
535
|
+
description: 'Resolve conflicting next-step proposals from two or more tenant agents before execution. ' +
|
|
536
|
+
'Uses the existing Marrow runtime gate and returns a durable arbitration receipt with the selected, ' +
|
|
537
|
+
'synthesized, review-required, or blocked action and exactly why it changed.',
|
|
538
|
+
inputSchema: {
|
|
539
|
+
type: 'object',
|
|
540
|
+
properties: {
|
|
541
|
+
objective: { type: 'string', description: 'The shared owner or workflow objective.' },
|
|
542
|
+
ownerIntent: { type: 'string', description: 'Optional bounded owner intent used for deterministic alignment.' },
|
|
543
|
+
conflictType: {
|
|
544
|
+
type: 'string',
|
|
545
|
+
enum: ['action_conflict', 'policy_conflict', 'evidence_conflict', 'authority_conflict', 'risk_conflict'],
|
|
546
|
+
},
|
|
547
|
+
proposals: {
|
|
548
|
+
type: 'array',
|
|
549
|
+
minItems: 2,
|
|
550
|
+
maxItems: 8,
|
|
551
|
+
items: {
|
|
552
|
+
type: 'object',
|
|
553
|
+
properties: {
|
|
554
|
+
proposal_id: { type: 'string', description: 'Stable opaque proposal id.' },
|
|
555
|
+
agent_id: { type: 'string', description: 'Existing agent id in this Marrow account.' },
|
|
556
|
+
action: { type: 'string', description: 'Proposed next action.' },
|
|
557
|
+
rationale: { type: 'string', description: 'Optional concise rationale; redacted before transport.' },
|
|
558
|
+
confidence: { type: 'number', minimum: 0, maximum: 1 },
|
|
559
|
+
risk_level: { type: 'string', enum: ['low', 'medium', 'high'] },
|
|
560
|
+
requires_owner_approval: { type: 'boolean' },
|
|
561
|
+
evidence: {
|
|
562
|
+
type: 'array',
|
|
563
|
+
maxItems: 8,
|
|
564
|
+
items: {
|
|
565
|
+
type: 'object',
|
|
566
|
+
properties: {
|
|
567
|
+
kind: { type: 'string' },
|
|
568
|
+
reference: { type: 'string', description: 'Opaque identifier only; no URL, path, or raw evidence.' },
|
|
569
|
+
},
|
|
570
|
+
required: ['kind', 'reference'],
|
|
571
|
+
},
|
|
572
|
+
},
|
|
573
|
+
},
|
|
574
|
+
required: ['proposal_id', 'agent_id', 'action'],
|
|
575
|
+
},
|
|
576
|
+
},
|
|
577
|
+
action: { type: 'string', description: 'Optional runtime action label.' },
|
|
578
|
+
type: { type: 'string', description: 'Optional runtime action type. Defaults to coordination.' },
|
|
579
|
+
agentId: { type: 'string', description: 'Requesting agent id. Defaults to the canonical fleet-bound agent identity.' },
|
|
580
|
+
sessionId: { type: 'string', description: 'Optional workflow session id.' },
|
|
581
|
+
surfaces: { type: 'array', items: { type: 'string' } },
|
|
582
|
+
context: { type: 'object', description: 'Optional non-sensitive runtime metadata.' },
|
|
583
|
+
proof: { type: 'object', description: 'Optional proof already available to the runtime gate.' },
|
|
584
|
+
},
|
|
585
|
+
required: ['objective', 'proposals'],
|
|
586
|
+
},
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
name: 'marrow_coordinate',
|
|
590
|
+
description: 'Coordinate tenant agents without sharing transcripts. Acquire or release a bounded resource lease, ' +
|
|
591
|
+
'list current leases, or create/list compact evidence-backed child proof packets for a parent agent.',
|
|
592
|
+
inputSchema: {
|
|
593
|
+
type: 'object',
|
|
594
|
+
properties: {
|
|
595
|
+
action: {
|
|
596
|
+
type: 'string',
|
|
597
|
+
enum: ['list_leases', 'acquire_lease', 'release_lease', 'list_proof_packets', 'create_proof_packet'],
|
|
598
|
+
},
|
|
599
|
+
resource_type: { type: 'string', enum: ['file', 'directory', 'service', 'workflow', 'deployment', 'custom'] },
|
|
600
|
+
resource: { type: 'string', maxLength: 160, description: 'Bounded tenant-visible resource label. Do not send secrets.' },
|
|
601
|
+
workflow_id: { type: 'string' },
|
|
602
|
+
ttl_seconds: { type: 'number', minimum: 30, maximum: 3600 },
|
|
603
|
+
lease_id: { type: 'string' },
|
|
604
|
+
lease_token: { type: 'string', description: 'One-time lease capability returned by acquire_lease.' },
|
|
605
|
+
status: { type: 'string', enum: ['active', 'released', 'expired', 'incomplete', 'complete', 'failed'] },
|
|
606
|
+
limit: { type: 'number', minimum: 1, maximum: 100 },
|
|
607
|
+
decision_id: { type: 'string' },
|
|
608
|
+
proof_pack_id: { type: 'string' },
|
|
609
|
+
summary: { type: 'string', maxLength: 280, description: 'Compact result summary; no raw transcript.' },
|
|
610
|
+
evidence_refs: {
|
|
611
|
+
type: 'array', maxItems: 20, items: { type: 'string' },
|
|
612
|
+
description: 'Opaque durable evidence identifiers only.',
|
|
613
|
+
},
|
|
614
|
+
},
|
|
615
|
+
required: ['action'],
|
|
616
|
+
},
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
name: 'marrow_replay_compare',
|
|
620
|
+
description: 'Compare two already-recorded outcomes for the same tenant task using durable proof. ' +
|
|
621
|
+
'This does not run a model or replay customer content; it returns complete or insufficient_evidence.',
|
|
622
|
+
inputSchema: {
|
|
623
|
+
type: 'object',
|
|
624
|
+
additionalProperties: false,
|
|
625
|
+
properties: {
|
|
626
|
+
comparison_id: { type: 'string', minLength: 1, description: 'Fetch a prior replay comparison by id.' },
|
|
627
|
+
source_decision_id: {
|
|
628
|
+
type: 'string', minLength: 1, maxLength: 128, pattern: '^[A-Za-z0-9._:-]{1,128}$',
|
|
629
|
+
description: 'Original task decision used to bind the comparison.',
|
|
630
|
+
},
|
|
631
|
+
workspace_binding_id: {
|
|
632
|
+
type: 'string', minLength: 34, maxLength: 34, pattern: '^workspace_[a-f0-9]{24}$',
|
|
633
|
+
description: 'Optional privacy-safe workspace binding from runtime.',
|
|
634
|
+
},
|
|
635
|
+
constraints: {
|
|
636
|
+
type: 'object',
|
|
637
|
+
additionalProperties: false,
|
|
638
|
+
maxProperties: 7,
|
|
639
|
+
description: 'Allowlisted comparison labels only; prompts, code, transcripts, credentials, and nested content are rejected.',
|
|
640
|
+
properties: {
|
|
641
|
+
environment: { type: 'string', maxLength: 80 },
|
|
642
|
+
tests: { type: 'string', maxLength: 80 },
|
|
643
|
+
policy_profile_id: { type: 'string', maxLength: 80 },
|
|
644
|
+
workflow_type: { type: 'string', maxLength: 80 },
|
|
645
|
+
task_type: { type: 'string', maxLength: 80 },
|
|
646
|
+
required_proof: { type: 'boolean' },
|
|
647
|
+
same_workspace: { type: 'boolean' },
|
|
648
|
+
},
|
|
649
|
+
},
|
|
650
|
+
baseline: {
|
|
651
|
+
type: 'object',
|
|
652
|
+
additionalProperties: false,
|
|
653
|
+
maxProperties: 2,
|
|
654
|
+
properties: {
|
|
655
|
+
label: { type: 'string', minLength: 1, maxLength: 80, pattern: '^[A-Za-z0-9._:-]{1,80}$' },
|
|
656
|
+
decision_id: { type: 'string', minLength: 1, maxLength: 128, pattern: '^[A-Za-z0-9._:-]{1,128}$' },
|
|
657
|
+
},
|
|
658
|
+
required: ['decision_id'],
|
|
659
|
+
},
|
|
660
|
+
candidate: {
|
|
661
|
+
type: 'object',
|
|
662
|
+
additionalProperties: false,
|
|
663
|
+
maxProperties: 2,
|
|
664
|
+
properties: {
|
|
665
|
+
label: { type: 'string', minLength: 1, maxLength: 80, pattern: '^[A-Za-z0-9._:-]{1,80}$' },
|
|
666
|
+
decision_id: { type: 'string', minLength: 1, maxLength: 128, pattern: '^[A-Za-z0-9._:-]{1,128}$' },
|
|
667
|
+
},
|
|
668
|
+
required: ['decision_id'],
|
|
669
|
+
},
|
|
670
|
+
},
|
|
671
|
+
oneOf: [
|
|
672
|
+
{
|
|
673
|
+
required: ['comparison_id'],
|
|
674
|
+
not: {
|
|
675
|
+
anyOf: [
|
|
676
|
+
{ required: ['source_decision_id'] },
|
|
677
|
+
{ required: ['workspace_binding_id'] },
|
|
678
|
+
{ required: ['constraints'] },
|
|
679
|
+
{ required: ['baseline'] },
|
|
680
|
+
{ required: ['candidate'] },
|
|
681
|
+
],
|
|
682
|
+
},
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
required: ['source_decision_id', 'baseline', 'candidate'],
|
|
686
|
+
not: { required: ['comparison_id'] },
|
|
687
|
+
},
|
|
688
|
+
],
|
|
689
|
+
},
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
name: 'marrow_governance_control_plane',
|
|
693
|
+
description: 'Return Marrow control-plane proof: governance, runtime gates, proof packs, fleet intelligence, supported harnesses, and exact next action.',
|
|
694
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
name: 'marrow_hermes_integration',
|
|
698
|
+
description: 'Return the Hermes Agent integration guide mapping /goal, verification evidence, /learn, /journey, and background subagents into Marrow proof and outcome workflows.',
|
|
699
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
700
|
+
},
|
|
701
|
+
{
|
|
702
|
+
name: 'marrow_completion_contracts',
|
|
703
|
+
description: 'List Marrow completion contracts for deploy, merge, publish, database migration, security change, support response, and Hermes goal workflows.',
|
|
704
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
name: 'marrow_evaluate_completion_contract',
|
|
708
|
+
description: 'Evaluate whether an agent has enough proof to mark work complete. Returns complete, missing_proof, review_required, or blocked with missing proof fields.',
|
|
709
|
+
inputSchema: {
|
|
710
|
+
type: 'object',
|
|
711
|
+
properties: {
|
|
712
|
+
action: { type: 'string', description: 'Action/workflow being completed, e.g. deploy, publish, db_migration, hermes_goal.' },
|
|
713
|
+
workflow_type: { type: 'string', description: 'Optional workflow type if action is not supplied.' },
|
|
714
|
+
risk_level: { type: 'string', enum: ['low', 'medium', 'high'], description: 'Optional risk override.' },
|
|
715
|
+
evidence: { type: 'object', description: 'Non-sensitive proof fields already collected.' },
|
|
716
|
+
},
|
|
717
|
+
required: [],
|
|
718
|
+
},
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
name: 'marrow_governance_timeline',
|
|
722
|
+
description: 'Return the recent fleet governance timeline across decisions, risk gates, and proof-pack events.',
|
|
723
|
+
inputSchema: {
|
|
724
|
+
type: 'object',
|
|
725
|
+
properties: {
|
|
726
|
+
agentId: { type: 'string', description: 'Optional agent filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
727
|
+
limit: { type: 'number', description: 'Max events to return, default 25, max 100.' },
|
|
728
|
+
},
|
|
729
|
+
required: [],
|
|
730
|
+
},
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
name: 'marrow_decision_trace',
|
|
734
|
+
description: 'Inspect the tenant-scoped path behind one governed decision and return its owner-readable intervention receipt with gate, required workflow, permit follow-through, proof, and observed outcome.',
|
|
735
|
+
inputSchema: {
|
|
736
|
+
type: 'object',
|
|
737
|
+
properties: {
|
|
738
|
+
decisionId: { type: 'string', description: 'Decision ID owned by this account and agent scope.' },
|
|
739
|
+
},
|
|
740
|
+
required: ['decisionId'],
|
|
741
|
+
},
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
name: 'marrow_buyer_proof',
|
|
745
|
+
description: 'Return buyer-grade value proof: failures avoided, risky actions reviewed, proofs completed, token/time saved, failure classes, agent leaderboard, and reliability score.',
|
|
746
|
+
inputSchema: {
|
|
747
|
+
type: 'object',
|
|
748
|
+
properties: {
|
|
749
|
+
agentId: { type: 'string', description: 'Optional agent filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
750
|
+
periodDays: { type: 'number', description: 'Lookback period in days, default 30, max 90.' },
|
|
751
|
+
},
|
|
752
|
+
required: [],
|
|
753
|
+
},
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
name: 'marrow_mode_recommend',
|
|
757
|
+
description: 'Recommend passive, pilot, or enforce mode from project/workflow signals. Marrow never auto-switches here; the agent/user must accept or override.',
|
|
758
|
+
inputSchema: {
|
|
759
|
+
type: 'object',
|
|
760
|
+
properties: {
|
|
761
|
+
project: { type: 'object', description: 'Project signals: name, type, frameworks, signals, package_scripts, config_files.' },
|
|
762
|
+
workflow: { type: 'object', description: 'Workflow context: action, type, branch, environment.' },
|
|
763
|
+
agent: { type: 'object', description: 'Agent context: id and role.' },
|
|
764
|
+
selected_mode: { type: 'string', enum: ['passive', 'pilot', 'enforce'], description: 'Optional final user-selected mode to log.' },
|
|
765
|
+
selection_source: { type: 'string', enum: ['accepted', 'overridden', 'ignored', 'system'], description: 'How the final mode was selected.' },
|
|
766
|
+
},
|
|
767
|
+
required: [],
|
|
768
|
+
},
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
name: 'marrow_policy_profiles',
|
|
772
|
+
description: 'List saved Marrow governance policy profiles for this account. Returns default-business when none are saved.',
|
|
773
|
+
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
name: 'marrow_create_policy_profile',
|
|
777
|
+
description: 'Create or update an explicit governance policy profile. Mutating call; requires a key with full scope.',
|
|
778
|
+
inputSchema: {
|
|
779
|
+
type: 'object',
|
|
780
|
+
properties: {
|
|
781
|
+
name: { type: 'string', description: 'Profile name, e.g. default-business or production-agents.' },
|
|
782
|
+
description: { type: 'string', description: 'Optional profile description.' },
|
|
783
|
+
rules: { type: 'array', items: { type: 'object' }, description: 'Rules with match fields and mode passive/pilot/enforce.' },
|
|
784
|
+
},
|
|
785
|
+
required: ['name'],
|
|
786
|
+
},
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
name: 'marrow_assign_project_policy_profile',
|
|
790
|
+
description: 'Assign an active governance policy profile to a project key. Mutating call; requires a key with full scope.',
|
|
791
|
+
inputSchema: {
|
|
792
|
+
type: 'object',
|
|
793
|
+
properties: {
|
|
794
|
+
project_key: { type: 'string', description: 'Stable project key, e.g. marrow-api or clinic-api.' },
|
|
795
|
+
profile_id: { type: 'string', description: 'Active policy profile id.' },
|
|
796
|
+
},
|
|
797
|
+
required: ['project_key', 'profile_id'],
|
|
798
|
+
},
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
name: 'marrow_policy_resolve',
|
|
802
|
+
description: 'Resolve the explicit mode for a project/workflow from saved policy profiles, falling back to recommendation. Does not auto-apply.',
|
|
803
|
+
inputSchema: {
|
|
804
|
+
type: 'object',
|
|
805
|
+
properties: {
|
|
806
|
+
profile_id: { type: 'string', description: 'Optional policy profile id.' },
|
|
807
|
+
profile_name: { type: 'string', description: 'Optional policy profile name.' },
|
|
808
|
+
project: { type: 'object', description: 'Project signals: name, type, frameworks, signals, package_scripts, config_files.' },
|
|
809
|
+
workflow: { type: 'object', description: 'Workflow context: action, type, branch, environment.' },
|
|
810
|
+
agent: { type: 'object', description: 'Agent context: id and role.' },
|
|
811
|
+
},
|
|
812
|
+
required: [],
|
|
813
|
+
},
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
name: 'marrow_workflow_gate',
|
|
817
|
+
description: 'Pre-action risk gate for deploys, publishes, merges, DB migrations, key rotation, destructive commands, and production work. ' +
|
|
818
|
+
'Returns allow, warn, review_required, or block plus prior lessons/playbooks.',
|
|
819
|
+
inputSchema: {
|
|
820
|
+
type: 'object',
|
|
821
|
+
properties: {
|
|
822
|
+
action: { type: 'string', description: 'What the agent is about to do.' },
|
|
823
|
+
description: { type: 'string', description: 'Optional extra context for the action.' },
|
|
824
|
+
riskTolerance: { type: 'string', enum: ['low', 'medium', 'high'], description: 'Default high. Use medium/low for stricter gates.' },
|
|
825
|
+
requiresApproval: { type: 'boolean', description: 'Set true when owner approval is required before proceeding.' },
|
|
826
|
+
context: { type: 'object', description: 'Optional metadata. Do not include secrets or raw payloads.' },
|
|
827
|
+
},
|
|
828
|
+
required: ['action'],
|
|
829
|
+
},
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
name: 'marrow_agent_performance',
|
|
833
|
+
description: 'Get agent-facing fleet value metrics: avoided mistakes, reused winning decisions, failed patterns, token/time saved estimate, reliability score, and next improvements.',
|
|
834
|
+
inputSchema: {
|
|
835
|
+
type: 'object',
|
|
836
|
+
properties: {
|
|
837
|
+
period: { type: 'string', description: 'Time period: 7d (default), 14d, 30d, or day count up to 90.' },
|
|
838
|
+
agentId: { type: 'string', description: 'Optional agent_id/session_id filter. Defaults to the canonical fleet-bound agent identity.' },
|
|
839
|
+
},
|
|
840
|
+
required: [],
|
|
841
|
+
},
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
name: 'marrow_fleet_lessons',
|
|
845
|
+
description: 'Retrieve ranked reusable fleet lessons before similar work. Use before deploys, handoffs, migrations, audits, and repeated task types.',
|
|
846
|
+
inputSchema: {
|
|
847
|
+
type: 'object',
|
|
848
|
+
properties: {
|
|
849
|
+
query: { type: 'string', description: 'Search phrase for similar work.' },
|
|
850
|
+
type: { type: 'string', enum: ['success', 'failure', 'deploy', 'incident', 'handoff', 'general'] },
|
|
851
|
+
agentId: { type: 'string', description: 'Optional agent filter.' },
|
|
852
|
+
limit: { type: 'number', description: 'Max lessons to return, default 10.' },
|
|
853
|
+
},
|
|
854
|
+
required: [],
|
|
855
|
+
},
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
name: 'marrow_record_deployment_memory',
|
|
859
|
+
description: 'Record deploy or incident memory: PR, commit, tests, smoke result, rollback plan, production health, and incident notes.',
|
|
860
|
+
inputSchema: {
|
|
861
|
+
type: 'object',
|
|
862
|
+
properties: {
|
|
863
|
+
release_id: { type: 'string' },
|
|
864
|
+
pr_url: { type: 'string' },
|
|
865
|
+
commit_sha: { type: 'string' },
|
|
866
|
+
environment: { type: 'string' },
|
|
867
|
+
status: { type: 'string', enum: ['planned', 'dry_run', 'deployed', 'verified', 'rolled_back', 'incident'] },
|
|
868
|
+
tests: { type: 'array', items: { type: 'string' } },
|
|
869
|
+
smoke_result: { type: 'string' },
|
|
870
|
+
rollback_plan: { type: 'string' },
|
|
871
|
+
prod_health: { type: 'string' },
|
|
872
|
+
incident_summary: { type: 'string' },
|
|
873
|
+
},
|
|
874
|
+
required: [],
|
|
875
|
+
},
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
name: 'marrow_create_handoff',
|
|
879
|
+
description: 'Create a structured cross-agent handoff that Marrow can track for pending, stale, blocked, and complete states.',
|
|
880
|
+
inputSchema: {
|
|
881
|
+
type: 'object',
|
|
882
|
+
properties: {
|
|
883
|
+
to_agent_id: { type: 'string' },
|
|
884
|
+
task: { type: 'string' },
|
|
885
|
+
workflow_id: { type: 'string' },
|
|
886
|
+
from_agent_id: { type: 'string' },
|
|
887
|
+
checkpoint: { type: 'string' },
|
|
888
|
+
stale_after_seconds: { type: 'number' },
|
|
889
|
+
},
|
|
890
|
+
required: ['to_agent_id', 'task'],
|
|
891
|
+
},
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
name: 'marrow_update_handoff',
|
|
895
|
+
description: 'Update a Marrow handoff checkpoint/status when an agent accepts, blocks, completes, or needs review.',
|
|
896
|
+
inputSchema: {
|
|
897
|
+
type: 'object',
|
|
898
|
+
properties: {
|
|
899
|
+
handoffId: { type: 'string' },
|
|
900
|
+
status: { type: 'string', enum: ['pending', 'accepted', 'working', 'blocked', 'complete', 'stale', 'cancelled'] },
|
|
901
|
+
checkpoint: { type: 'string' },
|
|
902
|
+
result_summary: { type: 'string' },
|
|
903
|
+
},
|
|
904
|
+
required: ['handoffId'],
|
|
905
|
+
},
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
name: 'marrow_handoff_status',
|
|
909
|
+
description: 'Ask who is pending, stuck, stale, blocked, or complete across the agent fleet.',
|
|
910
|
+
inputSchema: {
|
|
911
|
+
type: 'object',
|
|
912
|
+
properties: {
|
|
913
|
+
status: { type: 'string' },
|
|
914
|
+
agentId: { type: 'string' },
|
|
915
|
+
limit: { type: 'number' },
|
|
916
|
+
},
|
|
917
|
+
required: [],
|
|
918
|
+
},
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
name: 'marrow_session_end',
|
|
922
|
+
description: 'Explicitly end the current session. Optionally auto-commits any open decision. ' +
|
|
923
|
+
'Prevents orphaned decisions when an agent finishes a task.',
|
|
924
|
+
inputSchema: {
|
|
925
|
+
type: 'object',
|
|
926
|
+
properties: {
|
|
927
|
+
autoCommitOpen: { type: 'boolean', description: 'Whether to auto-commit any open decision (default: true)' },
|
|
928
|
+
},
|
|
929
|
+
required: [],
|
|
930
|
+
},
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
name: 'marrow_accept_detected',
|
|
934
|
+
description: 'Convert a detected decision pattern into an enforced workflow. ' +
|
|
935
|
+
'The pattern ID comes from suggested_workflows in the orient() response.',
|
|
936
|
+
inputSchema: {
|
|
937
|
+
type: 'object',
|
|
938
|
+
properties: {
|
|
939
|
+
detectedId: { type: 'string', description: 'ID of the detected pattern to accept' },
|
|
940
|
+
},
|
|
941
|
+
required: ['detectedId'],
|
|
942
|
+
},
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
name: 'marrow_list_templates',
|
|
946
|
+
description: 'Browse pre-built workflow templates. Filter by industry (insurance, healthcare, ecommerce, legal, saas, fintech, media, enterprise) or category. ' +
|
|
947
|
+
'Use to discover available workflows before installing.',
|
|
948
|
+
inputSchema: {
|
|
949
|
+
type: 'object',
|
|
950
|
+
properties: {
|
|
951
|
+
industry: { type: 'string', description: 'Filter by industry (e.g., insurance, healthcare, saas)' },
|
|
952
|
+
category: { type: 'string', description: 'Filter by category (e.g., claims, engineering, support)' },
|
|
953
|
+
limit: { type: 'number', description: 'Max results (default: 20)' },
|
|
954
|
+
},
|
|
955
|
+
required: [],
|
|
956
|
+
},
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
name: 'marrow_install_template',
|
|
960
|
+
description: 'Install a workflow template into your fleet as an active workflow. ' +
|
|
961
|
+
'Use after marrow_list_templates to pick one.',
|
|
962
|
+
inputSchema: {
|
|
963
|
+
type: 'object',
|
|
964
|
+
properties: {
|
|
965
|
+
slug: { type: 'string', description: 'Template slug to install (e.g., code-review-deploy, claims-triage)' },
|
|
966
|
+
},
|
|
967
|
+
required: ['slug'],
|
|
968
|
+
},
|
|
969
|
+
},
|
|
970
|
+
];
|
|
971
|
+
exports.CORE_TOOL_NAMES = new Set([
|
|
972
|
+
'marrow_agent_runtime',
|
|
973
|
+
'marrow_think',
|
|
974
|
+
'marrow_commit',
|
|
975
|
+
'marrow_ask',
|
|
976
|
+
'marrow_status',
|
|
977
|
+
'marrow_auto',
|
|
978
|
+
'marrow_handoff_status',
|
|
979
|
+
]);
|
|
980
|
+
exports.PRIMARY_TOOL_NAMES = new Set([
|
|
981
|
+
'marrow_agent_runtime',
|
|
982
|
+
'marrow_arbitrate',
|
|
983
|
+
'marrow_coordinate',
|
|
984
|
+
'marrow_replay_compare',
|
|
985
|
+
'marrow_decision_brief',
|
|
986
|
+
'marrow_think',
|
|
987
|
+
'marrow_commit',
|
|
988
|
+
'marrow_workflow_gate',
|
|
989
|
+
'marrow_completion_contracts',
|
|
990
|
+
'marrow_evaluate_completion_contract',
|
|
991
|
+
'marrow_agent_status',
|
|
992
|
+
'marrow_value_report',
|
|
993
|
+
'marrow_buyer_proof',
|
|
994
|
+
'marrow_governance_timeline',
|
|
995
|
+
'marrow_decision_trace',
|
|
996
|
+
'marrow_fleet_lessons',
|
|
997
|
+
'marrow_model_usage',
|
|
998
|
+
]);
|
|
999
|
+
//# sourceMappingURL=tool-catalog.js.map
|