@ateam-ai/mcp 0.4.71 → 0.4.72
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 +1 -1
- package/src/tools.js +70 -0
package/package.json
CHANGED
package/src/tools.js
CHANGED
|
@@ -1031,6 +1031,57 @@ export const tools = [
|
|
|
1031
1031
|
},
|
|
1032
1032
|
},
|
|
1033
1033
|
|
|
1034
|
+
{
|
|
1035
|
+
name: "ateam_log_progress",
|
|
1036
|
+
core: true,
|
|
1037
|
+
description:
|
|
1038
|
+
"Record that a build STEP is done, so a later run does not redo it. Write it AS IT HAPPENS, never at the end — the runs that most need a journal are the ones the clock kills.\n\n" +
|
|
1039
|
+
"WHY: a continuation cannot otherwise tell what the previous run achieved, so it re-runs the whole orientation (bootstrap, get_workflows, list_solutions, get_solution, get_spec, get_examples, github_read) to re-derive from documents what was already established — and re-inflates its prompt into the region where provider latency collapses. Measured across 13 runs: stalls track PROMPT SIZE (~60k), not turn count. ateam_get_progress is ONE call instead of nine.\n\n" +
|
|
1040
|
+
"status — three values, and the third is the point:\n" +
|
|
1041
|
+
" built — the artefact exists (files written, committed)\n" +
|
|
1042
|
+
" deployed — the platform accepted it\n" +
|
|
1043
|
+
" verified — YOU CALLED IT AND GOT REAL DATA BACK\n\n" +
|
|
1044
|
+
"`verified` REQUIRES verified_by, and a deploy response is not verification. `connected` and `tools > 0` are tools/list facts: a clinic connector showed 9 tools while every storage call returned 401. A journal that stops at `deployed` records that build as finished.\n\n" +
|
|
1045
|
+
"Re-log the same step as it advances (built → deployed → verified) — latest wins, no update path. If a step REGRESSES, re-log it at the lower status: silence must not read as \"still fine\".",
|
|
1046
|
+
inputSchema: {
|
|
1047
|
+
type: "object",
|
|
1048
|
+
properties: {
|
|
1049
|
+
solution_id: { type: "string", description: "The solution ID" },
|
|
1050
|
+
step: {
|
|
1051
|
+
type: "string",
|
|
1052
|
+
description: "STABLE slug a later run can MATCH rather than enumerate: 'connector:<id>', 'skill:<id>', 'widget:<name>', 'seed:<what>'. Keep it identical across runs — a renamed step reads as a new one.",
|
|
1053
|
+
},
|
|
1054
|
+
status: {
|
|
1055
|
+
type: "string",
|
|
1056
|
+
enum: ["built", "deployed", "verified"],
|
|
1057
|
+
description: "built = artefact exists · deployed = platform accepted it · verified = you called it and got real data back",
|
|
1058
|
+
},
|
|
1059
|
+
detail: { type: "string", description: "One line of what exists — e.g. '10 tools, 8 seeded appointments'." },
|
|
1060
|
+
verified_by: {
|
|
1061
|
+
type: "string",
|
|
1062
|
+
description: "REQUIRED when status is 'verified': the literal call that proved it and what came back, e.g. 'ateam_test_connector(clinic-data-mcp, appointments.list_all) → 23 rows'. Storing the evidence beside the claim is what makes the journal auditable instead of self-reported.",
|
|
1063
|
+
},
|
|
1064
|
+
},
|
|
1065
|
+
required: ["solution_id", "step", "status"],
|
|
1066
|
+
},
|
|
1067
|
+
},
|
|
1068
|
+
{
|
|
1069
|
+
name: "ateam_get_progress",
|
|
1070
|
+
core: true,
|
|
1071
|
+
description:
|
|
1072
|
+
"What this build has already ACHIEVED — read it FIRST when continuing a run, before any orientation call. Returns the CURRENT status per step (latest entry wins) plus recent history.\n\n" +
|
|
1073
|
+
"Then build only the steps that are ABSENT or not yet `verified`.\n\n" +
|
|
1074
|
+
"ABSENT IS NOT \"NOTHING WAS DONE\" — the journal may predate a step, or a run may have died before writing. It is a fast path, not a new source of truth: check before rebuilding something expensive.\n\n" +
|
|
1075
|
+
"Complements ateam_get_lessons, which records what BROKE. This records what WORKS.",
|
|
1076
|
+
inputSchema: {
|
|
1077
|
+
type: "object",
|
|
1078
|
+
properties: {
|
|
1079
|
+
solution_id: { type: "string", description: "The solution ID" },
|
|
1080
|
+
limit: { type: "number", description: "History entries to return (default 60). `steps` is always complete." },
|
|
1081
|
+
},
|
|
1082
|
+
required: ["solution_id"],
|
|
1083
|
+
},
|
|
1084
|
+
},
|
|
1034
1085
|
{
|
|
1035
1086
|
name: "ateam_log_lesson",
|
|
1036
1087
|
core: true,
|
|
@@ -2321,6 +2372,8 @@ const TENANT_TOOLS = new Set([
|
|
|
2321
2372
|
// tenant's lessons. Tenant isolation is the one boundary this platform
|
|
2322
2373
|
// treats as absolute.
|
|
2323
2374
|
"ateam_log_lesson",
|
|
2375
|
+
"ateam_log_progress",
|
|
2376
|
+
"ateam_get_progress",
|
|
2324
2377
|
"ateam_get_lessons",
|
|
2325
2378
|
|
|
2326
2379
|
// Write operations
|
|
@@ -5376,6 +5429,23 @@ const handlers = {
|
|
|
5376
5429
|
);
|
|
5377
5430
|
},
|
|
5378
5431
|
|
|
5432
|
+
ateam_log_progress: async ({ solution_id, step, status, detail, verified_by }, sid) => {
|
|
5433
|
+
if (!solution_id) throw new Error("solution_id required");
|
|
5434
|
+
if (!step) throw new Error("step required — a STABLE slug a later run can match on, e.g. \"connector:clinic-data-mcp\"");
|
|
5435
|
+
if (!status) throw new Error("status required — built | deployed | verified");
|
|
5436
|
+
return await post(
|
|
5437
|
+
`/deploy/solutions/${solution_id}/progress`,
|
|
5438
|
+
{ step, status, detail, verified_by },
|
|
5439
|
+
sid,
|
|
5440
|
+
);
|
|
5441
|
+
},
|
|
5442
|
+
|
|
5443
|
+
ateam_get_progress: async ({ solution_id, limit }, sid) => {
|
|
5444
|
+
if (!solution_id) throw new Error("solution_id required");
|
|
5445
|
+
const qs = Number.isFinite(limit) ? `?limit=${limit}` : "";
|
|
5446
|
+
return await get(`/deploy/solutions/${solution_id}/progress${qs}`, sid);
|
|
5447
|
+
},
|
|
5448
|
+
|
|
5379
5449
|
ateam_get_lessons: async ({ solution_id, limit }, sid) => {
|
|
5380
5450
|
if (!solution_id) throw new Error("solution_id required");
|
|
5381
5451
|
const qs = Number.isFinite(limit) ? `?limit=${limit}` : "";
|