@rubytech/create-realagent-code 0.1.62 → 0.1.64

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 (688) hide show
  1. package/dist/__tests__/installer-specialist-registration.test.js +112 -0
  2. package/dist/index.js +22 -0
  3. package/dist/specialist-registration.js +78 -0
  4. package/package.json +1 -1
  5. package/payload/platform/plugins/admin/PLUGIN.md +22 -0
  6. package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +50 -13
  7. package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +22 -21
  8. package/payload/platform/plugins/contacts/PLUGIN.md +9 -0
  9. package/payload/platform/plugins/docs/references/admin-session.md +57 -8
  10. package/payload/platform/plugins/docs/references/platform.md +4 -0
  11. package/payload/platform/plugins/email/PLUGIN.md +9 -0
  12. package/payload/platform/plugins/memory/PLUGIN.md +37 -0
  13. package/payload/platform/plugins/memory/mcp/dist/index.js +3 -3
  14. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  15. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js +137 -75
  16. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js.map +1 -1
  17. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts +0 -17
  18. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts.map +1 -1
  19. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js +32 -4
  20. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js.map +1 -1
  21. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts +65 -0
  22. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts.map +1 -0
  23. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +182 -0
  24. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -0
  25. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js +8 -8
  26. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js.map +1 -1
  27. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts +2 -0
  28. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts.map +1 -0
  29. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js +241 -0
  30. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js.map +1 -0
  31. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +9 -0
  33. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts.map +1 -1
  36. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js +9 -1
  37. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js.map +1 -1
  38. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts.map +1 -1
  39. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js +10 -2
  40. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js.map +1 -1
  41. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts +1 -1
  42. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts.map +1 -1
  43. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js +5 -1
  44. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js.map +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts +1 -1
  46. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js +5 -1
  48. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
  50. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +4 -0
  51. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  52. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +1 -1
  53. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +4 -0
  54. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +1 -1
  55. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts.map +1 -1
  56. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +4 -0
  57. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -1
  58. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts.map +1 -1
  59. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js +4 -0
  60. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js.map +1 -1
  61. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts.map +1 -1
  62. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js +4 -0
  63. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -1
  64. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts.map +1 -1
  65. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +4 -0
  66. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -1
  67. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts.map +1 -1
  68. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js +4 -0
  69. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js.map +1 -1
  70. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  71. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +5 -0
  72. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  73. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts.map +1 -1
  74. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js +4 -0
  75. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js.map +1 -1
  76. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts.map +1 -1
  77. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js +4 -0
  78. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js.map +1 -1
  79. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.d.ts.map +1 -1
  80. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js +4 -0
  81. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js.map +1 -1
  82. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
  83. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +5 -0
  84. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  85. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  86. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +6 -0
  87. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  88. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts.map +1 -1
  89. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js +4 -0
  90. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js.map +1 -1
  91. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
  92. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +4 -0
  93. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  94. package/payload/platform/plugins/memory/mcp/vitest.config.ts +10 -3
  95. package/payload/platform/plugins/outlook/PLUGIN.md +7 -0
  96. package/payload/platform/plugins/replicate/PLUGIN.md +3 -0
  97. package/payload/platform/plugins/scheduling/PLUGIN.md +8 -0
  98. package/payload/platform/plugins/tasks/PLUGIN.md +14 -0
  99. package/payload/platform/plugins/waitlist/PLUGIN.md +7 -0
  100. package/payload/platform/plugins/whatsapp/PLUGIN.md +12 -0
  101. package/payload/platform/plugins/workflows/PLUGIN.md +8 -0
  102. package/payload/platform/services/claude-session-manager/dist/index.js +43 -1
  103. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  104. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +33 -0
  105. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  106. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +214 -59
  107. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  108. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +23 -0
  109. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -0
  110. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +141 -0
  111. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -0
  112. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +13 -2
  113. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
  114. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +150 -37
  115. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
  116. package/payload/platform/services/claude-session-manager/dist/types.d.ts +5 -0
  117. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
  118. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  119. package/payload/premium-plugins/real-agent/BUNDLE.md +2 -4
  120. package/payload/premium-plugins/real-agent/agents/compliance.md +1 -1
  121. package/payload/premium-plugins/real-agent/agents/valuer.md +1 -2
  122. package/payload/premium-plugins/real-agent/plugins/epc/.claude-plugin/plugin.json +3 -3
  123. package/payload/premium-plugins/real-agent/plugins/listings/.claude-plugin/plugin.json +1 -1
  124. package/payload/premium-plugins/real-agent/plugins/listings/PLUGIN.md +1 -3
  125. package/payload/premium-plugins/real-agent/plugins/listings/skills/new-instruction/SKILL.md +11 -12
  126. package/payload/premium-plugins/real-agent/plugins/loop/PLUGIN.md +27 -0
  127. package/payload/premium-plugins/real-agent/plugins/preval/.claude-plugin/plugin.json +1 -1
  128. package/payload/premium-plugins/real-agent/plugins/preval/PLUGIN.md +16 -8
  129. package/payload/premium-plugins/real-agent/plugins/preval/hooks/preval-prompt-required.sh +140 -0
  130. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/SKILL.md +92 -40
  131. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/__tests__/adherence.test.py +373 -0
  132. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/render.py +299 -115
  133. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template-inputs.schema.json +34 -19
  134. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template.html +88 -19
  135. package/payload/premium-plugins/real-agent/plugins/property-data/PLUGIN.md +22 -0
  136. package/payload/premium-plugins/real-agent/specs/03-new-instruction.md +8 -12
  137. package/payload/server/{chunk-2IKQERHN.js → chunk-S6PQA6Q4.js} +43 -34
  138. package/payload/server/maxy-edge.js +1 -1
  139. package/payload/server/public/assets/{admin-DhN3G8W7.js → admin-ymReS1mN.js} +1 -1
  140. package/payload/server/public/assets/{data-B2ZVXOcE.js → data-D6U2e85B.js} +1 -1
  141. package/payload/server/public/assets/{graph-BAMGPHrK.js → graph-C274PN27.js} +1 -1
  142. package/payload/server/public/assets/{graph-labels-D9eBbvxo.js → graph-labels-DQFzd1FY.js} +1 -1
  143. package/payload/server/public/assets/{page-DjdVMWCz.js → page-D-OLjort.js} +1 -1
  144. package/payload/server/public/assets/{page-CV27Al6Z.js → page-DFFt9_Q0.js} +1 -1
  145. package/payload/server/public/data.html +3 -3
  146. package/payload/server/public/graph.html +3 -3
  147. package/payload/server/public/index.html +4 -4
  148. package/payload/server/server.js +2 -2
  149. package/payload/platform/plugins/brochures/.claude-plugin/plugin.json +0 -8
  150. package/payload/platform/plugins/brochures/PLUGIN.md +0 -38
  151. package/payload/platform/plugins/brochures/commands/make-brochure.md +0 -11
  152. package/payload/platform/plugins/brochures/skills/a4-print-documents/SKILL.md +0 -478
  153. package/payload/platform/plugins/brochures/skills/brand-design/SKILL.md +0 -192
  154. package/payload/platform/plugins/brochures/skills/make-brochure/SKILL.md +0 -354
  155. package/payload/platform/plugins/brochures/skills/make-brochure/references/seller-brief-template.md +0 -115
  156. package/payload/platform/plugins/brochures/skills/property-brochure/SKILL.md +0 -142
  157. package/payload/platform/plugins/brochures/skills/property-brochure/references/build.md +0 -270
  158. package/payload/platform/plugins/brochures/skills/property-brochure/references/copy.md +0 -211
  159. package/payload/platform/plugins/brochures/skills/property-brochure/references/images.md +0 -166
  160. package/payload/platform/plugins/brochures/skills/property-brochure/references/index-landing.md +0 -376
  161. package/payload/platform/plugins/brochures/skills/property-brochure/references/index.html +0 -1288
  162. package/payload/platform/plugins/brochures/skills/property-brochure/references/placeholders.md +0 -250
  163. package/payload/platform/plugins/brochures/skills/property-brochure/references/registers.md +0 -47
  164. package/payload/platform/plugins/brochures/skills/property-brochure/references/seller-brief.md +0 -56
  165. package/payload/platform/plugins/brochures/skills/property-brochure/references/structure.md +0 -249
  166. package/payload/platform/plugins/brochures/skills/property-brochure/references/template.html +0 -2370
  167. package/payload/platform/plugins/brochures/skills/property-extract/SKILL.md +0 -372
  168. package/payload/platform/plugins/brochures/skills/property-market-report/SKILL.md +0 -100
  169. package/payload/platform/plugins/brochures/skills/property-market-report/references/render.py +0 -267
  170. package/payload/platform/plugins/brochures/skills/property-market-report/references/template.html +0 -266
  171. package/payload/platform/plugins/brochures/skills/property-socials/SKILL.md +0 -141
  172. package/payload/platform/plugins/buyers/.claude-plugin/plugin.json +0 -8
  173. package/payload/platform/plugins/buyers/PLUGIN.md +0 -34
  174. package/payload/platform/plugins/buyers/skills/buyer-feedback/SKILL.md +0 -109
  175. package/payload/platform/plugins/buyers/skills/buyer-management/SKILL.md +0 -42
  176. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification-questions.md +0 -16
  177. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification.md +0 -59
  178. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-scripts.md +0 -63
  179. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-working-scripts.md +0 -54
  180. package/payload/platform/plugins/buyers/skills/buyer-management/references/feedback-collection.md +0 -42
  181. package/payload/platform/plugins/buyers/skills/buyer-management/references/offer-capture.md +0 -38
  182. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-booking.md +0 -32
  183. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-management.md +0 -52
  184. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/SKILL.md +0 -407
  185. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/care-fees-guide.md +0 -68
  186. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/divorce-sales-guide.md +0 -61
  187. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/downsizing-guide.md +0 -45
  188. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-buyers.md +0 -92
  189. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-sellers.md +0 -78
  190. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/probate-guide.md +0 -53
  191. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/upsizing-guide.md +0 -41
  192. package/payload/platform/plugins/buyers/skills/property-enquiry/SKILL.md +0 -126
  193. package/payload/platform/plugins/buyers/skills/viewing-management/SKILL.md +0 -111
  194. package/payload/platform/plugins/epc/.claude-plugin/plugin.json +0 -17
  195. package/payload/platform/plugins/epc/PLUGIN.md +0 -85
  196. package/payload/platform/plugins/epc/mcp/dist/index.d.ts +0 -2
  197. package/payload/platform/plugins/epc/mcp/dist/index.d.ts.map +0 -1
  198. package/payload/platform/plugins/epc/mcp/dist/index.js +0 -117
  199. package/payload/platform/plugins/epc/mcp/dist/index.js.map +0 -1
  200. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts +0 -3
  201. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts.map +0 -1
  202. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js +0 -72
  203. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js.map +0 -1
  204. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts +0 -60
  205. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts.map +0 -1
  206. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js +0 -181
  207. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js.map +0 -1
  208. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts +0 -3
  209. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  210. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js +0 -49
  211. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js.map +0 -1
  212. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts +0 -15
  213. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts.map +0 -1
  214. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js +0 -130
  215. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js.map +0 -1
  216. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts +0 -5
  217. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts.map +0 -1
  218. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js +0 -38
  219. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js.map +0 -1
  220. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts +0 -4
  221. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  222. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js +0 -9
  223. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js.map +0 -1
  224. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts +0 -4
  225. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts.map +0 -1
  226. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js +0 -10
  227. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js.map +0 -1
  228. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts +0 -5
  229. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts.map +0 -1
  230. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js +0 -36
  231. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js.map +0 -1
  232. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts +0 -10
  233. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts.map +0 -1
  234. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js +0 -30
  235. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js.map +0 -1
  236. package/payload/platform/plugins/epc/mcp/package-lock.json +0 -2566
  237. package/payload/platform/plugins/epc/mcp/package.json +0 -21
  238. package/payload/platform/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  239. package/payload/platform/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  240. package/payload/platform/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  241. package/payload/platform/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  242. package/payload/platform/plugins/epc/mcp/src/index.ts +0 -156
  243. package/payload/platform/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  244. package/payload/platform/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  245. package/payload/platform/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  246. package/payload/platform/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  247. package/payload/platform/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  248. package/payload/platform/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  249. package/payload/platform/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  250. package/payload/platform/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  251. package/payload/platform/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  252. package/payload/platform/plugins/epc/mcp/tsconfig.json +0 -20
  253. package/payload/platform/plugins/epc/mcp/vitest.config.ts +0 -8
  254. package/payload/platform/plugins/estate-business/.claude-plugin/plugin.json +0 -8
  255. package/payload/platform/plugins/estate-business/PLUGIN.md +0 -64
  256. package/payload/platform/plugins/estate-business/skills/business-growth/SKILL.md +0 -133
  257. package/payload/platform/plugins/estate-business/skills/business-growth/references/buy-back-your-time.md +0 -37
  258. package/payload/platform/plugins/estate-business/skills/business-growth/references/firewave-gost-scorecards.md +0 -14
  259. package/payload/platform/plugins/estate-business/skills/business-growth/references/keller-org-model.md +0 -17
  260. package/payload/platform/plugins/estate-business/skills/business-growth/references/lencioni-team-models.md +0 -22
  261. package/payload/platform/plugins/estate-business/skills/business-growth/references/listing-management-system.md +0 -11
  262. package/payload/platform/plugins/estate-business/skills/business-growth/references/net-figure-form.md +0 -11
  263. package/payload/platform/plugins/estate-business/skills/business-growth/references/serhant-bizinbox-notes.md +0 -13
  264. package/payload/platform/plugins/estate-business/skills/business-growth/references/team-roles-commission.md +0 -14
  265. package/payload/platform/plugins/estate-business/skills/business-growth/references/va-2026-ops.md +0 -43
  266. package/payload/platform/plugins/estate-business/skills/business-growth/references/wingman-structure.md +0 -13
  267. package/payload/platform/plugins/estate-business/skills/business-operations/SKILL.md +0 -32
  268. package/payload/platform/plugins/estate-business/skills/business-operations/references/crm-systems.md +0 -57
  269. package/payload/platform/plugins/estate-business/skills/business-operations/references/hiring-guide.md +0 -59
  270. package/payload/platform/plugins/estate-business/skills/business-operations/references/impact-framework.md +0 -47
  271. package/payload/platform/plugins/estate-business/skills/business-operations/references/minutes-equal-money.md +0 -55
  272. package/payload/platform/plugins/estate-business/skills/business-operations/references/team-management.md +0 -48
  273. package/payload/platform/plugins/estate-business/skills/commission-calculator/SKILL.md +0 -40
  274. package/payload/platform/plugins/estate-business/skills/exp-partnership/SKILL.md +0 -52
  275. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/12-reasons.md +0 -39
  276. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/95-5-system.md +0 -66
  277. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/agent-attraction-scripts.md +0 -90
  278. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/business-partnership.md +0 -92
  279. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/exp-model-overview.md +0 -66
  280. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/model-comparison.md +0 -66
  281. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/revenue-share-explained.md +0 -57
  282. package/payload/platform/plugins/estate-business/skills/month-end-close/SKILL.md +0 -69
  283. package/payload/platform/plugins/estate-business/skills/payment-batch-stager/SKILL.md +0 -42
  284. package/payload/platform/plugins/estate-business/skills/period-reconciler/SKILL.md +0 -42
  285. package/payload/platform/plugins/estate-business/skills/personal-branding/SKILL.md +0 -117
  286. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent-notes.md +0 -31
  287. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent.md +0 -58
  288. package/payload/platform/plugins/estate-business/skills/personal-branding/references/authenticity-boundaries.md +0 -28
  289. package/payload/platform/plugins/estate-business/skills/personal-branding/references/become-a-brand-leader-notes.md +0 -19
  290. package/payload/platform/plugins/estate-business/skills/personal-branding/references/blast-formula.md +0 -42
  291. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-leader.md +0 -48
  292. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-strategy-system.md +0 -59
  293. package/payload/platform/plugins/estate-business/skills/personal-branding/references/content-engine.md +0 -49
  294. package/payload/platform/plugins/estate-business/skills/personal-branding/references/firewave-blast-and-blogging.md +0 -23
  295. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-content.md +0 -52
  296. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-principles.md +0 -20
  297. package/payload/platform/plugins/estate-business/skills/personal-branding/references/oversubscribed-positioning.md +0 -18
  298. package/payload/platform/plugins/estate-business/skills/personal-branding/references/platforms.md +0 -41
  299. package/payload/platform/plugins/estate-business/skills/personal-branding/references/priestley-oversubscribed.md +0 -54
  300. package/payload/platform/plugins/estate-business/skills/personal-branding/references/storeys-style-examples.md +0 -25
  301. package/payload/platform/plugins/estate-business/skills/personal-branding/references/visual-identity.md +0 -27
  302. package/payload/platform/plugins/estate-coaching/.claude-plugin/plugin.json +0 -8
  303. package/payload/platform/plugins/estate-coaching/PLUGIN.md +0 -54
  304. package/payload/platform/plugins/estate-coaching/skills/agent-performance/SKILL.md +0 -371
  305. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/atomic-habits.md +0 -52
  306. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/daily-routine-scorecard.md +0 -104
  307. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/hp6-model.md +0 -63
  308. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/twelve-week-year.md +0 -71
  309. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/SKILL.md +0 -36
  310. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/coaching-boundaries.md +0 -56
  311. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/feedback-framework.md +0 -61
  312. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/performance-framework.md +0 -109
  313. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/SKILL.md +0 -421
  314. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/coaching-exercises.md +0 -86
  315. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/goal-setting.md +0 -78
  316. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/one-to-one-framework.md +0 -92
  317. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/soi-workbook.md +0 -103
  318. package/payload/platform/plugins/estate-coaching/skills/serhant-training/SKILL.md +0 -410
  319. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/agent-training-guide.md +0 -70
  320. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/business-in-a-box.md +0 -72
  321. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/buyers-guide.md +0 -53
  322. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/codo-method.md +0 -72
  323. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/website-planning-guide.md +0 -79
  324. package/payload/platform/plugins/estate-sales/.claude-plugin/plugin.json +0 -8
  325. package/payload/platform/plugins/estate-sales/PLUGIN.md +0 -52
  326. package/payload/platform/plugins/estate-sales/skills/chase-progression/SKILL.md +0 -107
  327. package/payload/platform/plugins/estate-sales/skills/negotiation/SKILL.md +0 -35
  328. package/payload/platform/plugins/estate-sales/skills/negotiation/references/deal-saving.md +0 -47
  329. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-deep-guide.md +0 -64
  330. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-prep-principles.md +0 -29
  331. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-techniques.md +0 -42
  332. package/payload/platform/plugins/estate-sales/skills/negotiation/references/offer-presentation.md +0 -43
  333. package/payload/platform/plugins/estate-sales/skills/risk-scorer/SKILL.md +0 -42
  334. package/payload/platform/plugins/estate-sales/skills/sales-closer/SKILL.md +0 -24
  335. package/payload/platform/plugins/estate-sales/skills/sales-closer/references/serhant-emotion-stages.md +0 -36
  336. package/payload/platform/plugins/estate-sales/skills/sales-discovery/SKILL.md +0 -30
  337. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/chris-voss-discovery.md +0 -88
  338. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/firewave-gost-journey.md +0 -68
  339. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/phil-jones-openers.md +0 -78
  340. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/pre-listing-checklist.md +0 -77
  341. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/serhant-improv.md +0 -22
  342. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/tom-ferry-discovery.md +0 -103
  343. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/vendor-motivation-competitor.md +0 -52
  344. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/SKILL.md +0 -29
  345. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/chris-voss-negotiation.md +0 -70
  346. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/phil-jones-price-words.md +0 -40
  347. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/serhant-negotiation-plus.md +0 -55
  348. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tom-panos-commission-pricing.md +0 -57
  349. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tony-morris-questioning.md +0 -54
  350. package/payload/platform/plugins/estate-sales/skills/sales-progression/SKILL.md +0 -27
  351. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/conveyancing-guide.md +0 -54
  352. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/transaction-tracking.md +0 -66
  353. package/payload/platform/plugins/estate-teaching/.claude-plugin/plugin.json +0 -8
  354. package/payload/platform/plugins/estate-teaching/PLUGIN.md +0 -30
  355. package/payload/platform/plugins/estate-teaching/skills/content-directory/SKILL.md +0 -39
  356. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/module-delivery.md +0 -65
  357. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/progress-tracking.md +0 -47
  358. package/payload/platform/plugins/leads/.claude-plugin/plugin.json +0 -8
  359. package/payload/platform/plugins/leads/PLUGIN.md +0 -61
  360. package/payload/platform/plugins/leads/skills/chain-progression-tracker/SKILL.md +0 -51
  361. package/payload/platform/plugins/leads/skills/diary-builder/SKILL.md +0 -38
  362. package/payload/platform/plugins/leads/skills/enquiry-triage/SKILL.md +0 -36
  363. package/payload/platform/plugins/leads/skills/lead-nurturing/SKILL.md +0 -137
  364. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letter.md +0 -28
  365. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letters.md +0 -37
  366. package/payload/platform/plugins/leads/skills/lead-nurturing/references/database-reactivation.md +0 -30
  367. package/payload/platform/plugins/leads/skills/lead-nurturing/references/email-nurture-sequences.md +0 -45
  368. package/payload/platform/plugins/leads/skills/lead-nurturing/references/facebook-referrals.md +0 -30
  369. package/payload/platform/plugins/leads/skills/lead-nurturing/references/firewave-email-nurture-sequences.md +0 -41
  370. package/payload/platform/plugins/leads/skills/lead-nurturing/references/keller-33-touch.md +0 -34
  371. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-letters.md +0 -31
  372. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-notification-letter.md +0 -20
  373. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up-dialogue.md +0 -22
  374. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up.md +0 -26
  375. package/payload/platform/plugins/leads/skills/lead-nurturing/references/serhant-three-fs-plus.md +0 -21
  376. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sharran-10x10x10.md +0 -18
  377. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sms-templates.md +0 -40
  378. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence-notes.md +0 -34
  379. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence.md +0 -60
  380. package/payload/platform/plugins/leads/skills/lead-nurturing/references/tom-panos-sms-templates.md +0 -59
  381. package/payload/platform/plugins/leads/skills/morning-round/SKILL.md +0 -72
  382. package/payload/platform/plugins/leads/skills/prospecting/SKILL.md +0 -33
  383. package/payload/platform/plugins/leads/skills/prospecting/references/database-matching.md +0 -30
  384. package/payload/platform/plugins/leads/skills/prospecting/references/database-value.md +0 -53
  385. package/payload/platform/plugins/leads/skills/prospecting/references/prospecting-dialogues.md +0 -24
  386. package/payload/platform/plugins/leads/skills/prospecting/references/reactivation.md +0 -34
  387. package/payload/platform/plugins/listings/.claude-plugin/plugin.json +0 -8
  388. package/payload/platform/plugins/listings/PLUGIN.md +0 -102
  389. package/payload/platform/plugins/listings/skills/comparable-finder/SKILL.md +0 -52
  390. package/payload/platform/plugins/listings/skills/epc-checker/SKILL.md +0 -38
  391. package/payload/platform/plugins/listings/skills/home-preparation/SKILL.md +0 -28
  392. package/payload/platform/plugins/listings/skills/home-preparation/references/kerb-appeal.md +0 -38
  393. package/payload/platform/plugins/listings/skills/home-preparation/references/photo-day.md +0 -59
  394. package/payload/platform/plugins/listings/skills/home-preparation/references/situational-tips.md +0 -50
  395. package/payload/platform/plugins/listings/skills/home-preparation/references/staging-guide.md +0 -52
  396. package/payload/platform/plugins/listings/skills/listing-copy-writer/SKILL.md +0 -55
  397. package/payload/platform/plugins/listings/skills/listing-presentation/SKILL.md +0 -286
  398. package/payload/platform/plugins/listings/skills/listing-presentation/references/booking-script.md +0 -51
  399. package/payload/platform/plugins/listings/skills/listing-presentation/references/objection-scripts.md +0 -193
  400. package/payload/platform/plugins/listings/skills/listing-presentation/references/penhaul-presentation.md +0 -123
  401. package/payload/platform/plugins/listings/skills/listing-presentation/references/pre-listing-kit.md +0 -139
  402. package/payload/platform/plugins/listings/skills/listing-presentation/references/set-to-sell.md +0 -55
  403. package/payload/platform/plugins/listings/skills/listing-presentation/references/sharran-frameworks.md +0 -107
  404. package/payload/platform/plugins/listings/skills/local-market-stats/SKILL.md +0 -33
  405. package/payload/platform/plugins/listings/skills/new-instruction/SKILL.md +0 -78
  406. package/payload/platform/plugins/listings/skills/particulars-builder/SKILL.md +0 -48
  407. package/payload/platform/plugins/listings/skills/portal-launch-scheduler/SKILL.md +0 -49
  408. package/payload/platform/plugins/listings/skills/pricing-scenario-builder/SKILL.md +0 -35
  409. package/payload/platform/plugins/listings/skills/property-marketing/SKILL.md +0 -337
  410. package/payload/platform/plugins/listings/skills/property-marketing/references/auction-report-template.md +0 -41
  411. package/payload/platform/plugins/listings/skills/property-marketing/references/coming-soon-campaign.md +0 -43
  412. package/payload/platform/plugins/listings/skills/property-marketing/references/direct-mail-templates.md +0 -121
  413. package/payload/platform/plugins/listings/skills/property-marketing/references/eoi-form-template.md +0 -62
  414. package/payload/platform/plugins/listings/skills/property-marketing/references/monthly-scorecard.md +0 -63
  415. package/payload/platform/plugins/listings/skills/supplier-booker/SKILL.md +0 -39
  416. package/payload/platform/plugins/listings/skills/talk-track-composer/SKILL.md +0 -36
  417. package/payload/platform/plugins/listings/skills/terms-of-business-drafter/SKILL.md +0 -54
  418. package/payload/platform/plugins/listings/skills/valuation-prep/SKILL.md +0 -69
  419. package/payload/platform/plugins/loop/.claude-plugin/plugin.json +0 -17
  420. package/payload/platform/plugins/loop/PLUGIN.md +0 -233
  421. package/payload/platform/plugins/loop/mcp/dist/index.d.ts +0 -2
  422. package/payload/platform/plugins/loop/mcp/dist/index.d.ts.map +0 -1
  423. package/payload/platform/plugins/loop/mcp/dist/index.js +0 -320
  424. package/payload/platform/plugins/loop/mcp/dist/index.js.map +0 -1
  425. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts +0 -10
  426. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts.map +0 -1
  427. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js +0 -88
  428. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js.map +0 -1
  429. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts +0 -3
  430. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  431. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js +0 -48
  432. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js.map +0 -1
  433. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts +0 -22
  434. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts.map +0 -1
  435. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js +0 -165
  436. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js.map +0 -1
  437. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts +0 -82
  438. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts.map +0 -1
  439. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js +0 -392
  440. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js.map +0 -1
  441. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts +0 -5
  442. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts.map +0 -1
  443. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +0 -40
  444. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +0 -1
  445. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts +0 -12
  446. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts.map +0 -1
  447. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js +0 -22
  448. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js.map +0 -1
  449. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts +0 -10
  450. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts.map +0 -1
  451. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js +0 -24
  452. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js.map +0 -1
  453. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts +0 -16
  454. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts.map +0 -1
  455. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js +0 -35
  456. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js.map +0 -1
  457. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts +0 -5
  458. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  459. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js +0 -9
  460. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js.map +0 -1
  461. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts +0 -4
  462. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts.map +0 -1
  463. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js +0 -14
  464. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js.map +0 -1
  465. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts +0 -9
  466. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts.map +0 -1
  467. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js +0 -43
  468. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js.map +0 -1
  469. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts +0 -6
  470. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts.map +0 -1
  471. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js +0 -7
  472. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js.map +0 -1
  473. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts +0 -9
  474. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts.map +0 -1
  475. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js +0 -16
  476. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js.map +0 -1
  477. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts +0 -15
  478. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts.map +0 -1
  479. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js +0 -11
  480. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js.map +0 -1
  481. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts +0 -10
  482. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts.map +0 -1
  483. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js +0 -39
  484. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js.map +0 -1
  485. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts +0 -9
  486. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts.map +0 -1
  487. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js +0 -125
  488. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js.map +0 -1
  489. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts +0 -18
  490. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts.map +0 -1
  491. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js +0 -87
  492. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js.map +0 -1
  493. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts +0 -10
  494. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts.map +0 -1
  495. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js +0 -82
  496. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js.map +0 -1
  497. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts +0 -33
  498. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts.map +0 -1
  499. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js +0 -19
  500. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js.map +0 -1
  501. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts +0 -11
  502. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts.map +0 -1
  503. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js +0 -26
  504. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js.map +0 -1
  505. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts +0 -15
  506. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts.map +0 -1
  507. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js +0 -11
  508. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js.map +0 -1
  509. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts +0 -16
  510. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts.map +0 -1
  511. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js +0 -41
  512. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js.map +0 -1
  513. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts +0 -9
  514. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts.map +0 -1
  515. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js +0 -19
  516. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js.map +0 -1
  517. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts +0 -13
  518. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts.map +0 -1
  519. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js +0 -49
  520. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js.map +0 -1
  521. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts +0 -7
  522. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts.map +0 -1
  523. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js +0 -19
  524. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js.map +0 -1
  525. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts +0 -5
  526. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts.map +0 -1
  527. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js +0 -32
  528. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js.map +0 -1
  529. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts +0 -14
  530. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts.map +0 -1
  531. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js +0 -11
  532. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js.map +0 -1
  533. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts +0 -9
  534. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts.map +0 -1
  535. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js +0 -85
  536. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js.map +0 -1
  537. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts +0 -13
  538. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts.map +0 -1
  539. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js +0 -44
  540. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js.map +0 -1
  541. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts +0 -14
  542. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts.map +0 -1
  543. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js +0 -18
  544. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js.map +0 -1
  545. package/payload/platform/plugins/loop/mcp/package-lock.json +0 -2549
  546. package/payload/platform/plugins/loop/mcp/package.json +0 -21
  547. package/payload/platform/plugins/loop/mcp/src/__tests__/loop-swagger.snapshot.json +0 -26467
  548. package/payload/platform/plugins/loop/mcp/src/__tests__/new-tool-shape.test.ts +0 -99
  549. package/payload/platform/plugins/loop/mcp/src/__tests__/plugin-md-time-doctrine.test.ts +0 -132
  550. package/payload/platform/plugins/loop/mcp/src/__tests__/swagger-write-coverage.test.ts +0 -154
  551. package/payload/platform/plugins/loop/mcp/src/index.ts +0 -498
  552. package/payload/platform/plugins/loop/mcp/src/lib/crypto.ts +0 -105
  553. package/payload/platform/plugins/loop/mcp/src/lib/file-crypto.ts +0 -54
  554. package/payload/platform/plugins/loop/mcp/src/lib/key-store.ts +0 -221
  555. package/payload/platform/plugins/loop/mcp/src/lib/loop-api.ts +0 -567
  556. package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +0 -51
  557. package/payload/platform/plugins/loop/mcp/src/tools/auto-responder.ts +0 -80
  558. package/payload/platform/plugins/loop/mcp/src/tools/customer-preferences.ts +0 -66
  559. package/payload/platform/plugins/loop/mcp/src/tools/feedback.ts +0 -86
  560. package/payload/platform/plugins/loop/mcp/src/tools/key-deregister.ts +0 -12
  561. package/payload/platform/plugins/loop/mcp/src/tools/key-list.ts +0 -19
  562. package/payload/platform/plugins/loop/mcp/src/tools/key-register.ts +0 -70
  563. package/payload/platform/plugins/loop/mcp/src/tools/marketing-enquiry.ts +0 -27
  564. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-batch.ts +0 -53
  565. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-request.ts +0 -42
  566. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match.ts +0 -84
  567. package/payload/platform/plugins/loop/mcp/src/tools/people-detail.ts +0 -245
  568. package/payload/platform/plugins/loop/mcp/src/tools/people-search.ts +0 -180
  569. package/payload/platform/plugins/loop/mcp/src/tools/property-detail.ts +0 -145
  570. package/payload/platform/plugins/loop/mcp/src/tools/property-intent.ts +0 -84
  571. package/payload/platform/plugins/loop/mcp/src/tools/property-listed.ts +0 -81
  572. package/payload/platform/plugins/loop/mcp/src/tools/property-search.ts +0 -92
  573. package/payload/platform/plugins/loop/mcp/src/tools/property-sold.ts +0 -67
  574. package/payload/platform/plugins/loop/mcp/src/tools/supplier.ts +0 -129
  575. package/payload/platform/plugins/loop/mcp/src/tools/team-availability.ts +0 -52
  576. package/payload/platform/plugins/loop/mcp/src/tools/team-info.ts +0 -95
  577. package/payload/platform/plugins/loop/mcp/src/tools/viewing-create.ts +0 -41
  578. package/payload/platform/plugins/loop/mcp/src/tools/viewing-detail.ts +0 -171
  579. package/payload/platform/plugins/loop/mcp/src/tools/viewing-search.ts +0 -92
  580. package/payload/platform/plugins/loop/mcp/src/tools/viewing-update.ts +0 -53
  581. package/payload/platform/plugins/loop/mcp/tsconfig.json +0 -20
  582. package/payload/platform/plugins/loop/mcp/vitest.config.ts +0 -9
  583. package/payload/platform/plugins/loop/skills/compliance-flag-checker/SKILL.md +0 -53
  584. package/payload/platform/plugins/loop/skills/priority-ranker/SKILL.md +0 -40
  585. package/payload/platform/plugins/loop/skills/tone-matched-drafter/SKILL.md +0 -53
  586. package/payload/platform/plugins/loop/skills/variance-narrator/SKILL.md +0 -50
  587. package/payload/platform/plugins/loop/skills/vendor-research/SKILL.md +0 -54
  588. package/payload/platform/plugins/preval/.claude-plugin/plugin.json +0 -8
  589. package/payload/platform/plugins/preval/PLUGIN.md +0 -47
  590. package/payload/platform/plugins/preval/skills/property-preval/SKILL.md +0 -146
  591. package/payload/platform/plugins/preval/skills/property-preval/references/render.py +0 -630
  592. package/payload/platform/plugins/preval/skills/property-preval/references/template-inputs.schema.json +0 -189
  593. package/payload/platform/plugins/preval/skills/property-preval/references/template.html +0 -312
  594. package/payload/platform/plugins/property-data/.claude-plugin/plugin.json +0 -17
  595. package/payload/platform/plugins/property-data/PLUGIN.md +0 -158
  596. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts +0 -2
  597. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts.map +0 -1
  598. package/payload/platform/plugins/property-data/mcp/dist/index.js +0 -236
  599. package/payload/platform/plugins/property-data/mcp/dist/index.js.map +0 -1
  600. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts +0 -3
  601. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +0 -1
  602. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js +0 -72
  603. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js.map +0 -1
  604. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts +0 -3
  605. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  606. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js +0 -49
  607. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js.map +0 -1
  608. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts +0 -15
  609. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts.map +0 -1
  610. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js +0 -135
  611. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js.map +0 -1
  612. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts +0 -5
  613. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +0 -1
  614. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js +0 -38
  615. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js.map +0 -1
  616. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +0 -28
  617. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +0 -1
  618. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js +0 -101
  619. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +0 -1
  620. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts +0 -24
  621. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +0 -1
  622. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js +0 -33
  623. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js.map +0 -1
  624. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +0 -4
  625. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  626. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js +0 -9
  627. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js.map +0 -1
  628. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts +0 -4
  629. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +0 -1
  630. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js +0 -10
  631. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js.map +0 -1
  632. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts +0 -5
  633. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +0 -1
  634. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js +0 -50
  635. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js.map +0 -1
  636. package/payload/platform/plugins/property-data/mcp/package-lock.json +0 -2566
  637. package/payload/platform/plugins/property-data/mcp/package.json +0 -21
  638. package/payload/platform/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +0 -252
  639. package/payload/platform/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +0 -107
  640. package/payload/platform/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +0 -184
  641. package/payload/platform/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +0 -62
  642. package/payload/platform/plugins/property-data/mcp/src/index.ts +0 -409
  643. package/payload/platform/plugins/property-data/mcp/src/lib/crypto.ts +0 -79
  644. package/payload/platform/plugins/property-data/mcp/src/lib/file-crypto.ts +0 -55
  645. package/payload/platform/plugins/property-data/mcp/src/lib/key-store.ts +0 -181
  646. package/payload/platform/plugins/property-data/mcp/src/lib/neo4j.ts +0 -47
  647. package/payload/platform/plugins/property-data/mcp/src/lib/propertydata-api.ts +0 -120
  648. package/payload/platform/plugins/property-data/mcp/src/tools/endpoints.ts +0 -47
  649. package/payload/platform/plugins/property-data/mcp/src/tools/key-deregister.ts +0 -9
  650. package/payload/platform/plugins/property-data/mcp/src/tools/key-list.ts +0 -10
  651. package/payload/platform/plugins/property-data/mcp/src/tools/key-register.ts +0 -54
  652. package/payload/platform/plugins/property-data/mcp/tsconfig.json +0 -20
  653. package/payload/platform/plugins/property-data/mcp/vitest.config.ts +0 -8
  654. package/payload/platform/plugins/property-data/skills/property-data/SKILL.md +0 -77
  655. package/payload/platform/plugins/vendors/.claude-plugin/plugin.json +0 -8
  656. package/payload/platform/plugins/vendors/PLUGIN.md +0 -33
  657. package/payload/platform/plugins/vendors/skills/vendor-communication/SKILL.md +0 -42
  658. package/payload/platform/plugins/vendors/skills/vendor-communication/references/fee-protection-and-agenda.md +0 -28
  659. package/payload/platform/plugins/vendors/skills/vendor-communication/references/listing-scripts.md +0 -44
  660. package/payload/platform/plugins/vendors/skills/vendor-communication/references/negotiation-deep-guide.md +0 -70
  661. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment-scripts.md +0 -33
  662. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment.md +0 -34
  663. package/payload/platform/plugins/vendors/skills/vendor-communication/references/scenario-scripts.md +0 -38
  664. package/payload/platform/plugins/vendors/skills/vendor-communication/references/seller-engagement.md +0 -51
  665. package/payload/platform/plugins/vendors/skills/vendor-communication/references/valuation-booking.md +0 -76
  666. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-scripts.md +0 -63
  667. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-updates.md +0 -41
  668. package/payload/platform/plugins/vendors/skills/vendor-updates/SKILL.md +0 -153
  669. package/payload/premium-plugins/real-agent/plugins/epc/PLUGIN.md +0 -85
  670. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package-lock.json +0 -2566
  671. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package.json +0 -21
  672. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  673. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  674. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  675. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  676. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/index.ts +0 -156
  677. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  678. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  679. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  680. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  681. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  682. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  683. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  684. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  685. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  686. package/payload/premium-plugins/real-agent/plugins/epc/mcp/tsconfig.json +0 -20
  687. package/payload/premium-plugins/real-agent/plugins/epc/mcp/vitest.config.ts +0 -8
  688. package/payload/premium-plugins/real-agent/plugins/listings/skills/epc-checker/SKILL.md +0 -38
@@ -1,158 +0,0 @@
1
- ---
2
- name: real-agent-property-data
3
- description: "PropertyData UK market analytics — postcode-keyed valuation, asking prices, sold prices, £/sqft baselines and growth, demand (sales + rent), yields, area risk (crime, flood), council tax, planning precedent, UPRN resolution, property-type mix, national HPI. One encrypted API key per account."
4
- tools:
5
- - name: property-data-key-register
6
- publicAllowlist: false
7
- - name: property-data-key-deregister
8
- publicAllowlist: false
9
- - name: property-data-key-list
10
- publicAllowlist: false
11
- - name: property-data-valuation-sale
12
- publicAllowlist: false
13
- - name: property-data-valuation-rent
14
- publicAllowlist: false
15
- - name: property-data-prices
16
- publicAllowlist: false
17
- - name: property-data-prices-rent
18
- publicAllowlist: false
19
- - name: property-data-sold-prices
20
- publicAllowlist: false
21
- - name: property-data-demand
22
- publicAllowlist: false
23
- - name: property-data-yields
24
- publicAllowlist: false
25
- - name: property-data-growth
26
- publicAllowlist: false
27
- - name: property-data-national-hpi
28
- publicAllowlist: false
29
- - name: property-data-prices-per-sqf
30
- publicAllowlist: false
31
- - name: property-data-sold-prices-per-sqf
32
- publicAllowlist: false
33
- - name: property-data-crime
34
- publicAllowlist: false
35
- - name: property-data-flood-risk
36
- publicAllowlist: false
37
- - name: property-data-council-tax
38
- publicAllowlist: false
39
- - name: property-data-planning-applications
40
- publicAllowlist: false
41
- - name: property-data-address-match-uprn
42
- publicAllowlist: false
43
- - name: property-data-growth-psf
44
- publicAllowlist: false
45
- - name: property-data-demand-rent
46
- publicAllowlist: false
47
- - name: property-data-property-types
48
- publicAllowlist: false
49
- skills:
50
- - skills/property-data/SKILL.md
51
- always: false
52
- metadata: {"platform":{"optional":true,"embed":["admin"]}}
53
- mcp:
54
- command: node
55
- args:
56
- - ${PLATFORM_ROOT}/lib/mcp-spawn-tee/dist/index.js
57
- - ${PREMIUM_PLUGINS_ROOT}/real-agent/plugins/property-data/mcp/dist/index.js
58
- env:
59
- MCP_SPAWN_TEE_NAME: property-data
60
- LOG_DIR: ${LOG_DIR}
61
- PLATFORM_ROOT: ${PLATFORM_ROOT}
62
- ACCOUNT_ID: ${ACCOUNT_ID}
63
- SESSION_ID: ${SESSION_ID}
64
- ---
65
-
66
- # Real Agent — PropertyData
67
-
68
- Local stdio MCP that proxies the PropertyData UK market-analytics HTTP API (propertydata.co.uk). Postcode-keyed analytics powering valuer + negotiator workflows: comparable evidence, asking-price baselines, sold-price history, demand index, rental yield, growth signals, and the national house-price index.
69
-
70
- ## Capabilities
71
-
72
- - **Key management** — register, deregister, and list a single PropertyData API key per account. AES-256-GCM encrypted at rest in Neo4j under the `PropertyDataKey` label.
73
- - **Valuation** — point-estimate sale and rent valuations from postcode + property attributes (`valuation-sale`, `valuation-rent`).
74
- - **Asking-price baselines** — live mean / median / 80th-percentile asking prices for sale and rent in a postcode (`prices`, `prices-rent`).
75
- - **Sold-price history** — Land Registry sold transactions filtered by postcode, property type, and age (`sold-prices`).
76
- - **Demand index** — number of properties currently for sale vs. average days to sell-STC for a postcode (`demand`).
77
- - **Rental yield** — gross yield estimates by postcode and bedroom count (`yields`).
78
- - **Growth signals** — short and long-term price growth by postcode (`growth`).
79
- - **National house-price index** — UK-wide HPI series (`national-hpi`).
80
- - **£/sqft baselines** — asking and achieved £/sqft distributions for a postcode (`prices-per-sqf`, `sold-prices-per-sqf`), plus a 7-year £/sqft growth series with year-on-year percent change (`growth-psf`).
81
- - **Area risk** — recent crime statistics with breakdown by type (`crime`); river and sea flood-risk rating for a full postcode (`flood-risk`).
82
- - **Cost of occupancy** — council-tax authority, rating, and per-band charges (`council-tax`).
83
- - **Planning precedent** — planning applications near a postcode with references, proposals, decisions, appeals, distance (`planning-applications`). Costs 2 credits per call; upstream-throttled to ~4 calls / 10 s.
84
- - **Address resolution** — full address → UPRN, classification, lat/lng (`address-match-uprn`). Costs 10 credits per call — call once per address you actually need to resolve.
85
- - **Rental demand signals** — for-rent count, lets per month, turnover, months of inventory, days on market, rating (`demand-rent`).
86
- - **Property-type mix** — output-area distribution by property class (`property-types`).
87
-
88
- ## Security
89
-
90
- The PropertyData API key is encrypted at rest with AES-256-GCM. The encryption-key file lives at `~/<configDir>/.property-data-encryption-key` (platform mode) or `~/.claude/.realagent-property-data-encryption-key` (standalone mode), both with mode `0600`. Never include the key value in responses; identify the key by registration timestamp only. If the operator asks for the key value, explain that keys are encrypted and cannot be retrieved — they must be re-registered from the PropertyData dashboard.
91
-
92
- ## Standalone mode (`~/.claude/` spawn)
93
-
94
- The same `mcp/dist/index.js` boots in two environments, selected by env flag:
95
-
96
- | Env var | Platform mode | Standalone mode |
97
- |---|---|---|
98
- | `PROPERTY_DATA_STANDALONE` | unset | `"1"` |
99
- | `ACCOUNT_ID` | platform tenant id | absent (defaults to `"local"`) |
100
- | `NEO4J_URI` etc. | required | unused |
101
- | `PROPERTY_DATA_API_KEY` | unused | optional one-shot bypass (skips the store entirely) |
102
-
103
- In standalone mode keys live at `~/.claude/.realagent-property-data-key.enc`. See `.docs/realagent-mcps-standalone-mode.md` for the full contract.
104
-
105
- ## When to use these tools
106
-
107
- ### Pillar 1 — Comparable evidence for valuation
108
-
109
- **Triggers** — operator says "comps for", "sold prices around", "what's gone for", "comparable evidence":
110
- - `property-data-sold-prices` — Land Registry sold prices for the postcode
111
-
112
- ### Pillar 2 — Asking-price baselines and point valuations
113
-
114
- **Triggers** — operator says "what's it worth", "asking prices in", "point estimate", "ballpark":
115
- - `property-data-valuation-sale` — point sale estimate for postcode + attributes
116
- - `property-data-valuation-rent` — point rent estimate
117
- - `property-data-prices` — distribution of asking prices for sale
118
- - `property-data-prices-rent` — distribution of asking prices for rent
119
-
120
- ### Pillar 3 — Demand + yield + growth (negotiation signals)
121
-
122
- **Triggers** — operator says "demand in", "yield on", "growth", "is the market moving":
123
- - `property-data-demand` — supply count + average days to sell-STC
124
- - `property-data-demand-rent` — for-rent count, lets per month, months of inventory, days on market
125
- - `property-data-yields` — gross rental yield by bedroom count
126
- - `property-data-growth` — short and long-term price growth
127
- - `property-data-growth-psf` — 7-year £/sqft series with YoY%
128
- - `property-data-national-hpi` — national HPI context
129
-
130
- ### Pillar 4 — £/sqft baselines
131
-
132
- **Triggers** — operator says "psf in", "price per square foot in", "£/sqft":
133
- - `property-data-prices-per-sqf` — asking £/sqft distribution
134
- - `property-data-sold-prices-per-sqf` — achieved £/sqft distribution
135
-
136
- ### Pillar 5 — Area risk + cost of occupancy + planning + UPRN + mix
137
-
138
- **Triggers** — operator says "crime in", "flood risk for", "council tax band for", "planning applications near", "what's the UPRN of", "property-type mix in":
139
- - `property-data-crime` — area-risk crime stats
140
- - `property-data-flood-risk` — river/sea flood rating (full postcode only)
141
- - `property-data-council-tax` — council, rating, A–H bands (full postcode only)
142
- - `property-data-planning-applications` — planning precedent (2 credits/call, upstream-throttled)
143
- - `property-data-address-match-uprn` — full address → UPRN (10 credits/call)
144
- - `property-data-property-types` — output-area type distribution
145
-
146
- ### Key prerequisite
147
-
148
- Every PropertyData tool requires a registered key. If `property-data-key-list` returns nothing for the account, surface the registration prompt before attempting any other call — every downstream tool will return `status=key-missing` otherwise.
149
-
150
- ## Tool error envelope
151
-
152
- Every tool returns either the PropertyData `data` payload as JSON text or an `isError: true` envelope with deterministic text shape:
153
-
154
- - `Error: key-not-registered. Register a PropertyData API key with property-data-key-register before calling this tool.`
155
- - `Error: http-<status> from PropertyData. <message>`
156
- - `Error: bad-response from PropertyData (non-JSON, length=<n>).`
157
-
158
- Operators see the reason directly; downstream skills branch on the prefix.
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -1,236 +0,0 @@
1
- // Logging-tee was a platform-wrapper concern: the platform's mcp-spawn-tee
2
- // pipes our stderr where it wants. In standalone mode (Claude Code native
3
- // spawn) the host owns the stderr pipe. Either way, we just write to stderr.
4
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
- import { z } from "zod";
7
- import { keyRegister } from "./tools/key-register.js";
8
- import { keyDeregister } from "./tools/key-deregister.js";
9
- import { keyList } from "./tools/key-list.js";
10
- import { valuationSale, valuationRent, prices, pricesRent, soldPrices, demand, yields, growth, nationalHpi, pricesPerSqf, soldPricesPerSqf, crime, floodRisk, councilTax, planningApplications, addressMatchUprn, growthPsf, demandRent, propertyTypes, } from "./tools/endpoints.js";
11
- import { closeDriver } from "./lib/neo4j.js";
12
- import { KeyNotRegisteredError, PropertyDataError, BadResponseError, } from "./lib/propertydata-api.js";
13
- import { selectKeyStore } from "./lib/key-store.js";
14
- // ACCOUNT_ID is the platform's tenant id; in standalone mode (Claude Code
15
- // native spawn) there is no platform tenant, so "local" is the single-tenant
16
- // stand-in. Same MCP body, env-selected backend.
17
- const accountId = process.env.ACCOUNT_ID ?? "local";
18
- const server = new McpServer({
19
- name: "maxy-property-data",
20
- version: "0.1.0",
21
- });
22
- const store = selectKeyStore();
23
- console.error(`[property-data] server started, account=${accountId} backend=${store.backendName} path=${store.backendPath}`);
24
- function errorEnvelope(err) {
25
- let text;
26
- if (err instanceof KeyNotRegisteredError) {
27
- text =
28
- "Error: key-not-registered. Register a PropertyData API key with property-data-key-register before calling this tool.";
29
- }
30
- else if (err instanceof PropertyDataError) {
31
- text = `Error: http-${err.status} from PropertyData. ${err.upstreamMessage}`;
32
- }
33
- else if (err instanceof BadResponseError) {
34
- text = `Error: bad-response from PropertyData (non-JSON, length=${err.length}).`;
35
- }
36
- else {
37
- text = `Error: ${err instanceof Error ? err.message : String(err)}`;
38
- }
39
- return { content: [{ type: "text", text }], isError: true };
40
- }
41
- function endpointHandler(fn) {
42
- return async (params) => {
43
- try {
44
- const text = await fn({ ...params, accountId });
45
- return { content: [{ type: "text", text }] };
46
- }
47
- catch (err) {
48
- return errorEnvelope(err);
49
- }
50
- };
51
- }
52
- // ─────────────────────────────────────────────────────────────────
53
- // Key Management
54
- // ─────────────────────────────────────────────────────────────────
55
- server.tool("property-data-key-register", "Register the account's PropertyData API key. Validates the key against PropertyData's /national-hpi endpoint, encrypts it with AES-256-GCM, and stores it in Neo4j. One key per account; re-registering overwrites the existing key.", {
56
- apiKey: z.string().min(8).describe("PropertyData API key from propertydata.co.uk dashboard"),
57
- }, async ({ apiKey }) => {
58
- try {
59
- await keyRegister({ apiKey, accountId });
60
- return {
61
- content: [
62
- {
63
- type: "text",
64
- text: "PropertyData API key registered successfully.",
65
- },
66
- ],
67
- };
68
- }
69
- catch (err) {
70
- return errorEnvelope(err);
71
- }
72
- });
73
- server.tool("property-data-key-deregister", "Remove the account's PropertyData API key. The encrypted key is permanently deleted from Neo4j.", {}, async () => {
74
- try {
75
- await keyDeregister({ accountId });
76
- return {
77
- content: [{ type: "text", text: "PropertyData API key deregistered." }],
78
- };
79
- }
80
- catch (err) {
81
- return errorEnvelope(err);
82
- }
83
- });
84
- server.tool("property-data-key-list", "Show whether a PropertyData API key is registered for this account. Never reveals the key value.", {}, async () => {
85
- try {
86
- const text = await keyList({ accountId });
87
- return { content: [{ type: "text", text }] };
88
- }
89
- catch (err) {
90
- return errorEnvelope(err);
91
- }
92
- });
93
- // ─────────────────────────────────────────────────────────────────
94
- // Valuation endpoints
95
- // ─────────────────────────────────────────────────────────────────
96
- const valuationSchema = {
97
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
98
- type: z
99
- .enum(["detached", "semi-detached", "terraced", "flat"])
100
- .describe("Property type"),
101
- bedrooms: z.number().int().min(0).describe("Bedroom count"),
102
- bathrooms: z.number().int().min(0).optional().describe("Bathroom count"),
103
- internal_area: z.number().optional().describe("Internal area (sq ft)"),
104
- construction_date: z.string().optional().describe("Construction date band (e.g. 'pre1900', '1900-1929')"),
105
- finish_quality: z
106
- .enum(["luxury", "above_average", "average", "below_average", "needs_modernisation"])
107
- .optional()
108
- .describe("Finish quality"),
109
- };
110
- server.tool("property-data-valuation-sale", "Point sale-price estimate for a property given postcode + attributes. Returns point estimate plus comparables.", valuationSchema, endpointHandler(valuationSale));
111
- server.tool("property-data-valuation-rent", "Point rent estimate (PCM) for a property given postcode + attributes. Returns point estimate plus comparables.", valuationSchema, endpointHandler(valuationRent));
112
- // ─────────────────────────────────────────────────────────────────
113
- // Asking-price distributions
114
- // ─────────────────────────────────────────────────────────────────
115
- const pricesSchema = {
116
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
117
- type: z
118
- .enum(["detached", "semi-detached", "terraced", "flat"])
119
- .optional()
120
- .describe("Filter by property type"),
121
- bedrooms: z.number().int().min(0).optional().describe("Filter by bedroom count"),
122
- };
123
- server.tool("property-data-prices", "Asking-price distribution for sale listings in a postcode — mean, median, 80th percentile.", pricesSchema, endpointHandler(prices));
124
- server.tool("property-data-prices-rent", "Asking-price distribution for rental listings in a postcode — mean, median, 80th percentile (PCM).", pricesSchema, endpointHandler(pricesRent));
125
- // ─────────────────────────────────────────────────────────────────
126
- // Sold prices (Land Registry)
127
- // ─────────────────────────────────────────────────────────────────
128
- server.tool("property-data-sold-prices", "Land Registry sold transactions for a postcode, optionally filtered by age, type, and bedrooms.", {
129
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
130
- max_age: z.number().int().min(1).optional().describe("Max transaction age in months"),
131
- type: z
132
- .enum(["detached", "semi-detached", "terraced", "flat"])
133
- .optional()
134
- .describe("Filter by property type"),
135
- bedrooms: z.number().int().min(0).optional().describe("Filter by bedroom count"),
136
- }, endpointHandler(soldPrices));
137
- // ─────────────────────────────────────────────────────────────────
138
- // Demand / yields / growth / national HPI
139
- // ─────────────────────────────────────────────────────────────────
140
- server.tool("property-data-demand", "Demand signals for a postcode — count of properties for sale and average days to sell-STC.", { postcode: z.string().min(2).describe("UK postcode (outcode or full)") }, endpointHandler(demand));
141
- server.tool("property-data-yields", "Gross rental yield for a postcode and bedroom count.", {
142
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
143
- bedrooms: z.number().int().min(0).describe("Bedroom count"),
144
- }, endpointHandler(yields));
145
- server.tool("property-data-growth", "Short-term and long-term price growth signals for a postcode.", { postcode: z.string().min(2).describe("UK postcode (outcode or full)") }, endpointHandler(growth));
146
- server.tool("property-data-national-hpi", "UK national house-price index series. No postcode required.", {}, endpointHandler(nationalHpi));
147
- // ─────────────────────────────────────────────────────────────────
148
- // Task 144 — £/sqft baselines and growth
149
- // ─────────────────────────────────────────────────────────────────
150
- const pricesPerSqfSchema = {
151
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
152
- type: z
153
- .enum(["detached", "semi-detached", "terraced", "flat"])
154
- .optional()
155
- .describe("Filter by property type"),
156
- bedrooms: z.number().int().min(0).optional().describe("Filter by bedroom count"),
157
- };
158
- server.tool("property-data-prices-per-sqf", "Asking £/sqft distribution for sale listings in a postcode — avg plus 70/80/90/100% percentile ranges, with the raw listings that have square-foot data. Use for the asking £/sqft KPI on a market report. Costs 1 credit per call.", pricesPerSqfSchema, endpointHandler(pricesPerSqf));
159
- server.tool("property-data-sold-prices-per-sqf", "Land Registry sold £/sqft distribution for a postcode — avg plus percentile ranges, up to 20 raw sales with square-foot data and a sales-window date range. Use for the achieved £/sqft KPI. Costs 1 credit per call.", {
160
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
161
- type: z
162
- .enum(["detached", "semi-detached", "terraced", "flat"])
163
- .optional()
164
- .describe("Filter by property type"),
165
- bedrooms: z.number().int().min(0).optional().describe("Filter by bedroom count"),
166
- max_age: z.number().int().min(1).optional().describe("Max transaction age in months"),
167
- }, endpointHandler(soldPricesPerSqf));
168
- server.tool("property-data-growth-psf", "7-year £/sqft series with year-on-year percent change for a postcode. Use for the £/sqft growth chart on a market report. Costs 1 credit per call.", {
169
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
170
- type: z
171
- .enum(["detached", "semi-detached", "terraced", "flat"])
172
- .optional()
173
- .describe("Filter by property type"),
174
- }, endpointHandler(growthPsf));
175
- // ─────────────────────────────────────────────────────────────────
176
- // Task 144 — Area risk and cost of occupancy
177
- // ─────────────────────────────────────────────────────────────────
178
- server.tool("property-data-crime", "Recent crime statistics for a postcode (or location / town) — per-1,000 rate, 12-month total, breakdown by crime type, and per-month observations. Use for the area-risk pillar. Costs 1 credit per call.", {
179
- postcode: z.string().min(2).optional().describe("UK postcode (outcode or full)"),
180
- location: z
181
- .string()
182
- .optional()
183
- .describe("Latitude,longitude pair (e.g. '51.5074,-0.1278'). Alternative to postcode."),
184
- town: z.string().optional().describe("UK town name. Alternative to postcode."),
185
- }, endpointHandler(crime));
186
- server.tool("property-data-flood-risk", "River and sea flood-risk rating for a full UK postcode. Use for area-risk reporting and lender-ready disclosures. Requires a full postcode (not outcode). Costs 1 credit per call.", {
187
- postcode: z.string().min(5).describe("Full UK postcode (not outcode)"),
188
- }, endpointHandler(floodRisk));
189
- server.tool("property-data-council-tax", "Council-tax authority, rating, and per-band charges (A–H) for a full UK postcode, plus any per-property bands the API returns. Use for cost-of-occupancy disclosures. Requires a full postcode. Costs 1 credit per call.", {
190
- postcode: z.string().min(5).describe("Full UK postcode (not outcode)"),
191
- }, endpointHandler(councilTax));
192
- // ─────────────────────────────────────────────────────────────────
193
- // Task 144 — Planning precedent and address resolution
194
- // ─────────────────────────────────────────────────────────────────
195
- server.tool("property-data-planning-applications", "Planning applications within a radius of a postcode — references, proposals, decisions, appeals, distance. Use for development precedent and pre-purchase risk. Costs 2 credits per call. Throttled to ~4 calls per 10 seconds upstream — wrap in the preval skill for fan-out, do not loop directly.", {
196
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
197
- decision_rating: z
198
- .enum(["positive", "neutral", "negative"])
199
- .optional()
200
- .describe("Filter by decision sentiment"),
201
- category: z.string().optional().describe("PropertyData planning category filter"),
202
- max_age_decision: z
203
- .number()
204
- .int()
205
- .min(1)
206
- .optional()
207
- .describe("Max age of decision in months"),
208
- results: z.number().int().min(1).max(100).optional().describe("Max results to return"),
209
- }, endpointHandler(planningApplications));
210
- server.tool("property-data-address-match-uprn", "Resolve a full UK address string to its UPRN, address classification, and lat/lng. Use for CRM hygiene and unique-property identification. Costs 10 credits per call — do not fan out blindly; call once per address you actually need to resolve.", {
211
- address: z.string().min(5).describe("Full UK address (line one + postcode)"),
212
- }, endpointHandler(addressMatchUprn));
213
- // ─────────────────────────────────────────────────────────────────
214
- // Task 144 — Rental demand and property-type mix
215
- // ─────────────────────────────────────────────────────────────────
216
- server.tool("property-data-demand-rent", "Rental demand signals for a postcode — for-rent count, lets per month, turnover percent, months of inventory, days on market, and a rating. Use for the rental pillar on a market report. Costs 1 credit per call.", {
217
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
218
- bedrooms: z.number().int().min(0).optional().describe("Filter by bedroom count"),
219
- type: z
220
- .enum(["detached", "semi-detached", "terraced", "flat"])
221
- .optional()
222
- .describe("Filter by property type"),
223
- }, endpointHandler(demandRent));
224
- server.tool("property-data-property-types", "Output-area property-type distribution (percent by class — detached, semi-detached, terraced, flat) for a postcode. Use for the property-type mix doughnut on a market report. Costs 1 credit per call.", {
225
- postcode: z.string().min(2).describe("UK postcode (outcode or full)"),
226
- }, endpointHandler(propertyTypes));
227
- // ─────────────────────────────────────────────────────────────────
228
- // Lifecycle
229
- // ─────────────────────────────────────────────────────────────────
230
- process.on("SIGINT", async () => {
231
- await closeDriver();
232
- process.exit(0);
233
- });
234
- const transport = new StdioServerTransport();
235
- await server.connect(transport);
236
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function encrypt(plaintext: string): string;
2
- export declare function decrypt(encryptedValue: string): string;
3
- //# sourceMappingURL=crypto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/lib/crypto.ts"],"names":[],"mappings":"AAgDA,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,wBAAgB,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAoBtD"}
@@ -1,72 +0,0 @@
1
- import { randomBytes, createCipheriv, createDecipheriv } from "node:crypto";
2
- import { readFileSync, writeFileSync, existsSync } from "node:fs";
3
- import { resolve } from "node:path";
4
- import { homedir } from "node:os";
5
- const ALGORITHM = "aes-256-gcm";
6
- const KEY_LENGTH = 32;
7
- const IV_LENGTH = 12;
8
- const AUTH_TAG_LENGTH = 16;
9
- const KEY_FILE_NAME = ".property-data-encryption-key";
10
- function resolveConfigDir() {
11
- try {
12
- const platformRoot = process.env.PLATFORM_ROOT;
13
- if (platformRoot) {
14
- const brandPath = resolve(platformRoot, "config/brand.json");
15
- const brand = JSON.parse(readFileSync(brandPath, "utf-8"));
16
- if (brand.configDir)
17
- return brand.configDir;
18
- }
19
- }
20
- catch {
21
- // Fall back to default
22
- }
23
- return ".maxy";
24
- }
25
- function keyFilePath() {
26
- return resolve(homedir(), resolveConfigDir(), KEY_FILE_NAME);
27
- }
28
- function loadOrGenerateKey() {
29
- const path = keyFilePath();
30
- if (existsSync(path)) {
31
- const hex = readFileSync(path, "utf-8").trim();
32
- const buf = Buffer.from(hex, "hex");
33
- if (buf.length !== KEY_LENGTH) {
34
- throw new Error(`Encryption key at ${path} is ${buf.length} bytes, expected ${KEY_LENGTH}. ` +
35
- `Delete the file and re-register the PropertyData API key.`);
36
- }
37
- return buf;
38
- }
39
- const key = randomBytes(KEY_LENGTH);
40
- writeFileSync(path, key.toString("hex"), { mode: 0o600 });
41
- console.error(`[property-data] encryption key generated at ${path}`);
42
- return key;
43
- }
44
- export function encrypt(plaintext) {
45
- const key = loadOrGenerateKey();
46
- const iv = randomBytes(IV_LENGTH);
47
- const cipher = createCipheriv(ALGORITHM, key, iv, { authTagLength: AUTH_TAG_LENGTH });
48
- let encrypted = cipher.update(plaintext, "utf-8", "hex");
49
- encrypted += cipher.final("hex");
50
- const authTag = cipher.getAuthTag().toString("hex");
51
- return `${iv.toString("hex")}:${encrypted}:${authTag}`;
52
- }
53
- export function decrypt(encryptedValue) {
54
- const parts = encryptedValue.split(":");
55
- if (parts.length !== 3) {
56
- throw new Error("Malformed encrypted value — expected iv:ciphertext:authTag");
57
- }
58
- const [ivHex, ciphertextHex, authTagHex] = parts;
59
- const path = keyFilePath();
60
- if (!existsSync(path)) {
61
- throw new Error(`Encryption key not found at ${path}. The stored PropertyData API key is unrecoverable. Re-register.`);
62
- }
63
- const key = loadOrGenerateKey();
64
- const iv = Buffer.from(ivHex, "hex");
65
- const authTag = Buffer.from(authTagHex, "hex");
66
- const decipher = createDecipheriv(ALGORITHM, key, iv, { authTagLength: AUTH_TAG_LENGTH });
67
- decipher.setAuthTag(authTag);
68
- let decrypted = decipher.update(ciphertextHex, "hex", "utf-8");
69
- decrypted += decipher.final("utf-8");
70
- return decrypted;
71
- }
72
- //# sourceMappingURL=crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/lib/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,SAAS,GAAG,aAAa,CAAC;AAChC,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,aAAa,GAAG,+BAA+B,CAAC;AAEtD,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC/C,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,OAAO,GAAG,CAAC,MAAM,oBAAoB,UAAU,IAAI;gBAC1E,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACpC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,SAAiB;IACvC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC;IACtF,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzD,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,cAAsB;IAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,kEAAkE,CACtG,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC;IAC1F,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/D,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function encryptWith(plaintext: string, keyFilePath: string, label: string): string;
2
- export declare function decryptWith(encryptedValue: string, keyFilePath: string, label: string): string;
3
- //# sourceMappingURL=file-crypto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-crypto.d.ts","sourceRoot":"","sources":["../../src/lib/file-crypto.ts"],"names":[],"mappings":"AA8BA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQzF;AAED,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAc9F"}
@@ -1,49 +0,0 @@
1
- import { randomBytes, createCipheriv, createDecipheriv } from "node:crypto";
2
- import { readFileSync, writeFileSync, existsSync } from "node:fs";
3
- // Standalone-mode crypto. Same AES-256-GCM envelope as crypto.ts, but the
4
- // encryption-key file path is passed in (not derived from PLATFORM_ROOT /
5
- // brand.json), so it can live under ~/.claude/ when the MCP is spawned by
6
- // Claude Code natively.
7
- const ALGORITHM = "aes-256-gcm";
8
- const KEY_LENGTH = 32;
9
- const IV_LENGTH = 12;
10
- const AUTH_TAG_LENGTH = 16;
11
- function loadOrGenerateKey(keyFilePath, label) {
12
- if (existsSync(keyFilePath)) {
13
- const hex = readFileSync(keyFilePath, "utf-8").trim();
14
- const buf = Buffer.from(hex, "hex");
15
- if (buf.length !== KEY_LENGTH) {
16
- throw new Error(`[${label}] encryption key at ${keyFilePath} is ${buf.length} bytes, expected ${KEY_LENGTH}.`);
17
- }
18
- return buf;
19
- }
20
- const key = randomBytes(KEY_LENGTH);
21
- writeFileSync(keyFilePath, key.toString("hex"), { mode: 0o600 });
22
- console.error(`[${label}] encryption key generated at ${keyFilePath}`);
23
- return key;
24
- }
25
- export function encryptWith(plaintext, keyFilePath, label) {
26
- const key = loadOrGenerateKey(keyFilePath, label);
27
- const iv = randomBytes(IV_LENGTH);
28
- const cipher = createCipheriv(ALGORITHM, key, iv, { authTagLength: AUTH_TAG_LENGTH });
29
- let encrypted = cipher.update(plaintext, "utf-8", "hex");
30
- encrypted += cipher.final("hex");
31
- const authTag = cipher.getAuthTag().toString("hex");
32
- return `${iv.toString("hex")}:${encrypted}:${authTag}`;
33
- }
34
- export function decryptWith(encryptedValue, keyFilePath, label) {
35
- const parts = encryptedValue.split(":");
36
- if (parts.length !== 3) {
37
- throw new Error(`[${label}] bad encrypted envelope (expected iv:ct:tag)`);
38
- }
39
- const key = loadOrGenerateKey(keyFilePath, label);
40
- const iv = Buffer.from(parts[0], "hex");
41
- const ciphertext = parts[1];
42
- const authTag = Buffer.from(parts[2], "hex");
43
- const decipher = createDecipheriv(ALGORITHM, key, iv, { authTagLength: AUTH_TAG_LENGTH });
44
- decipher.setAuthTag(authTag);
45
- let plaintext = decipher.update(ciphertext, "hex", "utf-8");
46
- plaintext += decipher.final("utf-8");
47
- return plaintext;
48
- }
49
- //# sourceMappingURL=file-crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-crypto.js","sourceRoot":"","sources":["../../src/lib/file-crypto.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export interface StoredKey {
2
- apiKey: string;
3
- createdAt: string;
4
- updatedAt: string;
5
- }
6
- export interface KeyStore {
7
- readonly backendName: string;
8
- readonly backendPath: string;
9
- load(accountId: string): Promise<StoredKey | null>;
10
- save(accountId: string, apiKey: string): Promise<void>;
11
- delete(accountId: string): Promise<boolean>;
12
- }
13
- export declare function selectKeyStore(): KeyStore;
14
- export declare function _resetKeyStoreForTests(): void;
15
- //# sourceMappingURL=key-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"key-store.d.ts","sourceRoot":"","sources":["../../src/lib/key-store.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C;AAmJD,wBAAgB,cAAc,IAAI,QAAQ,CAIzC;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}