@mapled/mcp 0.10.0 → 0.11.0

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 CHANGED
@@ -64,9 +64,9 @@ For the first integration, propose one plan and let the owner approve it on a tr
64
64
  | `list_records` | Read a collection's draft records, newest edit first — `query` searches their content, `limit` (1–200) and `cursor` (the previous answer's `nextCursor`) page through them; `total` counts every match |
65
65
  | `create_form` / `list_forms` | Set up public forms with spam protection |
66
66
  | `get_connection` (image values → `assetUrl(id, { width })` from @mapled/next) | Delivery key + API URL for wiring the site (`@mapled/next`) |
67
- | `push_site_manifest` / `list_bindings` | Tell Mapled where each field is rendered; read every binding's health (type mismatch, outdated, missing on site). Keep the repository's copy in `mapled/manifest.json` — `npx @mapled/cli scan --write` derives it from the code and `bindings push` / `bindings pull` exchange it with Mapled |
67
+ | `push_site_manifest` / `list_bindings` | Tell Mapled where each field is rendered; read every binding's health (type mismatch, outdated, missing on site). Keep the repository's copy in `mapled/manifest.json` — `npx @mapled/cli scan --write` derives it from the code and `bindings push` / `bindings pull` exchange it with Mapled. A push records the integration hash — the schema and these bindings — and `list_bindings` says whether it still matches (`integration.inSync`, with `schemaChanged` / `bindingsChanged` naming what moved) |
68
68
  | `configure_revalidation` | Point the publish webhook at the site, get the signing secret |
69
- | `check_integration` | The site's integration as Mapled sees it — delivery reads, the webhook and its last delivery, the bindings summary, current package versions; `npx @mapled/cli doctor` shows the same from inside the repository |
69
+ | `check_integration` | The site's integration as Mapled sees it — delivery reads, the webhook and its last delivery, the bindings summary, the integration hash (is the last push still in step with the schema and the bindings?), current package versions; `npx @mapled/cli doctor` shows the same from inside the repository |
70
70
  | `get_mapled_md` | `MAPLED.md` rendered from the project — the guide for the next agent: project, how the site reads it, content model, bindings by page, last setup run, working rules, verification commands. Never a secret. `npx @mapled/cli md pull` writes the same file; `mapled doctor` says when it is out of date |
71
71
 
72
72
  Agents write drafts only — publishing stays with humans in the Mapled app, and nothing changes on the live site until someone presses Publish.
package/dist/tools.js CHANGED
@@ -229,7 +229,9 @@ export function createTools(api) {
229
229
  "image_alt, link, number, date, boolean, collection for a repeated list, route_param, form_field). " +
230
230
  "Push the full list every time; bindings you leave out are marked missing on the site. Mapled grades " +
231
231
  "each binding against the schema (healthy, type mismatch, outdated) and returns warnings for unknown " +
232
- "collections or fields. Needs the builder plan.",
232
+ "collections or fields. The answer's manifest.integrationHash is the hash of the schema and these " +
233
+ "bindings — what the site is synced with from now on; check_integration reports inSync against it. " +
234
+ "Needs the builder plan.",
233
235
  schema: {
234
236
  framework: z.string().max(40).optional(),
235
237
  pages: z.array(z.object({ route: z.string().max(200), file: z.string().max(300).optional() })).max(200).optional(),
@@ -266,7 +268,11 @@ export function createTools(api) {
266
268
  name: "list_bindings",
267
269
  description: "Read the bindings with their health: healthy, missing_on_site, type_mismatch, outdated (the field or " +
268
270
  "collection changed since the manifest), not_checked, disabled. Fix the site or the schema, then push " +
269
- "the manifest again.",
271
+ "the manifest again. `integration` says whether the last push still matches Mapled: inSync false with " +
272
+ "schemaChanged means the schema moved after the site was wired — run `npx @mapled/cli schema diff`, " +
273
+ "update the site, then `scan --write` and push the manifest again; bindingsChanged means someone " +
274
+ "replaced or deleted bindings in Mapled — `npx @mapled/cli bindings pull` brings them into the " +
275
+ "repository, then update the site to match.",
270
276
  schema: {},
271
277
  handler: async () => api.request("GET", "/v1/agent/bindings"),
272
278
  },
@@ -449,7 +455,8 @@ export function createTools(api) {
449
455
  "reads it, the content model, where the site renders each field, the last setup run, the working rules and " +
450
456
  "the verification commands, rendered from the project as it is now. Write `markdown` to MAPLED.md at the " +
451
457
  "repository root and commit it. If the file exists, replace everything above its `<!-- mapled:notes -->` " +
452
- "line and keep what is below — that part belongs to the repository. Refresh it after every schema or " +
458
+ "line and keep what is below — that part belongs to the repository. Its first line is a stamp with the " +
459
+ "schema hash, the manifest version and the integration hash. Refresh it after every schema or " +
453
460
  "manifest change and at the end of a setup; `npx @mapled/cli md pull` does the same from the repository " +
454
461
  "and `mapled doctor` says when it is out of date. It never contains a secret — don't add one.",
455
462
  schema: {},
@@ -459,9 +466,14 @@ export function createTools(api) {
459
466
  name: "check_integration",
460
467
  description: "See the site's integration as Mapled sees it: whether the site has read content with the delivery key " +
461
468
  "and when, the publish webhook's URL and its last delivery, the bindings summary of the last manifest, " +
462
- "the connection you hold and the package versions Mapled considers current (@mapled/next, @mapled/mcp, " +
463
- "the mapled CLI). Use it to find what is left to wire up; `npx @mapled/cli doctor` shows the same picture " +
464
- "from inside the repository, plus the local checks (env, routes, generated types, secrets in git).",
469
+ "the connection you hold, the package versions Mapled considers current (@mapled/next, @mapled/mcp, " +
470
+ "the mapled CLI) and `integration` — the integration hash: `hash` is the schema and the bindings as " +
471
+ "Mapled holds them now, `synced` what the last manifest push recorded; inSync false means the site was " +
472
+ "wired against an older schema (schemaChanged) or bindings were edited in Mapled (bindingsChanged) — " +
473
+ "re-sync it (schema diff, update the site, push the manifest again). The repository computes the same " +
474
+ "hash from mapled/schema.json and mapled/manifest.json, and `npx @mapled/cli doctor` compares the two in " +
475
+ "its Integration line. Use it to find what is left to wire up; doctor shows the same picture from inside " +
476
+ "the repository, plus the local checks (env, routes, generated types, secrets in git).",
465
477
  schema: {},
466
478
  handler: async () => api.request("GET", "/v1/agent/integration"),
467
479
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapled/mcp",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Mapled MCP server: lets AI agents build schema and content for one Mapled project.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://mapled.io",