@miraigent/free-ai-ops-mcp 0.1.28 → 0.1.29
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 +8 -0
- package/mcp/free-ai-ops-server.mjs +8 -4
- package/package.json +1 -1
- package/scripts/smoke-test.mjs +27 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.29] - 2026-07-02
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Declared required MCP input fields for all four public tools so Claude
|
|
8
|
+
Desktop, Cursor, and custom MCP clients can render clearer tool forms from
|
|
9
|
+
`tools/list` before users connect private workflows.
|
|
10
|
+
|
|
3
11
|
## [0.1.28] - 2026-07-01
|
|
4
12
|
|
|
5
13
|
### Fixed
|
|
@@ -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.29",
|
|
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/);
|