distribea-mcp 1.1.2 → 1.2.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.
Files changed (2) hide show
  1. package/index.mjs +16 -11
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -969,18 +969,21 @@ async function runCreateReference(args) {
969
969
  ? await fileToDataUri(resolveIn(projectDir, args.photo_path))
970
970
  : undefined;
971
971
 
972
- if (args.kind === "product") {
972
+ if (args.kind === "product" || args.kind === "place") {
973
973
  const out = await engine("create_product", projectDir, {
974
974
  name: args.name,
975
975
  description: args.description,
976
976
  photo,
977
977
  pages_excerpt: excerpt,
978
+ kind: args.kind,
978
979
  });
979
980
  return [
980
- "Product locked ✔",
981
+ `${args.kind === "place" ? "Place" : "Product"} locked ✔`,
981
982
  `name: ${out.name}`,
982
983
  `look: ${out.description}`,
983
- `Cet objet restera IDENTIQUE dans toutes les images qui le citent (param product: "${out.name}", ou automatiquement quand son nom apparaît près d'un placeholder).`,
984
+ args.kind === "place"
985
+ ? `Ce LIEU sera reconstruit À L'IDENTIQUE dans toutes les images qui le citent (param product: "${out.name}", ou automatiquement quand son nom apparaît près d'un placeholder).`
986
+ : `Cet objet restera IDENTIQUE dans toutes les images qui le citent (param product: "${out.name}", ou automatiquement quand son nom apparaît près d'un placeholder).`,
984
987
  ].join("\n");
985
988
  }
986
989
  const out = await engine("create_character", projectDir, {
@@ -1856,35 +1859,37 @@ const TOOLS = [
1856
1859
  },
1857
1860
  {
1858
1861
  name: "create_reference",
1859
- title: "Lock a recurring character or product (identical everywhere)",
1862
+ title:
1863
+ "Lock a recurring character, product or place (identical everywhere)",
1860
1864
  annotations: {
1861
1865
  readOnlyHint: false,
1862
1866
  destructiveHint: false,
1863
1867
  openWorldHint: true,
1864
1868
  },
1865
1869
  description:
1866
- "Lock a RECURRING reference reused identically across every image — kind 'character' (default): the same FACE everywhere, auto-cast or locked from a real photo via photo_path (« c'est lui le professeur » → call this FIRST so every scene reuses that exact face); kind 'product' (e-commerce): the exact same object in every shot. make_images and generate_image use them automatically when their name appears near a slot.",
1870
+ "Lock a RECURRING reference reused identically across every image — kind 'character' (default): the same FACE everywhere, auto-cast or locked from a real photo via photo_path (« c'est lui le professeur » → call this FIRST so every scene reuses that exact face); kind 'product' (e-commerce): the exact same object in every shot; kind 'place': the brand's real location (shop, workshop…) rebuilt identically in every scene (« voilà ma boutique » → photo_path). make_images and generate_image use them automatically when their name appears near a slot.",
1867
1871
  inputSchema: {
1868
1872
  type: "object",
1869
1873
  properties: {
1870
1874
  kind: {
1871
1875
  type: "string",
1872
- enum: ["character", "product"],
1873
- description: "Default 'character'",
1876
+ enum: ["character", "product", "place"],
1877
+ description:
1878
+ "Default 'character'. 'place' = the brand's real location rebuilt identically",
1874
1879
  },
1875
1880
  name: {
1876
1881
  type: "string",
1877
1882
  description:
1878
- "Character role (e.g. 'la pâtissière') or product name as written on the site",
1883
+ "Character role (e.g. 'la pâtissière'), product name as written on the site, or place name (e.g. 'la boulangerie')",
1879
1884
  },
1880
1885
  description: {
1881
1886
  type: "string",
1882
- description: "product: optional physical description",
1887
+ description: "product/place: optional physical description",
1883
1888
  },
1884
1889
  photo_path: {
1885
1890
  type: "string",
1886
1891
  description:
1887
- "Optional absolute path to a real photo to lock (face or product)",
1892
+ "Optional absolute path to a real photo to lock (face, product or place)",
1888
1893
  },
1889
1894
  project_dir: {
1890
1895
  type: "string",
@@ -2077,7 +2082,7 @@ async function handle(msg) {
2077
2082
  serverInfo: {
2078
2083
  name: "distribea-mcp",
2079
2084
  title: "Distribea MCP",
2080
- version: "1.1.1",
2085
+ version: "1.2.0",
2081
2086
  },
2082
2087
  instructions: INSTRUCTIONS,
2083
2088
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "distribea-mcp",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Distribea MCP, on-brand website imagery (style-locked, recurring characters, UGC review avatars) generated by the hosted Distribea engine. Requires a Distribea subscription key.",
5
5
  "type": "module",
6
6
  "bin": {