@miraigent/free-ai-ops-mcp 0.1.28 → 0.1.30
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.30] - 2026-07-03
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Corrected the MCP JSON-RPC session README to name the actual
|
|
8
|
+
`human_review_gate` response field `nextLogRow`, so npm and GitHub users can
|
|
9
|
+
compare the public smoke-test output without looking for an old field name.
|
|
10
|
+
|
|
11
|
+
## [0.1.29] - 2026-07-02
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Declared required MCP input fields for all four public tools so Claude
|
|
16
|
+
Desktop, Cursor, and custom MCP clients can render clearer tool forms from
|
|
17
|
+
`tools/list` before users connect private workflows.
|
|
18
|
+
|
|
3
19
|
## [0.1.28] - 2026-07-01
|
|
4
20
|
|
|
5
21
|
### Fixed
|
|
@@ -38,7 +38,7 @@ client config:
|
|
|
38
38
|
`human_review_gate`, `faq_candidate_review`, `ai_safe_crm_note`, and
|
|
39
39
|
`prompt_risk_review`.
|
|
40
40
|
- Response 3 should return a `human_review_gate` content block whose JSON text
|
|
41
|
-
includes `gateStatus`, `reviewOwner`, `
|
|
41
|
+
includes `gateStatus`, `reviewOwner`, `nextLogRow`, and `boundary`.
|
|
42
42
|
|
|
43
43
|
If those fields appear in the terminal but not in Claude Desktop, Cursor, or
|
|
44
44
|
another client, the package is likely running and the next thing to check is the
|
|
@@ -17,7 +17,8 @@ const tools = [
|
|
|
17
17
|
riskFlags: { type: 'array', items: { type: 'string' } },
|
|
18
18
|
reviewOwner: { type: 'string' },
|
|
19
19
|
sendMode: { type: 'string' }
|
|
20
|
-
}
|
|
20
|
+
},
|
|
21
|
+
required: ['draftType', 'audience', 'riskFlags', 'reviewOwner', 'sendMode']
|
|
21
22
|
}
|
|
22
23
|
},
|
|
23
24
|
{
|
|
@@ -31,7 +32,8 @@ const tools = [
|
|
|
31
32
|
responseCost: { type: 'string' },
|
|
32
33
|
riskLevel: { type: 'string' },
|
|
33
34
|
currentAnswer: { type: 'string' }
|
|
34
|
-
}
|
|
35
|
+
},
|
|
36
|
+
required: ['inquiryPattern', 'frequency', 'responseCost', 'riskLevel']
|
|
35
37
|
}
|
|
36
38
|
},
|
|
37
39
|
{
|
|
@@ -45,7 +47,8 @@ const tools = [
|
|
|
45
47
|
containsPersonalData: { type: 'boolean' },
|
|
46
48
|
nextAction: { type: 'string' },
|
|
47
49
|
owner: { type: 'string' }
|
|
48
|
-
}
|
|
50
|
+
},
|
|
51
|
+
required: ['rawNoteSummary', 'channel', 'containsPersonalData', 'nextAction', 'owner']
|
|
49
52
|
}
|
|
50
53
|
},
|
|
51
54
|
{
|
|
@@ -59,7 +62,8 @@ const tools = [
|
|
|
59
62
|
dataTypes: { type: 'array', items: { type: 'string' } },
|
|
60
63
|
customerFacing: { type: 'boolean' },
|
|
61
64
|
riskLevel: { type: 'string' }
|
|
62
|
-
}
|
|
65
|
+
},
|
|
66
|
+
required: ['operation', 'promptSummary', 'dataTypes', 'customerFacing', 'riskLevel']
|
|
63
67
|
}
|
|
64
68
|
}
|
|
65
69
|
];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miraigent/free-ai-ops-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.30",
|
|
4
4
|
"description": "Free MCP server for developers adding human review gates, prompt risk checks, FAQ review, and CRM note safety to AI tools.",
|
|
5
5
|
"homepage": "https://github.com/Miraigent/miraigent-free-ai-ops-mcp",
|
|
6
6
|
"type": "module",
|
package/scripts/smoke-test.mjs
CHANGED
|
@@ -124,6 +124,33 @@ assert.deepEqual(
|
|
|
124
124
|
responses[1].result.tools.map((tool) => tool.name),
|
|
125
125
|
['human_review_gate', 'faq_candidate_review', 'ai_safe_crm_note', 'prompt_risk_review']
|
|
126
126
|
);
|
|
127
|
+
assert.deepEqual(responses[1].result.tools[0].inputSchema.required, [
|
|
128
|
+
'draftType',
|
|
129
|
+
'audience',
|
|
130
|
+
'riskFlags',
|
|
131
|
+
'reviewOwner',
|
|
132
|
+
'sendMode'
|
|
133
|
+
]);
|
|
134
|
+
assert.deepEqual(responses[1].result.tools[1].inputSchema.required, [
|
|
135
|
+
'inquiryPattern',
|
|
136
|
+
'frequency',
|
|
137
|
+
'responseCost',
|
|
138
|
+
'riskLevel'
|
|
139
|
+
]);
|
|
140
|
+
assert.deepEqual(responses[1].result.tools[2].inputSchema.required, [
|
|
141
|
+
'rawNoteSummary',
|
|
142
|
+
'channel',
|
|
143
|
+
'containsPersonalData',
|
|
144
|
+
'nextAction',
|
|
145
|
+
'owner'
|
|
146
|
+
]);
|
|
147
|
+
assert.deepEqual(responses[1].result.tools[3].inputSchema.required, [
|
|
148
|
+
'operation',
|
|
149
|
+
'promptSummary',
|
|
150
|
+
'dataTypes',
|
|
151
|
+
'customerFacing',
|
|
152
|
+
'riskLevel'
|
|
153
|
+
]);
|
|
127
154
|
assert.match(responses[2].result.content[0].text, /review_required|stop/);
|
|
128
155
|
assert.match(responses[2].result.content[0].text, /nextLogRow/);
|
|
129
156
|
assert.match(responses[3].result.content[0].text, /public_faq_candidate/);
|