@rubytech/create-maxy-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 (689) 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/telegram/PLUGIN.md +3 -0
  100. package/payload/platform/plugins/waitlist/PLUGIN.md +7 -0
  101. package/payload/platform/plugins/whatsapp/PLUGIN.md +12 -0
  102. package/payload/platform/plugins/workflows/PLUGIN.md +8 -0
  103. package/payload/platform/services/claude-session-manager/dist/index.js +43 -1
  104. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  105. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +33 -0
  106. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  107. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +214 -59
  108. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  109. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +23 -0
  110. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -0
  111. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +141 -0
  112. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -0
  113. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +13 -2
  114. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
  115. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +150 -37
  116. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
  117. package/payload/platform/services/claude-session-manager/dist/types.d.ts +5 -0
  118. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
  119. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  120. package/payload/premium-plugins/real-agent/BUNDLE.md +2 -4
  121. package/payload/premium-plugins/real-agent/agents/compliance.md +1 -1
  122. package/payload/premium-plugins/real-agent/agents/valuer.md +1 -2
  123. package/payload/premium-plugins/real-agent/plugins/epc/.claude-plugin/plugin.json +3 -3
  124. package/payload/premium-plugins/real-agent/plugins/listings/.claude-plugin/plugin.json +1 -1
  125. package/payload/premium-plugins/real-agent/plugins/listings/PLUGIN.md +1 -3
  126. package/payload/premium-plugins/real-agent/plugins/listings/skills/new-instruction/SKILL.md +11 -12
  127. package/payload/premium-plugins/real-agent/plugins/loop/PLUGIN.md +27 -0
  128. package/payload/premium-plugins/real-agent/plugins/preval/.claude-plugin/plugin.json +1 -1
  129. package/payload/premium-plugins/real-agent/plugins/preval/PLUGIN.md +16 -8
  130. package/payload/premium-plugins/real-agent/plugins/preval/hooks/preval-prompt-required.sh +140 -0
  131. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/SKILL.md +92 -40
  132. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/__tests__/adherence.test.py +373 -0
  133. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/render.py +299 -115
  134. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template-inputs.schema.json +34 -19
  135. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template.html +88 -19
  136. package/payload/premium-plugins/real-agent/plugins/property-data/PLUGIN.md +22 -0
  137. package/payload/premium-plugins/real-agent/specs/03-new-instruction.md +8 -12
  138. package/payload/server/{chunk-2IKQERHN.js → chunk-S6PQA6Q4.js} +43 -34
  139. package/payload/server/maxy-edge.js +1 -1
  140. package/payload/server/public/assets/{admin-DhN3G8W7.js → admin-ymReS1mN.js} +1 -1
  141. package/payload/server/public/assets/{data-B2ZVXOcE.js → data-D6U2e85B.js} +1 -1
  142. package/payload/server/public/assets/{graph-BAMGPHrK.js → graph-C274PN27.js} +1 -1
  143. package/payload/server/public/assets/{graph-labels-D9eBbvxo.js → graph-labels-DQFzd1FY.js} +1 -1
  144. package/payload/server/public/assets/{page-DjdVMWCz.js → page-D-OLjort.js} +1 -1
  145. package/payload/server/public/assets/{page-CV27Al6Z.js → page-DFFt9_Q0.js} +1 -1
  146. package/payload/server/public/data.html +3 -3
  147. package/payload/server/public/graph.html +3 -3
  148. package/payload/server/public/index.html +4 -4
  149. package/payload/server/server.js +2 -2
  150. package/payload/platform/plugins/brochures/.claude-plugin/plugin.json +0 -8
  151. package/payload/platform/plugins/brochures/PLUGIN.md +0 -38
  152. package/payload/platform/plugins/brochures/commands/make-brochure.md +0 -11
  153. package/payload/platform/plugins/brochures/skills/a4-print-documents/SKILL.md +0 -478
  154. package/payload/platform/plugins/brochures/skills/brand-design/SKILL.md +0 -192
  155. package/payload/platform/plugins/brochures/skills/make-brochure/SKILL.md +0 -354
  156. package/payload/platform/plugins/brochures/skills/make-brochure/references/seller-brief-template.md +0 -115
  157. package/payload/platform/plugins/brochures/skills/property-brochure/SKILL.md +0 -142
  158. package/payload/platform/plugins/brochures/skills/property-brochure/references/build.md +0 -270
  159. package/payload/platform/plugins/brochures/skills/property-brochure/references/copy.md +0 -211
  160. package/payload/platform/plugins/brochures/skills/property-brochure/references/images.md +0 -166
  161. package/payload/platform/plugins/brochures/skills/property-brochure/references/index-landing.md +0 -376
  162. package/payload/platform/plugins/brochures/skills/property-brochure/references/index.html +0 -1288
  163. package/payload/platform/plugins/brochures/skills/property-brochure/references/placeholders.md +0 -250
  164. package/payload/platform/plugins/brochures/skills/property-brochure/references/registers.md +0 -47
  165. package/payload/platform/plugins/brochures/skills/property-brochure/references/seller-brief.md +0 -56
  166. package/payload/platform/plugins/brochures/skills/property-brochure/references/structure.md +0 -249
  167. package/payload/platform/plugins/brochures/skills/property-brochure/references/template.html +0 -2370
  168. package/payload/platform/plugins/brochures/skills/property-extract/SKILL.md +0 -372
  169. package/payload/platform/plugins/brochures/skills/property-market-report/SKILL.md +0 -100
  170. package/payload/platform/plugins/brochures/skills/property-market-report/references/render.py +0 -267
  171. package/payload/platform/plugins/brochures/skills/property-market-report/references/template.html +0 -266
  172. package/payload/platform/plugins/brochures/skills/property-socials/SKILL.md +0 -141
  173. package/payload/platform/plugins/buyers/.claude-plugin/plugin.json +0 -8
  174. package/payload/platform/plugins/buyers/PLUGIN.md +0 -34
  175. package/payload/platform/plugins/buyers/skills/buyer-feedback/SKILL.md +0 -109
  176. package/payload/platform/plugins/buyers/skills/buyer-management/SKILL.md +0 -42
  177. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification-questions.md +0 -16
  178. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification.md +0 -59
  179. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-scripts.md +0 -63
  180. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-working-scripts.md +0 -54
  181. package/payload/platform/plugins/buyers/skills/buyer-management/references/feedback-collection.md +0 -42
  182. package/payload/platform/plugins/buyers/skills/buyer-management/references/offer-capture.md +0 -38
  183. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-booking.md +0 -32
  184. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-management.md +0 -52
  185. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/SKILL.md +0 -407
  186. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/care-fees-guide.md +0 -68
  187. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/divorce-sales-guide.md +0 -61
  188. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/downsizing-guide.md +0 -45
  189. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-buyers.md +0 -92
  190. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-sellers.md +0 -78
  191. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/probate-guide.md +0 -53
  192. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/upsizing-guide.md +0 -41
  193. package/payload/platform/plugins/buyers/skills/property-enquiry/SKILL.md +0 -126
  194. package/payload/platform/plugins/buyers/skills/viewing-management/SKILL.md +0 -111
  195. package/payload/platform/plugins/epc/.claude-plugin/plugin.json +0 -17
  196. package/payload/platform/plugins/epc/PLUGIN.md +0 -85
  197. package/payload/platform/plugins/epc/mcp/dist/index.d.ts +0 -2
  198. package/payload/platform/plugins/epc/mcp/dist/index.d.ts.map +0 -1
  199. package/payload/platform/plugins/epc/mcp/dist/index.js +0 -117
  200. package/payload/platform/plugins/epc/mcp/dist/index.js.map +0 -1
  201. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts +0 -3
  202. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts.map +0 -1
  203. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js +0 -72
  204. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js.map +0 -1
  205. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts +0 -60
  206. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts.map +0 -1
  207. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js +0 -181
  208. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js.map +0 -1
  209. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts +0 -3
  210. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  211. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js +0 -49
  212. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js.map +0 -1
  213. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts +0 -15
  214. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts.map +0 -1
  215. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js +0 -130
  216. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js.map +0 -1
  217. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts +0 -5
  218. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts.map +0 -1
  219. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js +0 -38
  220. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js.map +0 -1
  221. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts +0 -4
  222. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  223. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js +0 -9
  224. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js.map +0 -1
  225. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts +0 -4
  226. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts.map +0 -1
  227. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js +0 -10
  228. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js.map +0 -1
  229. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts +0 -5
  230. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts.map +0 -1
  231. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js +0 -36
  232. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js.map +0 -1
  233. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts +0 -10
  234. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts.map +0 -1
  235. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js +0 -30
  236. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js.map +0 -1
  237. package/payload/platform/plugins/epc/mcp/package-lock.json +0 -2566
  238. package/payload/platform/plugins/epc/mcp/package.json +0 -21
  239. package/payload/platform/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  240. package/payload/platform/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  241. package/payload/platform/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  242. package/payload/platform/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  243. package/payload/platform/plugins/epc/mcp/src/index.ts +0 -156
  244. package/payload/platform/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  245. package/payload/platform/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  246. package/payload/platform/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  247. package/payload/platform/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  248. package/payload/platform/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  249. package/payload/platform/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  250. package/payload/platform/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  251. package/payload/platform/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  252. package/payload/platform/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  253. package/payload/platform/plugins/epc/mcp/tsconfig.json +0 -20
  254. package/payload/platform/plugins/epc/mcp/vitest.config.ts +0 -8
  255. package/payload/platform/plugins/estate-business/.claude-plugin/plugin.json +0 -8
  256. package/payload/platform/plugins/estate-business/PLUGIN.md +0 -64
  257. package/payload/platform/plugins/estate-business/skills/business-growth/SKILL.md +0 -133
  258. package/payload/platform/plugins/estate-business/skills/business-growth/references/buy-back-your-time.md +0 -37
  259. package/payload/platform/plugins/estate-business/skills/business-growth/references/firewave-gost-scorecards.md +0 -14
  260. package/payload/platform/plugins/estate-business/skills/business-growth/references/keller-org-model.md +0 -17
  261. package/payload/platform/plugins/estate-business/skills/business-growth/references/lencioni-team-models.md +0 -22
  262. package/payload/platform/plugins/estate-business/skills/business-growth/references/listing-management-system.md +0 -11
  263. package/payload/platform/plugins/estate-business/skills/business-growth/references/net-figure-form.md +0 -11
  264. package/payload/platform/plugins/estate-business/skills/business-growth/references/serhant-bizinbox-notes.md +0 -13
  265. package/payload/platform/plugins/estate-business/skills/business-growth/references/team-roles-commission.md +0 -14
  266. package/payload/platform/plugins/estate-business/skills/business-growth/references/va-2026-ops.md +0 -43
  267. package/payload/platform/plugins/estate-business/skills/business-growth/references/wingman-structure.md +0 -13
  268. package/payload/platform/plugins/estate-business/skills/business-operations/SKILL.md +0 -32
  269. package/payload/platform/plugins/estate-business/skills/business-operations/references/crm-systems.md +0 -57
  270. package/payload/platform/plugins/estate-business/skills/business-operations/references/hiring-guide.md +0 -59
  271. package/payload/platform/plugins/estate-business/skills/business-operations/references/impact-framework.md +0 -47
  272. package/payload/platform/plugins/estate-business/skills/business-operations/references/minutes-equal-money.md +0 -55
  273. package/payload/platform/plugins/estate-business/skills/business-operations/references/team-management.md +0 -48
  274. package/payload/platform/plugins/estate-business/skills/commission-calculator/SKILL.md +0 -40
  275. package/payload/platform/plugins/estate-business/skills/exp-partnership/SKILL.md +0 -52
  276. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/12-reasons.md +0 -39
  277. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/95-5-system.md +0 -66
  278. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/agent-attraction-scripts.md +0 -90
  279. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/business-partnership.md +0 -92
  280. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/exp-model-overview.md +0 -66
  281. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/model-comparison.md +0 -66
  282. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/revenue-share-explained.md +0 -57
  283. package/payload/platform/plugins/estate-business/skills/month-end-close/SKILL.md +0 -69
  284. package/payload/platform/plugins/estate-business/skills/payment-batch-stager/SKILL.md +0 -42
  285. package/payload/platform/plugins/estate-business/skills/period-reconciler/SKILL.md +0 -42
  286. package/payload/platform/plugins/estate-business/skills/personal-branding/SKILL.md +0 -117
  287. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent-notes.md +0 -31
  288. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent.md +0 -58
  289. package/payload/platform/plugins/estate-business/skills/personal-branding/references/authenticity-boundaries.md +0 -28
  290. package/payload/platform/plugins/estate-business/skills/personal-branding/references/become-a-brand-leader-notes.md +0 -19
  291. package/payload/platform/plugins/estate-business/skills/personal-branding/references/blast-formula.md +0 -42
  292. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-leader.md +0 -48
  293. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-strategy-system.md +0 -59
  294. package/payload/platform/plugins/estate-business/skills/personal-branding/references/content-engine.md +0 -49
  295. package/payload/platform/plugins/estate-business/skills/personal-branding/references/firewave-blast-and-blogging.md +0 -23
  296. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-content.md +0 -52
  297. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-principles.md +0 -20
  298. package/payload/platform/plugins/estate-business/skills/personal-branding/references/oversubscribed-positioning.md +0 -18
  299. package/payload/platform/plugins/estate-business/skills/personal-branding/references/platforms.md +0 -41
  300. package/payload/platform/plugins/estate-business/skills/personal-branding/references/priestley-oversubscribed.md +0 -54
  301. package/payload/platform/plugins/estate-business/skills/personal-branding/references/storeys-style-examples.md +0 -25
  302. package/payload/platform/plugins/estate-business/skills/personal-branding/references/visual-identity.md +0 -27
  303. package/payload/platform/plugins/estate-coaching/.claude-plugin/plugin.json +0 -8
  304. package/payload/platform/plugins/estate-coaching/PLUGIN.md +0 -54
  305. package/payload/platform/plugins/estate-coaching/skills/agent-performance/SKILL.md +0 -371
  306. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/atomic-habits.md +0 -52
  307. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/daily-routine-scorecard.md +0 -104
  308. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/hp6-model.md +0 -63
  309. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/twelve-week-year.md +0 -71
  310. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/SKILL.md +0 -36
  311. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/coaching-boundaries.md +0 -56
  312. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/feedback-framework.md +0 -61
  313. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/performance-framework.md +0 -109
  314. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/SKILL.md +0 -421
  315. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/coaching-exercises.md +0 -86
  316. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/goal-setting.md +0 -78
  317. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/one-to-one-framework.md +0 -92
  318. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/soi-workbook.md +0 -103
  319. package/payload/platform/plugins/estate-coaching/skills/serhant-training/SKILL.md +0 -410
  320. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/agent-training-guide.md +0 -70
  321. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/business-in-a-box.md +0 -72
  322. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/buyers-guide.md +0 -53
  323. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/codo-method.md +0 -72
  324. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/website-planning-guide.md +0 -79
  325. package/payload/platform/plugins/estate-sales/.claude-plugin/plugin.json +0 -8
  326. package/payload/platform/plugins/estate-sales/PLUGIN.md +0 -52
  327. package/payload/platform/plugins/estate-sales/skills/chase-progression/SKILL.md +0 -107
  328. package/payload/platform/plugins/estate-sales/skills/negotiation/SKILL.md +0 -35
  329. package/payload/platform/plugins/estate-sales/skills/negotiation/references/deal-saving.md +0 -47
  330. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-deep-guide.md +0 -64
  331. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-prep-principles.md +0 -29
  332. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-techniques.md +0 -42
  333. package/payload/platform/plugins/estate-sales/skills/negotiation/references/offer-presentation.md +0 -43
  334. package/payload/platform/plugins/estate-sales/skills/risk-scorer/SKILL.md +0 -42
  335. package/payload/platform/plugins/estate-sales/skills/sales-closer/SKILL.md +0 -24
  336. package/payload/platform/plugins/estate-sales/skills/sales-closer/references/serhant-emotion-stages.md +0 -36
  337. package/payload/platform/plugins/estate-sales/skills/sales-discovery/SKILL.md +0 -30
  338. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/chris-voss-discovery.md +0 -88
  339. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/firewave-gost-journey.md +0 -68
  340. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/phil-jones-openers.md +0 -78
  341. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/pre-listing-checklist.md +0 -77
  342. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/serhant-improv.md +0 -22
  343. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/tom-ferry-discovery.md +0 -103
  344. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/vendor-motivation-competitor.md +0 -52
  345. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/SKILL.md +0 -29
  346. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/chris-voss-negotiation.md +0 -70
  347. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/phil-jones-price-words.md +0 -40
  348. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/serhant-negotiation-plus.md +0 -55
  349. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tom-panos-commission-pricing.md +0 -57
  350. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tony-morris-questioning.md +0 -54
  351. package/payload/platform/plugins/estate-sales/skills/sales-progression/SKILL.md +0 -27
  352. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/conveyancing-guide.md +0 -54
  353. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/transaction-tracking.md +0 -66
  354. package/payload/platform/plugins/estate-teaching/.claude-plugin/plugin.json +0 -8
  355. package/payload/platform/plugins/estate-teaching/PLUGIN.md +0 -30
  356. package/payload/platform/plugins/estate-teaching/skills/content-directory/SKILL.md +0 -39
  357. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/module-delivery.md +0 -65
  358. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/progress-tracking.md +0 -47
  359. package/payload/platform/plugins/leads/.claude-plugin/plugin.json +0 -8
  360. package/payload/platform/plugins/leads/PLUGIN.md +0 -61
  361. package/payload/platform/plugins/leads/skills/chain-progression-tracker/SKILL.md +0 -51
  362. package/payload/platform/plugins/leads/skills/diary-builder/SKILL.md +0 -38
  363. package/payload/platform/plugins/leads/skills/enquiry-triage/SKILL.md +0 -36
  364. package/payload/platform/plugins/leads/skills/lead-nurturing/SKILL.md +0 -137
  365. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letter.md +0 -28
  366. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letters.md +0 -37
  367. package/payload/platform/plugins/leads/skills/lead-nurturing/references/database-reactivation.md +0 -30
  368. package/payload/platform/plugins/leads/skills/lead-nurturing/references/email-nurture-sequences.md +0 -45
  369. package/payload/platform/plugins/leads/skills/lead-nurturing/references/facebook-referrals.md +0 -30
  370. package/payload/platform/plugins/leads/skills/lead-nurturing/references/firewave-email-nurture-sequences.md +0 -41
  371. package/payload/platform/plugins/leads/skills/lead-nurturing/references/keller-33-touch.md +0 -34
  372. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-letters.md +0 -31
  373. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-notification-letter.md +0 -20
  374. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up-dialogue.md +0 -22
  375. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up.md +0 -26
  376. package/payload/platform/plugins/leads/skills/lead-nurturing/references/serhant-three-fs-plus.md +0 -21
  377. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sharran-10x10x10.md +0 -18
  378. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sms-templates.md +0 -40
  379. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence-notes.md +0 -34
  380. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence.md +0 -60
  381. package/payload/platform/plugins/leads/skills/lead-nurturing/references/tom-panos-sms-templates.md +0 -59
  382. package/payload/platform/plugins/leads/skills/morning-round/SKILL.md +0 -72
  383. package/payload/platform/plugins/leads/skills/prospecting/SKILL.md +0 -33
  384. package/payload/platform/plugins/leads/skills/prospecting/references/database-matching.md +0 -30
  385. package/payload/platform/plugins/leads/skills/prospecting/references/database-value.md +0 -53
  386. package/payload/platform/plugins/leads/skills/prospecting/references/prospecting-dialogues.md +0 -24
  387. package/payload/platform/plugins/leads/skills/prospecting/references/reactivation.md +0 -34
  388. package/payload/platform/plugins/listings/.claude-plugin/plugin.json +0 -8
  389. package/payload/platform/plugins/listings/PLUGIN.md +0 -102
  390. package/payload/platform/plugins/listings/skills/comparable-finder/SKILL.md +0 -52
  391. package/payload/platform/plugins/listings/skills/epc-checker/SKILL.md +0 -38
  392. package/payload/platform/plugins/listings/skills/home-preparation/SKILL.md +0 -28
  393. package/payload/platform/plugins/listings/skills/home-preparation/references/kerb-appeal.md +0 -38
  394. package/payload/platform/plugins/listings/skills/home-preparation/references/photo-day.md +0 -59
  395. package/payload/platform/plugins/listings/skills/home-preparation/references/situational-tips.md +0 -50
  396. package/payload/platform/plugins/listings/skills/home-preparation/references/staging-guide.md +0 -52
  397. package/payload/platform/plugins/listings/skills/listing-copy-writer/SKILL.md +0 -55
  398. package/payload/platform/plugins/listings/skills/listing-presentation/SKILL.md +0 -286
  399. package/payload/platform/plugins/listings/skills/listing-presentation/references/booking-script.md +0 -51
  400. package/payload/platform/plugins/listings/skills/listing-presentation/references/objection-scripts.md +0 -193
  401. package/payload/platform/plugins/listings/skills/listing-presentation/references/penhaul-presentation.md +0 -123
  402. package/payload/platform/plugins/listings/skills/listing-presentation/references/pre-listing-kit.md +0 -139
  403. package/payload/platform/plugins/listings/skills/listing-presentation/references/set-to-sell.md +0 -55
  404. package/payload/platform/plugins/listings/skills/listing-presentation/references/sharran-frameworks.md +0 -107
  405. package/payload/platform/plugins/listings/skills/local-market-stats/SKILL.md +0 -33
  406. package/payload/platform/plugins/listings/skills/new-instruction/SKILL.md +0 -78
  407. package/payload/platform/plugins/listings/skills/particulars-builder/SKILL.md +0 -48
  408. package/payload/platform/plugins/listings/skills/portal-launch-scheduler/SKILL.md +0 -49
  409. package/payload/platform/plugins/listings/skills/pricing-scenario-builder/SKILL.md +0 -35
  410. package/payload/platform/plugins/listings/skills/property-marketing/SKILL.md +0 -337
  411. package/payload/platform/plugins/listings/skills/property-marketing/references/auction-report-template.md +0 -41
  412. package/payload/platform/plugins/listings/skills/property-marketing/references/coming-soon-campaign.md +0 -43
  413. package/payload/platform/plugins/listings/skills/property-marketing/references/direct-mail-templates.md +0 -121
  414. package/payload/platform/plugins/listings/skills/property-marketing/references/eoi-form-template.md +0 -62
  415. package/payload/platform/plugins/listings/skills/property-marketing/references/monthly-scorecard.md +0 -63
  416. package/payload/platform/plugins/listings/skills/supplier-booker/SKILL.md +0 -39
  417. package/payload/platform/plugins/listings/skills/talk-track-composer/SKILL.md +0 -36
  418. package/payload/platform/plugins/listings/skills/terms-of-business-drafter/SKILL.md +0 -54
  419. package/payload/platform/plugins/listings/skills/valuation-prep/SKILL.md +0 -69
  420. package/payload/platform/plugins/loop/.claude-plugin/plugin.json +0 -17
  421. package/payload/platform/plugins/loop/PLUGIN.md +0 -233
  422. package/payload/platform/plugins/loop/mcp/dist/index.d.ts +0 -2
  423. package/payload/platform/plugins/loop/mcp/dist/index.d.ts.map +0 -1
  424. package/payload/platform/plugins/loop/mcp/dist/index.js +0 -320
  425. package/payload/platform/plugins/loop/mcp/dist/index.js.map +0 -1
  426. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts +0 -10
  427. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts.map +0 -1
  428. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js +0 -88
  429. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js.map +0 -1
  430. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts +0 -3
  431. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  432. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js +0 -48
  433. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js.map +0 -1
  434. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts +0 -22
  435. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts.map +0 -1
  436. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js +0 -165
  437. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js.map +0 -1
  438. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts +0 -82
  439. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts.map +0 -1
  440. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js +0 -392
  441. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js.map +0 -1
  442. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts +0 -5
  443. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts.map +0 -1
  444. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +0 -40
  445. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +0 -1
  446. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts +0 -12
  447. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts.map +0 -1
  448. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js +0 -22
  449. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js.map +0 -1
  450. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts +0 -10
  451. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts.map +0 -1
  452. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js +0 -24
  453. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js.map +0 -1
  454. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts +0 -16
  455. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts.map +0 -1
  456. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js +0 -35
  457. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js.map +0 -1
  458. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts +0 -5
  459. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  460. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js +0 -9
  461. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js.map +0 -1
  462. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts +0 -4
  463. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts.map +0 -1
  464. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js +0 -14
  465. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js.map +0 -1
  466. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts +0 -9
  467. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts.map +0 -1
  468. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js +0 -43
  469. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js.map +0 -1
  470. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts +0 -6
  471. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts.map +0 -1
  472. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js +0 -7
  473. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js.map +0 -1
  474. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts +0 -9
  475. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts.map +0 -1
  476. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js +0 -16
  477. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js.map +0 -1
  478. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts +0 -15
  479. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts.map +0 -1
  480. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js +0 -11
  481. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js.map +0 -1
  482. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts +0 -10
  483. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts.map +0 -1
  484. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js +0 -39
  485. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js.map +0 -1
  486. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts +0 -9
  487. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts.map +0 -1
  488. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js +0 -125
  489. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js.map +0 -1
  490. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts +0 -18
  491. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts.map +0 -1
  492. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js +0 -87
  493. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js.map +0 -1
  494. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts +0 -10
  495. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts.map +0 -1
  496. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js +0 -82
  497. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js.map +0 -1
  498. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts +0 -33
  499. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts.map +0 -1
  500. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js +0 -19
  501. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js.map +0 -1
  502. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts +0 -11
  503. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts.map +0 -1
  504. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js +0 -26
  505. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js.map +0 -1
  506. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts +0 -15
  507. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts.map +0 -1
  508. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js +0 -11
  509. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js.map +0 -1
  510. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts +0 -16
  511. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts.map +0 -1
  512. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js +0 -41
  513. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js.map +0 -1
  514. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts +0 -9
  515. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts.map +0 -1
  516. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js +0 -19
  517. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js.map +0 -1
  518. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts +0 -13
  519. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts.map +0 -1
  520. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js +0 -49
  521. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js.map +0 -1
  522. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts +0 -7
  523. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts.map +0 -1
  524. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js +0 -19
  525. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js.map +0 -1
  526. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts +0 -5
  527. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts.map +0 -1
  528. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js +0 -32
  529. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js.map +0 -1
  530. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts +0 -14
  531. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts.map +0 -1
  532. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js +0 -11
  533. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js.map +0 -1
  534. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts +0 -9
  535. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts.map +0 -1
  536. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js +0 -85
  537. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js.map +0 -1
  538. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts +0 -13
  539. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts.map +0 -1
  540. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js +0 -44
  541. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js.map +0 -1
  542. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts +0 -14
  543. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts.map +0 -1
  544. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js +0 -18
  545. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js.map +0 -1
  546. package/payload/platform/plugins/loop/mcp/package-lock.json +0 -2549
  547. package/payload/platform/plugins/loop/mcp/package.json +0 -21
  548. package/payload/platform/plugins/loop/mcp/src/__tests__/loop-swagger.snapshot.json +0 -26467
  549. package/payload/platform/plugins/loop/mcp/src/__tests__/new-tool-shape.test.ts +0 -99
  550. package/payload/platform/plugins/loop/mcp/src/__tests__/plugin-md-time-doctrine.test.ts +0 -132
  551. package/payload/platform/plugins/loop/mcp/src/__tests__/swagger-write-coverage.test.ts +0 -154
  552. package/payload/platform/plugins/loop/mcp/src/index.ts +0 -498
  553. package/payload/platform/plugins/loop/mcp/src/lib/crypto.ts +0 -105
  554. package/payload/platform/plugins/loop/mcp/src/lib/file-crypto.ts +0 -54
  555. package/payload/platform/plugins/loop/mcp/src/lib/key-store.ts +0 -221
  556. package/payload/platform/plugins/loop/mcp/src/lib/loop-api.ts +0 -567
  557. package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +0 -51
  558. package/payload/platform/plugins/loop/mcp/src/tools/auto-responder.ts +0 -80
  559. package/payload/platform/plugins/loop/mcp/src/tools/customer-preferences.ts +0 -66
  560. package/payload/platform/plugins/loop/mcp/src/tools/feedback.ts +0 -86
  561. package/payload/platform/plugins/loop/mcp/src/tools/key-deregister.ts +0 -12
  562. package/payload/platform/plugins/loop/mcp/src/tools/key-list.ts +0 -19
  563. package/payload/platform/plugins/loop/mcp/src/tools/key-register.ts +0 -70
  564. package/payload/platform/plugins/loop/mcp/src/tools/marketing-enquiry.ts +0 -27
  565. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-batch.ts +0 -53
  566. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-request.ts +0 -42
  567. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match.ts +0 -84
  568. package/payload/platform/plugins/loop/mcp/src/tools/people-detail.ts +0 -245
  569. package/payload/platform/plugins/loop/mcp/src/tools/people-search.ts +0 -180
  570. package/payload/platform/plugins/loop/mcp/src/tools/property-detail.ts +0 -145
  571. package/payload/platform/plugins/loop/mcp/src/tools/property-intent.ts +0 -84
  572. package/payload/platform/plugins/loop/mcp/src/tools/property-listed.ts +0 -81
  573. package/payload/platform/plugins/loop/mcp/src/tools/property-search.ts +0 -92
  574. package/payload/platform/plugins/loop/mcp/src/tools/property-sold.ts +0 -67
  575. package/payload/platform/plugins/loop/mcp/src/tools/supplier.ts +0 -129
  576. package/payload/platform/plugins/loop/mcp/src/tools/team-availability.ts +0 -52
  577. package/payload/platform/plugins/loop/mcp/src/tools/team-info.ts +0 -95
  578. package/payload/platform/plugins/loop/mcp/src/tools/viewing-create.ts +0 -41
  579. package/payload/platform/plugins/loop/mcp/src/tools/viewing-detail.ts +0 -171
  580. package/payload/platform/plugins/loop/mcp/src/tools/viewing-search.ts +0 -92
  581. package/payload/platform/plugins/loop/mcp/src/tools/viewing-update.ts +0 -53
  582. package/payload/platform/plugins/loop/mcp/tsconfig.json +0 -20
  583. package/payload/platform/plugins/loop/mcp/vitest.config.ts +0 -9
  584. package/payload/platform/plugins/loop/skills/compliance-flag-checker/SKILL.md +0 -53
  585. package/payload/platform/plugins/loop/skills/priority-ranker/SKILL.md +0 -40
  586. package/payload/platform/plugins/loop/skills/tone-matched-drafter/SKILL.md +0 -53
  587. package/payload/platform/plugins/loop/skills/variance-narrator/SKILL.md +0 -50
  588. package/payload/platform/plugins/loop/skills/vendor-research/SKILL.md +0 -54
  589. package/payload/platform/plugins/preval/.claude-plugin/plugin.json +0 -8
  590. package/payload/platform/plugins/preval/PLUGIN.md +0 -47
  591. package/payload/platform/plugins/preval/skills/property-preval/SKILL.md +0 -146
  592. package/payload/platform/plugins/preval/skills/property-preval/references/render.py +0 -630
  593. package/payload/platform/plugins/preval/skills/property-preval/references/template-inputs.schema.json +0 -189
  594. package/payload/platform/plugins/preval/skills/property-preval/references/template.html +0 -312
  595. package/payload/platform/plugins/property-data/.claude-plugin/plugin.json +0 -17
  596. package/payload/platform/plugins/property-data/PLUGIN.md +0 -158
  597. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts +0 -2
  598. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts.map +0 -1
  599. package/payload/platform/plugins/property-data/mcp/dist/index.js +0 -236
  600. package/payload/platform/plugins/property-data/mcp/dist/index.js.map +0 -1
  601. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts +0 -3
  602. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +0 -1
  603. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js +0 -72
  604. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js.map +0 -1
  605. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts +0 -3
  606. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  607. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js +0 -49
  608. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js.map +0 -1
  609. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts +0 -15
  610. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts.map +0 -1
  611. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js +0 -135
  612. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js.map +0 -1
  613. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts +0 -5
  614. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +0 -1
  615. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js +0 -38
  616. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js.map +0 -1
  617. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +0 -28
  618. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +0 -1
  619. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js +0 -101
  620. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +0 -1
  621. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts +0 -24
  622. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +0 -1
  623. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js +0 -33
  624. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js.map +0 -1
  625. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +0 -4
  626. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  627. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js +0 -9
  628. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js.map +0 -1
  629. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts +0 -4
  630. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +0 -1
  631. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js +0 -10
  632. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js.map +0 -1
  633. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts +0 -5
  634. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +0 -1
  635. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js +0 -50
  636. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js.map +0 -1
  637. package/payload/platform/plugins/property-data/mcp/package-lock.json +0 -2566
  638. package/payload/platform/plugins/property-data/mcp/package.json +0 -21
  639. package/payload/platform/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +0 -252
  640. package/payload/platform/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +0 -107
  641. package/payload/platform/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +0 -184
  642. package/payload/platform/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +0 -62
  643. package/payload/platform/plugins/property-data/mcp/src/index.ts +0 -409
  644. package/payload/platform/plugins/property-data/mcp/src/lib/crypto.ts +0 -79
  645. package/payload/platform/plugins/property-data/mcp/src/lib/file-crypto.ts +0 -55
  646. package/payload/platform/plugins/property-data/mcp/src/lib/key-store.ts +0 -181
  647. package/payload/platform/plugins/property-data/mcp/src/lib/neo4j.ts +0 -47
  648. package/payload/platform/plugins/property-data/mcp/src/lib/propertydata-api.ts +0 -120
  649. package/payload/platform/plugins/property-data/mcp/src/tools/endpoints.ts +0 -47
  650. package/payload/platform/plugins/property-data/mcp/src/tools/key-deregister.ts +0 -9
  651. package/payload/platform/plugins/property-data/mcp/src/tools/key-list.ts +0 -10
  652. package/payload/platform/plugins/property-data/mcp/src/tools/key-register.ts +0 -54
  653. package/payload/platform/plugins/property-data/mcp/tsconfig.json +0 -20
  654. package/payload/platform/plugins/property-data/mcp/vitest.config.ts +0 -8
  655. package/payload/platform/plugins/property-data/skills/property-data/SKILL.md +0 -77
  656. package/payload/platform/plugins/vendors/.claude-plugin/plugin.json +0 -8
  657. package/payload/platform/plugins/vendors/PLUGIN.md +0 -33
  658. package/payload/platform/plugins/vendors/skills/vendor-communication/SKILL.md +0 -42
  659. package/payload/platform/plugins/vendors/skills/vendor-communication/references/fee-protection-and-agenda.md +0 -28
  660. package/payload/platform/plugins/vendors/skills/vendor-communication/references/listing-scripts.md +0 -44
  661. package/payload/platform/plugins/vendors/skills/vendor-communication/references/negotiation-deep-guide.md +0 -70
  662. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment-scripts.md +0 -33
  663. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment.md +0 -34
  664. package/payload/platform/plugins/vendors/skills/vendor-communication/references/scenario-scripts.md +0 -38
  665. package/payload/platform/plugins/vendors/skills/vendor-communication/references/seller-engagement.md +0 -51
  666. package/payload/platform/plugins/vendors/skills/vendor-communication/references/valuation-booking.md +0 -76
  667. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-scripts.md +0 -63
  668. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-updates.md +0 -41
  669. package/payload/platform/plugins/vendors/skills/vendor-updates/SKILL.md +0 -153
  670. package/payload/premium-plugins/real-agent/plugins/epc/PLUGIN.md +0 -85
  671. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package-lock.json +0 -2566
  672. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package.json +0 -21
  673. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  674. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  675. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  676. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  677. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/index.ts +0 -156
  678. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  679. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  680. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  681. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  682. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  683. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  684. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  685. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  686. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  687. package/payload/premium-plugins/real-agent/plugins/epc/mcp/tsconfig.json +0 -20
  688. package/payload/premium-plugins/real-agent/plugins/epc/mcp/vitest.config.ts +0 -8
  689. package/payload/premium-plugins/real-agent/plugins/listings/skills/epc-checker/SKILL.md +0 -38
@@ -1,171 +0,0 @@
1
- import {
2
- aggregateAcrossTeams,
3
- formatAggregationResult,
4
- loopGet,
5
- } from "../lib/loop-api.js";
6
-
7
- // ─── Loop API V2: /residential/{dept}/viewings/{id} ────────────
8
- // Fields: id, dateCreated, dateOfAppointment, dateOfAppointmentEnd,
9
- // dateBuyerFeedbackGiven, dateSellerFeedbackGiven, dateDone,
10
- // status, type, comment, buyerFeedback, sellerFeedback,
11
- // buyerConfirmed, sellerConfirmed, agentConfirmed,
12
- // property (nested PropertySummary), buyer (nested BuyerSummary),
13
- // seller (nested SellerSummary),
14
- // attendingAgent (nested TeamMember), creatingAgent (nested TeamMember),
15
- // teamId
16
- // ────────────────────────────────────────────────────────────────
17
- interface LoopViewingDetail {
18
- id: number;
19
- dateCreated?: string;
20
- dateOfAppointment?: string;
21
- dateOfAppointmentEnd?: string;
22
- dateBuyerFeedbackGiven?: string | null;
23
- dateSellerFeedbackGiven?: string | null;
24
- dateDone?: string | null;
25
- status?: string;
26
- type?: string;
27
- comment?: string | null;
28
- buyerFeedback?: string | null;
29
- sellerFeedback?: string | null;
30
- buyerConfirmed?: boolean;
31
- sellerConfirmed?: boolean;
32
- agentConfirmed?: boolean;
33
- property?: {
34
- id: number;
35
- propertyAddress?: string;
36
- status?: string;
37
- propertyType?: string;
38
- price?: number;
39
- bedrooms?: number;
40
- [key: string]: unknown;
41
- };
42
- buyer?: {
43
- id: number;
44
- buyerGroupName?: string;
45
- maxPrice?: number | null;
46
- position?: string;
47
- viewingCount?: number;
48
- offerCount?: number;
49
- [key: string]: unknown;
50
- };
51
- seller?: {
52
- id: number;
53
- sellerGroupName?: string;
54
- propertyAddress?: string;
55
- price?: number;
56
- [key: string]: unknown;
57
- };
58
- attendingAgent?: {
59
- id: string;
60
- firstName?: string;
61
- lastName?: string;
62
- email?: string;
63
- mobilePhone?: string;
64
- jobTitle?: string;
65
- [key: string]: unknown;
66
- };
67
- creatingAgent?: {
68
- id: string;
69
- firstName?: string;
70
- lastName?: string;
71
- [key: string]: unknown;
72
- };
73
- teamId?: string;
74
- [key: string]: unknown;
75
- }
76
-
77
- type Department = "sales" | "lettings";
78
-
79
- export async function viewingDetail(params: {
80
- accountId: string;
81
- viewingId: number;
82
- department: Department;
83
- teamName?: string;
84
- }): Promise<string> {
85
- const { accountId, viewingId, department, teamName } = params;
86
-
87
- const result = await aggregateAcrossTeams<LoopViewingDetail>(
88
- accountId,
89
- "viewings",
90
- "loop-viewing-detail",
91
- async (apiKey, team) => {
92
- const path = `/residential/${department}/viewings/${viewingId}`;
93
- const data = await loopGet<LoopViewingDetail>(apiKey, path, "loop-viewing-detail", team);
94
- if (data && typeof data === "object" && !Array.isArray(data)) {
95
- return [data];
96
- }
97
- return [];
98
- },
99
- { teamName }
100
- );
101
-
102
- return formatAggregationResult(
103
- result,
104
- (v) => {
105
- const propAddr = v.property?.propertyAddress ?? "Unknown property";
106
- const lines = [`**${propAddr}** [Viewing ID: ${v.id}]`];
107
-
108
- // Appointment time
109
- if (v.dateOfAppointment) {
110
- const start = formatDateTime(v.dateOfAppointment);
111
- const end = v.dateOfAppointmentEnd ? formatDateTime(v.dateOfAppointmentEnd) : "";
112
- lines.push(`Date/Time: ${start}${end ? ` — ${end}` : ""}`);
113
- }
114
- if (v.status) lines.push(`Status: ${v.status}`);
115
- if (v.type) lines.push(`Type: ${v.type}`);
116
-
117
- // Confirmation status
118
- const confirmParts: string[] = [];
119
- if (v.buyerConfirmed != null) confirmParts.push(`Buyer: ${v.buyerConfirmed ? "yes" : "no"}`);
120
- if (v.sellerConfirmed != null) confirmParts.push(`Seller: ${v.sellerConfirmed ? "yes" : "no"}`);
121
- if (v.agentConfirmed != null) confirmParts.push(`Agent: ${v.agentConfirmed ? "yes" : "no"}`);
122
- if (confirmParts.length) lines.push(`Confirmed — ${confirmParts.join(", ")}`);
123
-
124
- // Property details
125
- if (v.property) {
126
- const prop = v.property;
127
- if (prop.price != null) lines.push(`Property price: £${prop.price.toLocaleString("en-GB")}`);
128
- if (prop.propertyType) lines.push(`Property type: ${prop.propertyType}`);
129
- if (prop.bedrooms != null) lines.push(`Bedrooms: ${prop.bedrooms}`);
130
- if (prop.id) lines.push(`Property ID: ${prop.id}`);
131
- }
132
-
133
- // Buyer
134
- if (v.buyer) {
135
- const b = v.buyer;
136
- lines.push(`\n**Buyer:** ${b.buyerGroupName ?? "Unknown"} [ID: ${b.id}]`);
137
- if (b.maxPrice != null) lines.push(` Max price: £${b.maxPrice.toLocaleString("en-GB")}`);
138
- if (b.position && b.position !== "none") lines.push(` Position: ${b.position}`);
139
- }
140
-
141
- // Seller
142
- if (v.seller) {
143
- const s = v.seller;
144
- lines.push(`\n**Seller:** ${s.sellerGroupName ?? "Unknown"} [ID: ${s.id}]`);
145
- }
146
-
147
- // Attending agent
148
- if (v.attendingAgent) {
149
- const a = v.attendingAgent;
150
- const agentName = [a.firstName, a.lastName].filter(Boolean).join(" ");
151
- const title = a.jobTitle ? ` (${a.jobTitle})` : "";
152
- const contact = a.email ?? a.mobilePhone ?? "";
153
- lines.push(`\n**Attending agent:** ${agentName}${title}${contact ? ` — ${contact}` : ""}`);
154
- }
155
-
156
- // Feedback
157
- if (v.buyerFeedback) lines.push(`\nBuyer feedback: ${v.buyerFeedback}`);
158
- if (v.sellerFeedback) lines.push(`Seller feedback: ${v.sellerFeedback}`);
159
- if (v.comment) lines.push(`Notes: ${v.comment}`);
160
-
161
- return lines.join("\n");
162
- },
163
- "viewing details"
164
- );
165
- }
166
-
167
- function formatDateTime(iso: string): string {
168
- const [datePart, timePart] = iso.split("T");
169
- if (!timePart) return datePart;
170
- return `${datePart} ${timePart.slice(0, 5)}`;
171
- }
@@ -1,92 +0,0 @@
1
- import {
2
- aggregateAcrossTeams,
3
- formatAggregationResult,
4
- loopGet,
5
- } from "../lib/loop-api.js";
6
-
7
- // ─── Loop API V2: /residential/{dept}/viewings ─────────────────
8
- // Fields: id, propertyId, propertyAddress, status,
9
- // dateOfAppointment, dateOfAppointmentEnd,
10
- // attendingAgentId, creatingAgentId, type, buyerName
11
- // ────────────────────────────────────────────────────────────────
12
- interface LoopViewingSummary {
13
- id: number;
14
- propertyId?: number;
15
- propertyAddress?: string;
16
- status?: string;
17
- dateOfAppointment?: string;
18
- dateOfAppointmentEnd?: string;
19
- attendingAgentId?: string;
20
- creatingAgentId?: string;
21
- type?: string;
22
- buyerName?: string;
23
- [key: string]: unknown;
24
- }
25
-
26
- type Department = "sales" | "lettings" | "both";
27
-
28
- export async function viewingSearch(params: {
29
- accountId: string;
30
- department?: Department;
31
- searchTerm?: string;
32
- appointmentStartDate?: string;
33
- appointmentEndDate?: string;
34
- status?: string;
35
- teamName?: string;
36
- limit?: number;
37
- }): Promise<string> {
38
- const {
39
- accountId, department = "both", searchTerm,
40
- appointmentStartDate, appointmentEndDate, status,
41
- teamName, limit,
42
- } = params;
43
-
44
- const result = await aggregateAcrossTeams<LoopViewingSummary>(
45
- accountId,
46
- "viewings",
47
- "loop-viewing-search",
48
- async (apiKey, team) => {
49
- const depts: string[] =
50
- department === "both" ? ["sales", "lettings"] : [department];
51
- const all: LoopViewingSummary[] = [];
52
-
53
- for (const dept of depts) {
54
- const qp: string[] = [];
55
- if (searchTerm) qp.push(`SearchTerm=${encodeURIComponent(searchTerm)}`);
56
- if (appointmentStartDate) qp.push(`AppointmentStartDate=${encodeURIComponent(appointmentStartDate)}`);
57
- if (appointmentEndDate) qp.push(`AppointmentEndDate=${encodeURIComponent(appointmentEndDate)}`);
58
- if (status) qp.push(`Status=${encodeURIComponent(status)}`);
59
-
60
- const query = qp.length > 0 ? `?${qp.join("&")}` : "";
61
- const path = `/residential/${dept}/viewings${query}`;
62
- const data = await loopGet<LoopViewingSummary[]>(apiKey, path, "loop-viewing-search", team);
63
- if (Array.isArray(data)) all.push(...data);
64
- }
65
- return all;
66
- },
67
- { teamName, limitPerTeam: limit ?? 50, limitTotal: limit ?? 200 }
68
- );
69
-
70
- return formatAggregationResult(
71
- result,
72
- (v) => {
73
- const addr = v.propertyAddress ?? "Unknown property";
74
- const id = v.id != null ? ` [ID: ${v.id}]` : "";
75
- // dateOfAppointment is ISO datetime e.g. "2026-04-10T15:30:00"
76
- const when = v.dateOfAppointment
77
- ? formatDateTime(v.dateOfAppointment)
78
- : "No date";
79
- const viewStatus = v.status ? ` [${v.status}]` : "";
80
- const buyer = v.buyerName ? ` — ${v.buyerName}` : "";
81
- const viewType = v.type ? ` (${v.type})` : "";
82
- return `- ${addr}${id} — ${when}${viewType}${buyer}${viewStatus}`;
83
- },
84
- "viewings"
85
- );
86
- }
87
-
88
- function formatDateTime(iso: string): string {
89
- const [datePart, timePart] = iso.split("T");
90
- if (!timePart) return datePart;
91
- return `${datePart} ${timePart.slice(0, 5)}`;
92
- }
@@ -1,53 +0,0 @@
1
- import { loopPost, withTeamKey } from "../lib/loop-api.js";
2
-
3
- type Department = "sales" | "lettings";
4
-
5
- // Feedback parties map to swagger endpoints:
6
- // sales: buyer-feedback, seller-feedback
7
- // lettings: renter-feedback, landlord-feedback
8
- type FeedbackParty = "buyer" | "seller" | "renter" | "landlord";
9
- type Action = "note" | "feedback";
10
-
11
- // ─── Loop API V2: POST /residential/{dept}/viewings/{id}/{suffix}
12
- // Suffix: "note" for notes, "{party}-feedback" for feedback
13
- // Request body: { result: string } (StringResponse format)
14
- // Response: boolean success
15
- // ────────────────────────────────────────────────────────────────
16
- interface LoopBooleanResponse {
17
- success?: boolean;
18
- [key: string]: unknown;
19
- }
20
-
21
- export async function viewingUpdate(params: {
22
- accountId: string;
23
- teamName: string;
24
- viewingId: number;
25
- department: Department;
26
- action: Action;
27
- text: string;
28
- feedbackParty?: FeedbackParty;
29
- }): Promise<string> {
30
- const { accountId, teamName, viewingId, department, action, text, feedbackParty } = params;
31
-
32
- if (action === "feedback" && !feedbackParty) {
33
- throw new Error("feedbackParty is required when action is 'feedback'. Use: buyer, seller, renter, or landlord.");
34
- }
35
-
36
- await withTeamKey<LoopBooleanResponse>(
37
- accountId,
38
- teamName,
39
- "viewings",
40
- "loop-viewing-update",
41
- async (apiKey) => {
42
- const suffix = action === "note"
43
- ? "note"
44
- : `${feedbackParty}-feedback`;
45
- const path = `/residential/${department}/viewings/${viewingId}/${suffix}`;
46
- // Loop expects the text as a StringResponse body
47
- return loopPost<LoopBooleanResponse>(apiKey, path, { result: text }, "loop-viewing-update", teamName);
48
- }
49
- );
50
-
51
- const actionLabel = action === "note" ? "Note added" : `${feedbackParty} feedback recorded`;
52
- return `${actionLabel} for viewing ${viewingId} (${department}) via team "${teamName}".`;
53
- }
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "Node16",
5
- "moduleResolution": "Node16",
6
- "lib": ["ES2022"],
7
- "outDir": "dist",
8
- "rootDir": "src",
9
- "strict": true,
10
- "esModuleInterop": true,
11
- "skipLibCheck": true,
12
- "forceConsistentCasingInFileNames": true,
13
- "resolveJsonModule": true,
14
- "declaration": true,
15
- "declarationMap": true,
16
- "sourceMap": true
17
- },
18
- "include": ["src"],
19
- "exclude": ["src/**/__tests__/**", "src/**/*.test.ts"]
20
- }
@@ -1,9 +0,0 @@
1
- import { defineConfig } from "vitest/config";
2
-
3
- export default defineConfig({
4
- test: {
5
- environment: "node",
6
- include: ["src/**/__tests__/**/*.test.ts"],
7
- testTimeout: 10_000,
8
- },
9
- });
@@ -1,53 +0,0 @@
1
- ---
2
- name: compliance-flag-checker
3
- description: "Flag AML, GDPR, DMCCA 2024 material information, ASA/CAP advertising standards, and Equality Act risks in any output before the operator approves it. Cross-cutting skill called by every workflow that produces an outbound message, a listing, terms of business, or a payment batch. Owned by the compliance specialist."
4
- ---
5
-
6
- # Compliance flag checker
7
-
8
- A cross-cutting building-block skill. Runs against every output that touches a regulated surface (a portal listing, a terms-of-business document, an outgoing message to a buyer or vendor, a payment batch, the AML status on a deal). Returns a list of flags the operator should see before approval.
9
-
10
- ## What it checks
11
-
12
- - **Material information.** DMCCA 2024 disclosure requirements for property listings: council tax band, tenure, ground rent and service charge if leasehold, property type, construction, utilities, heating, broadband, parking, and the wider Part C signals (flood risk, listed status, structural issues, planning permission, mining, and the rest). Missing items are flagged with the specific legislative requirement.
13
- - **Advertising standards.** ASA upheld-complaint patterns: fee transparency (VAT inclusion, mandatory surcharges disclosed), property descriptions accurate and substantiated, "local" claims supported, "leading" and "number one" claims substantiated.
14
- - **EPC display.** Asset rating present in any commercial media for the listing.
15
- - **AML state on the vendor.** Blocks a portal launch unless AML status is "passed" or the operator has explicitly overridden.
16
- - **GDPR.** Marketing messages to non-existing-client contacts checked for PECR opt-in basis. Data-retention prompts surfaced on close files.
17
- - **Equality Act.** Listing copy and outgoing messages checked for discriminatory phrasing (most commonly the "No DSS" pattern in lettings, court-declared as unlawful indirect discrimination).
18
- - **EAA s.21 personal interest disclosure.** Flags any output where the agent has a personal interest in the property and the disclosure has not been made.
19
- - **Renters' Rights Act 2025.** Where the workflow produces lettings output: bidding-ban compliance (must publish asking rent, must not request or accept above-advertised offers), discrimination ban (benefits, children), pet provisions, PRS database registration check, ombudsman membership display.
20
- - **Client money handling.** EAA 1979 ss.12 to 17 obligations on prescribed accounts, interest, trust requirements.
21
-
22
- ## Output
23
-
24
- Each flag returns:
25
-
26
- - The cited legislation (Act, SI, regulation, code provision), with format like `[DMCCA 2024, Part 4, s.237]`
27
- - The specific issue
28
- - The remediation required
29
- - The penalty exposure for non-compliance
30
-
31
- The calling workflow surfaces the flags at the top of the staged output. The operator clears the flags or accepts the residual risk before approving.
32
-
33
- ## What it does not do
34
-
35
- - It does not block approval. The operator decides; the skill informs.
36
- - It does not provide legal advice. Use "the legislation requires", "the regulatory position is", "this appears to fall short of". Never "you should" or "my advice is".
37
- - It does not certify a transaction or a listing as compliant. It flags gaps and cites requirements.
38
- - It does not amend the output it checks. Remediation is for the calling workflow or the operator.
39
-
40
- ## Connectors
41
-
42
- Read: profile (compliance state, AML provider, scheme memberships), CRM (deal, vendor, listing), the deep-research tool when an unfamiliar provision needs verification.
43
- Write: none.
44
-
45
- ## Profile keys
46
-
47
- - `realagent.compliance.cmp_scheme_membership`
48
- - `realagent.compliance.redress_scheme`
49
- - `realagent.compliance.ico_registration`
50
- - `realagent.compliance.mlro_designation`
51
- - `realagent.compliance.aml_provider`
52
- - `realagent.compliance.tpo_membership`
53
- - `realagent.compliance.propertymark_membership`
@@ -1,40 +0,0 @@
1
- ---
2
- name: priority-ranker
3
- description: "Order any list of items using the profile's urgency weights. Cross-cutting skill used by the morning round's top three and chase-progression's stalled list."
4
- ---
5
-
6
- # Priority ranker
7
-
8
- A cross-cutting building-block skill. Given a list of items with feature attributes, returns the same list ordered by relative urgency.
9
-
10
- ## Inputs
11
-
12
- The calling workflow passes:
13
-
14
- - A list of items. Each item has a feature attribute map (for chase-progression, the features are risk score, fee value, days stalled, recipient type, and so on).
15
- - An optional cap on how many top items to return (the morning round uses 3).
16
-
17
- ## What it does
18
-
19
- Reads the profile's weights for the relevant features. Returns the items in descending urgency order. If the cap is supplied, returns only the top N.
20
-
21
- For the top-three case the skill also returns, alongside each item, the feature that contributed most to its rank. The calling workflow uses that feature to write the reason sentence the operator reads ("Mrs Patel, her buyer's mortgage offer expires in 9 days and the survey was booked but not done").
22
-
23
- ## Learning
24
-
25
- When the operator actions a different item than the top-ranked one within the same session, the weighting reweights toward whatever feature distinguished the actioned item. Slow signal, high quality. All writes go through `profile-writer`.
26
-
27
- ## What it does not do
28
-
29
- - It does not generate the reason sentence. That is `variance-narrator`.
30
- - It does not decide what to do with the ranked items. The calling workflow owns that.
31
- - It does not write to the CRM.
32
-
33
- ## Connectors
34
-
35
- Read: profile (weights). No writes.
36
-
37
- ## Profile keys
38
-
39
- - `realagent.priority_weights.*` (per feature, learned)
40
- - `realagent.priority_weights.fee_multiplier`
@@ -1,53 +0,0 @@
1
- ---
2
- name: tone-matched-drafter
3
- description: "Draft a message in the operator's voice for a specific recipient type and channel. Cross-cutting skill used by chase-progression, new-instruction (vendor welcome), and any other workflow that needs an outgoing message. Never sends; the calling workflow owns the send gate."
4
- ---
5
-
6
- # Tone-matched drafter
7
-
8
- The cross-cutting skill that produces every outgoing message in Real Agent. The deepest learning hook in the product: edit-before-send diffs feed back here.
9
-
10
- ## Inputs
11
-
12
- The calling workflow passes:
13
-
14
- - Recipient type (vendor familiar, vendor formal, buyer familiar, buyer formal, vendor solicitor, buyer solicitor, mortgage broker, surveyor, photographer, EPC supplier, floorplan supplier, accountant, other)
15
- - Channel (WhatsApp, email, SMS, or "infer from recipient")
16
- - Intent (chase the solicitor on searches, welcome a new vendor, request a viewing, confirm a meeting, and so on)
17
- - Reference data (the deal record, the property record, the contact's prior messages)
18
-
19
- ## What it does
20
-
21
- Reads the profile's tone preference for the recipient type and the agent's voice samples. Drafts a message that matches:
22
-
23
- - The agent's vocabulary (the words they actually use)
24
- - The agent's sentence length and rhythm
25
- - The agent's preferred greeting and sign-off for the recipient type
26
- - The phrases the agent has previously edited out (the pet-peeve list), which are never included
27
- - The channel's constraints (WhatsApp templating for first contact, email subject lines, SMS character limits)
28
-
29
- The draft is returned to the calling workflow with the channel decision attached. The workflow decides when to surface the draft to the operator and when to fire on approval.
30
-
31
- ## What it does not do
32
-
33
- - It never sends. The calling workflow owns the send gate.
34
- - It does not negotiate. Drafts are messages the operator would send; negotiating substance is the operator's decision.
35
- - It does not invent facts. Every reference to a number, name, or date is read from the deal record or the connector. If a field is missing, the draft says so explicitly and the operator fills it.
36
-
37
- ## Learning
38
-
39
- Every time the operator edits a draft before approval, the diff is captured and weighted into the profile's tone preference and pet-peeve list. Within a quarter, the workflow should produce drafts the agent sends without editing 80% of the time on the common recipient types.
40
-
41
- ## Connectors
42
-
43
- Read: profile (tone, voice samples, pet peeves, channel preferences), CRM (deal and contact records).
44
- Write: none. The calling workflow handles sends.
45
-
46
- ## Profile keys
47
-
48
- - `realagent.tone_profile.*` (per recipient type)
49
- - `realagent.voice_samples`
50
- - `realagent.phrasing_pet_peeves`
51
- - `realagent.channel_preference.<recipient_id>`
52
- - `realagent.tone_profile.greetings.*`
53
- - `realagent.tone_profile.signoffs.*`
@@ -1,50 +0,0 @@
1
- ---
2
- name: variance-narrator
3
- description: "Write short prose summaries of numerical changes. Used by the morning round to write the cause sentence under each stalled deal, and by month-end-close to write the two paragraphs comparing the period to the prior month and the same period last year."
4
- ---
5
-
6
- # Variance narrator
7
-
8
- A cross-cutting building-block skill. Turns a set of numbers and structured events into a sentence or short paragraph in plain English, in the agent's voice.
9
-
10
- ## Two output shapes
11
-
12
- ### Cause sentence (used by morning round and chase-progression)
13
-
14
- Given a deal's state, produces one short sentence that names the most likely cause of the stall. The skill picks the pattern that fits the observable signals, not the one that sounds most dramatic. Examples:
15
-
16
- - "Mortgage offer expires in 9 days and the survey was booked but not done."
17
- - "Searches outstanding at day 28; solicitor last contacted day 14."
18
- - "Vendor unresponsive since day 12; buyer's broker has chased twice."
19
-
20
- If no pattern fits, the sentence reads "no clear cause from connectors, manual check recommended". The skill never invents a cause it cannot trace to data.
21
-
22
- ### Variance paragraphs (used by month-end-close)
23
-
24
- Given the period's reconciliation totals and the two comparison periods (prior month, same month last year), produces two paragraphs in plain language with no jargon. Example:
25
-
26
- > April was GBP 8,400 down on March because three completions slipped into May, all expected to land. The reconciliation matched cleanly otherwise; the only variance was a GBP 120 referral deduction on the Norton sale.
27
- >
28
- > Year-on-year April is 15% up on the same month last year. The increase came from two completions over GBP 8,000 fee value, both new instructions taken in February.
29
-
30
- The paragraphs are suitable to paste into a board update, a tax-return cover note, or a conversation with a partner.
31
-
32
- ## Voice source
33
-
34
- Reads the profile's voice samples and the operator's prior narrative paragraphs. Learns from edit-before-approve diffs.
35
-
36
- ## What it does not do
37
-
38
- - It does not write outgoing messages. That is `tone-matched-drafter`.
39
- - It does not produce numerical totals. The calling workflow passes the numbers in; this skill writes the prose around them.
40
- - It does not write to the CRM or the accounting platform.
41
-
42
- ## Connectors
43
-
44
- Read: profile (voice samples, narrative voice). No writes.
45
-
46
- ## Profile keys
47
-
48
- - `realagent.voice_samples`
49
- - `realagent.close.narrative_voice_samples`
50
- - `realagent.cause_phrases`
@@ -1,54 +0,0 @@
1
- ---
2
- name: vendor-research
3
- description: "Public-record and CRM-history lookup on a vendor, with the profile's privacy line enforced. Used in valuation-prep, in new-instruction AML staging, and in chase-progression when a vendor goes silent. Surfaces useful context; flags sensitive signals separately."
4
- ---
5
-
6
- # Vendor research
7
-
8
- A cross-cutting building-block skill. Looks the vendor up across the sources the platform has access to and returns a structured summary with the privacy line applied.
9
-
10
- ## What it looks at
11
-
12
- - Land Registry: ownership history, joint owners, transactions
13
- - The agency's CRM history with this vendor and with the property
14
- - Council planning portal: planning applications and decisions for the property
15
- - The portal record if the property has been listed before
16
- - Public probate registry where relevant
17
- - Public news sources via the deep-research tool when the brief warrants it
18
-
19
- ## The privacy line
20
-
21
- The profile holds a privacy preference. Default behaviour:
22
-
23
- - **Surface.** Ownership and planning history.
24
- - **Flag-but-suppress.** Deaths registered against the address, ownership changes that correlate with bereavement, planning disputes, anything that the agent could not quote in the appointment without harming their reputation.
25
-
26
- The flag-but-suppress signals are not deleted; they are summarised at the top of the output as "n suppressed signals exist on this address, available on request". The operator can say "show me everything you find" to see them, or "drop the sensitive stuff" to remove the heading entirely.
27
-
28
- ## Output shape
29
-
30
- A structured summary with:
31
-
32
- - How long the vendor has owned
33
- - Last purchase price
34
- - Joint owners on the title
35
- - Planning history (one-line per material event)
36
- - Prior listings (agent, asking price, sold or withdrawn)
37
- - CRM history with this agent
38
-
39
- Plus the suppressed-signal heading if any apply.
40
-
41
- ## What it does not do
42
-
43
- - It does not draft anything to send to the vendor. That is `tone-matched-drafter`.
44
- - It does not produce a valuation. That is `pricing-scenario-builder`.
45
- - It does not write to the CRM. The calling workflow stores anything it wants kept.
46
-
47
- ## Connectors
48
-
49
- Read: Land Registry, planning portal, CRM, portal data, probate registry, deep-research tool. No writes.
50
-
51
- ## Profile keys
52
-
53
- - `realagent.privacy_line.surface` (list of signal types)
54
- - `realagent.privacy_line.suppress` (list of signal types)
@@ -1,8 +0,0 @@
1
- {
2
- "name": "real-agent-preval",
3
- "description": "Single-address pre-valuation pitch pack. One full UK address in, 5-page A4 PDF out (cover · subject valuation · market context · comparables · recently with <brand>). Consumes the real-agent-property-data and real-agent-epc MCPs — no MCP tools of its own.",
4
- "version": "0.1.0",
5
- "author": {
6
- "name": "Rubytech LLC"
7
- }
8
- }
@@ -1,47 +0,0 @@
1
- ---
2
- name: real-agent-preval
3
- description: "Single-address pre-valuation pitch pack. One full UK address in, 5-page A4 PDF out (cover · subject valuation · market context · comparables · recently with <brand>). Consumes the real-agent-property-data and real-agent-epc MCPs — no MCP tools of its own."
4
- skills:
5
- - skills/property-preval/SKILL.md
6
- always: false
7
- metadata: {"platform":{"optional":true,"embed":["admin"]}}
8
- ---
9
-
10
- # Real Agent — Preval
11
-
12
- Consumer sub-plugin. No MCP server, no new tools — only a skill (`property-preval`) that takes one full UK address plus operator-supplied brand tokens, subject details, agent listings, and a market summary, and renders a **5-page A4 pre-valuation PDF** designed as a sales pitch for the listing.
13
-
14
- ## What it produces
15
-
16
- A 5-page A4 PDF and the source HTML, written to `~/Documents/Maxy/preval/<postcode-compact>-<YYYY-MM-DD>/`:
17
-
18
- - **Page 1 — Cover.** Full-bleed subject hero photo with gradient scrim. Light brand wordmark top-left. Address in display-italic. Postcode chip. Four-up meta strip (Report · Address · Postcode · Generated). Lifted from the `property-market-report` cover contract.
19
- - **Page 2 — Subject valuation.** KPI strip (floor area, bedrooms, EPC rating, type). Valuation panel: headline range = `subject.sqft × sold £/sqft 70pc band` (Land Registry), asking £/sqft cross-check, operator adjustments (`subject.adjustments[]`) shown as a stacked list with colour-coded percentages, final indicative range pill. `subject.sqft` is required — a null value aborts the run.
20
- - **Page 3 — Market context.** Market summary headline + paragraphs with drop cap. KPI strip (avg asking £, avg sold £, £/sqft). Price-growth panel (YoY) + demand pill with gauge. 7-year sparkline of £ and £/sqft. Same patterns as `property-market-report`.
21
- - **Page 4 — Comparables.** Full-width Land Registry sold-transactions table (≤ 6 rows), stacked above a full-width live-asking-comparables tile grid (≤ 4 tiles). Never side-by-side — corrects the cramped two-column layout in v1 preval.
22
- - **Page 5 — Recently with `<brand>` + sources.** Operator-curated `agent_listings[]` rendered as a clickable tile grid with status badges (Sold / Under offer / For sale), then the sources & methodology block. The vendor reads this page and knows who to call.
23
-
24
- ## Tool dependencies
25
-
26
- The skill fans out to **13** MCP calls in parallel:
27
-
28
- - **12 PropertyData** tools (postcode-keyed): `prices`, `prices-per-sqf`, `sold-prices`, `sold-prices-per-sqf`, `growth`, `growth-psf`, `demand`, `demand-rent`, `property-types`, `crime`, `flood-risk`, `council-tax`.
29
- - **1 EPC** tool (address-keyed): `epc-lookup-by-address` for subject floor area + energy rating + lodgement date.
30
-
31
- `property-data-address-match-uprn` and `property-data-planning-applications` are deliberately not called (CRM hygiene and dev-precedent reports, respectively).
32
-
33
- ## Failure handling
34
-
35
- Every failure is fail-loud. The skill emits `[preval] aborted reason=<cause> …` and exits 2; no partial `index.html` or PDF is left on disk.
36
-
37
- - **PropertyData `key-not-registered`** → abort `reason=property-data-key-not-registered` with the `property-data-key-register` remediation hint.
38
- - **PropertyData `http-429`** → back off and retry the single throttled tool once. A second `http-429` aborts `reason=property-data-rate-limited`.
39
- - **PropertyData `http-5xx` / network failure** → abort `reason=property-data-unavailable`.
40
- - **EPC failure of any kind** — `key-not-registered`, `http-404 (no record)`, `http-429`, `http-5xx`, network failure, EPC MCP not configured — aborts the run. There is no in-band prompt and no benchmark-only mode. The operator's options before re-running are (a) run Task 155 to deploy / register the EPC MCP, or (b) paste `subject.sqft` and `subject.sqft_m2` into the inputs as a deliberate operator override.
41
- - See `skills/property-preval/SKILL.md` § Hard breakpoints for the full table of abort causes.
42
-
43
- ## External dependencies
44
-
45
- - Requires `real-agent-property-data` enabled on the account with a registered PropertyData API key (`property-data-key-register`).
46
- - Requires `real-agent-epc` enabled with a registered EPC API key (`epc-key-register`), **or** an operator-supplied `subject.sqft` + `subject.sqft_m2` override pre-baked into the inputs. EPC failures are not silently absorbed.
47
- - Requires Google Chrome at `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome` for headless `--print-to-pdf`. Same Chrome dependency as `property-market-report`.