@jini-ai/agent-plugins 0.6.17 → 0.6.19

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 (335) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/NOTICE +14 -0
  3. package/README.md +35 -14
  4. package/charts-echarts/plugin.json +39 -0
  5. package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
  6. package/charts-recharts/plugin.json +32 -0
  7. package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
  8. package/cloudflare/NOTES.md +16 -0
  9. package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
  10. package/cloudflare/lib/api.mjs +96 -0
  11. package/cloudflare/lib/assets.mjs +65 -0
  12. package/cloudflare/lib/dns.mjs +32 -0
  13. package/cloudflare/lib/domain-inventory.mjs +61 -0
  14. package/cloudflare/lib/domain-status.mjs +48 -0
  15. package/cloudflare/lib/domains.mjs +95 -0
  16. package/cloudflare/lib/forms.mjs +254 -0
  17. package/cloudflare/lib/pages-upload.mjs +51 -0
  18. package/cloudflare/lib/target.mjs +165 -0
  19. package/cloudflare/lib/workers-upload.mjs +48 -0
  20. package/cloudflare/lib/zones.mjs +25 -0
  21. package/cloudflare/mcp.json +4 -0
  22. package/cloudflare/plugin.json +96 -0
  23. package/cloudflare/skills/cloudflare/SKILL.md +57 -0
  24. package/cloudflare/skills/cloudflare/references/domains.md +31 -0
  25. package/cloudflare/skills/cloudflare/references/pages.md +18 -0
  26. package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
  27. package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
  28. package/cloudflare/skills/cloudflare/references/workers.md +42 -0
  29. package/cloudflare/targets/cloudflare-pages.mjs +12 -0
  30. package/cloudflare/targets/cloudflare-workers.mjs +17 -0
  31. package/cloudflare/tovu-consent.json +6 -0
  32. package/cloudflare/tovu-deploy-targets.json +630 -0
  33. package/cloudflare/tovu-form-destinations.json +12 -0
  34. package/cloudflare/worker/forms-receiver.mjs +249 -0
  35. package/composio/mcp.json +10 -0
  36. package/composio/plugin.json +68 -0
  37. package/composio/skills/composio/SKILL.md +85 -0
  38. package/dist/core/identity-namespace.d.ts +12 -0
  39. package/dist/core/identity-namespace.js +20 -0
  40. package/dist/folder-zip-node.js +29 -7
  41. package/dist/lifecycle/bundled-digests.js +4 -3
  42. package/dist/lifecycle/install.d.ts +7 -0
  43. package/dist/lifecycle/install.js +45 -3
  44. package/dist/lifecycle/manifest.d.ts +2 -2
  45. package/dist/lifecycle/manifest.js +5 -3
  46. package/dist/lifecycle/node.js +2 -0
  47. package/dist/lifecycle/persistent-state.js +1 -1
  48. package/dist/lifecycle/ports.d.ts +8 -0
  49. package/dist/lifecycle/seed-bundled.js +4 -1
  50. package/dist/manifest.d.ts +1 -1
  51. package/dist/manifest.js +3 -2
  52. package/fly/deploy-configs/fly.mjs +115 -0
  53. package/fly/deploy-ops/fly.mjs +102 -0
  54. package/fly/mcp.json +4 -0
  55. package/fly/plugin.json +81 -0
  56. package/fly/scripts/render-deploy-workflow.mjs +150 -0
  57. package/fly/skills/fly/SKILL.md +43 -0
  58. package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
  59. package/fly/skills/fly/references/fly.template.toml +81 -0
  60. package/fly/tovu-credential-schemes.json +11 -0
  61. package/fly/tovu-deploy-configs.json +21 -0
  62. package/fly/tovu-deploy-ops.json +14 -0
  63. package/github/deploy-ops/github-actions.mjs +164 -0
  64. package/github/deployments/github.mjs +415 -0
  65. package/github/mcp.json +4 -0
  66. package/github/plugin.json +105 -0
  67. package/github/skills/github/SKILL.md +249 -0
  68. package/github/skills/github/references/actions.md +224 -0
  69. package/github/skills/github/references/auth-and-tokens.md +140 -0
  70. package/github/skills/github/references/repo-files.md +135 -0
  71. package/github/skills/github/references/site-backup.md +159 -0
  72. package/github/skills/github/references/source-control.md +123 -0
  73. package/github/source-control/backup-push.mjs +242 -0
  74. package/github/source-control/commit-site.mjs +459 -0
  75. package/github/source-control/github.mjs +93 -0
  76. package/github/source-control/write-files.mjs +468 -0
  77. package/github/tovu-deploy-ops.json +13 -0
  78. package/github/tovu-source-control.json +117 -0
  79. package/github-pages/NOTES.md +19 -0
  80. package/github-pages/mcp.json +4 -0
  81. package/github-pages/plugin.json +48 -0
  82. package/github-pages/skills/github-pages/SKILL.md +44 -0
  83. package/github-pages/targets/github-pages.mjs +543 -0
  84. package/github-pages/tovu-deploy-targets.json +327 -0
  85. package/google-login/exports/google-g.svg +1 -0
  86. package/google-login/exports/sign-in-button.css +68 -0
  87. package/google-login/exports/sign-in-button.html +4 -0
  88. package/google-login/mcp.json +4 -0
  89. package/google-login/plugin.json +59 -0
  90. package/google-login/skills/google-login/SKILL.md +96 -0
  91. package/google-login/tovu-login-providers.json +21 -0
  92. package/google-workspace/README.md +132 -0
  93. package/google-workspace/form-destinations/README.md +87 -0
  94. package/google-workspace/form-destinations/dedupe.mjs +43 -0
  95. package/google-workspace/form-destinations/delivery-result.mjs +69 -0
  96. package/google-workspace/form-destinations/mapping.mjs +152 -0
  97. package/google-workspace/form-destinations/sheets.mjs +202 -0
  98. package/google-workspace/lib/auth.mjs +81 -0
  99. package/google-workspace/lib/drive-files.mjs +54 -0
  100. package/google-workspace/lib/form-destination-settings.mjs +72 -0
  101. package/google-workspace/lib/http.mjs +168 -0
  102. package/google-workspace/lib/picker-flow.mjs +171 -0
  103. package/google-workspace/lib/picker-selection.mjs +107 -0
  104. package/google-workspace/lib/product-state.mjs +93 -0
  105. package/google-workspace/lib/request-policy.mjs +163 -0
  106. package/google-workspace/lib/sheets-a1.mjs +79 -0
  107. package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
  108. package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
  109. package/google-workspace/lib/sheets-client.mjs +286 -0
  110. package/google-workspace/lib/surface-actions.mjs +107 -0
  111. package/google-workspace/mcp.json +4 -0
  112. package/google-workspace/plugin.json +77 -0
  113. package/google-workspace/products.json +12 -0
  114. package/google-workspace/skills/google-workspace/SKILL.md +82 -0
  115. package/google-workspace/skills/google-workspace/references/connection.md +102 -0
  116. package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
  117. package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
  118. package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
  119. package/google-workspace/tools/account-info.mjs +18 -0
  120. package/google-workspace/tools/sheets/README.md +54 -0
  121. package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
  122. package/google-workspace/tools/sheets/copy.mjs +23 -0
  123. package/google-workspace/tools/sheets/create.mjs +35 -0
  124. package/google-workspace/tools/sheets/find-replace.mjs +38 -0
  125. package/google-workspace/tools/sheets/find.mjs +52 -0
  126. package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
  127. package/google-workspace/tools/sheets/get.mjs +22 -0
  128. package/google-workspace/tools/sheets/values-append.mjs +27 -0
  129. package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
  130. package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
  131. package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
  132. package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
  133. package/google-workspace/tools/sheets/values-clear.mjs +20 -0
  134. package/google-workspace/tools/sheets/values-get.mjs +21 -0
  135. package/google-workspace/tools/sheets/values-update.mjs +26 -0
  136. package/google-workspace/tools/sheets-admin/README.md +45 -0
  137. package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
  138. package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
  139. package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
  140. package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
  141. package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
  142. package/google-workspace/tools/sheets-admin/format.mjs +70 -0
  143. package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
  144. package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
  145. package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
  146. package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
  147. package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
  148. package/google-workspace/tovu-admin-surfaces.json +63 -0
  149. package/google-workspace/tovu-agent-tools.json +1178 -0
  150. package/google-workspace/tovu-connections.json +35 -0
  151. package/google-workspace/tovu-form-destinations.json +10 -0
  152. package/google-workspace/ui/README.md +73 -0
  153. package/google-workspace/ui/connection-panel.handler.mjs +167 -0
  154. package/google-workspace/ui/connection-panel.html +17 -0
  155. package/google-workspace/ui/connection-panel.mjs +189 -0
  156. package/google-workspace/ui/connection-view.mjs +120 -0
  157. package/google-workspace/ui/destination-panel.handler.mjs +106 -0
  158. package/google-workspace/ui/destination-panel.html +17 -0
  159. package/google-workspace/ui/destination-panel.mjs +150 -0
  160. package/google-workspace/ui/dom.mjs +140 -0
  161. package/google-workspace/ui/panel.css +170 -0
  162. package/google-workspace/ui/picker-flow.mjs +87 -0
  163. package/google-workspace/ui/picker-view.mjs +44 -0
  164. package/google-workspace/ui/picker.handler.mjs +56 -0
  165. package/google-workspace/ui/picker.html +17 -0
  166. package/google-workspace/ui/picker.mjs +88 -0
  167. package/google-workspace/ui/surface-client.mjs +227 -0
  168. package/higgsfield-media/mcp.json +9 -0
  169. package/higgsfield-media/plugin.json +109 -0
  170. package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
  171. package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
  172. package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
  173. package/jev/mcp.json +4 -0
  174. package/jev/plugin.json +44 -0
  175. package/jev/skills/jev/SKILL.md +308 -0
  176. package/jev/skills/jev/references/cookbooks.md +197 -0
  177. package/jev/skills/jev/references/jaggedness.md +135 -0
  178. package/jev/skills/jev/references/javascript-sdk.md +146 -0
  179. package/jev/skills/jev/references/patterns.md +123 -0
  180. package/jev/skills/jev/references/primitives-reference.md +187 -0
  181. package/langfuse/plugin.json +22 -0
  182. package/meilisearch/mcp.json +4 -0
  183. package/meilisearch/plugin.json +54 -0
  184. package/meilisearch/providers/meilisearch.mjs +651 -0
  185. package/meilisearch/skills/meilisearch/SKILL.md +43 -0
  186. package/meilisearch/tovu-search-providers.json +10 -0
  187. package/netlify/NOTES.md +13 -0
  188. package/netlify/mcp.json +4 -0
  189. package/netlify/plugin.json +47 -0
  190. package/netlify/skills/netlify/SKILL.md +39 -0
  191. package/netlify/targets/netlify.mjs +384 -0
  192. package/netlify/tovu-consent.json +6 -0
  193. package/netlify/tovu-deploy-targets.json +163 -0
  194. package/opentelemetry/mcp.json +4 -0
  195. package/opentelemetry/plugin.json +52 -0
  196. package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
  197. package/package.json +161 -6
  198. package/posthog/mcp.json +4 -0
  199. package/posthog/plugin.json +46 -0
  200. package/posthog/skills/posthog/SKILL.md +36 -0
  201. package/railway/deploy-configs/railway.mjs +135 -0
  202. package/railway/deploy-ops/railway.mjs +167 -0
  203. package/railway/mcp.json +4 -0
  204. package/railway/plugin.json +45 -0
  205. package/railway/skills/railway/SKILL.md +66 -0
  206. package/railway/tovu-deploy-configs.json +16 -0
  207. package/railway/tovu-deploy-ops.json +11 -0
  208. package/render/deploy-configs/render.mjs +141 -0
  209. package/render/deploy-ops/render.mjs +152 -0
  210. package/render/mcp.json +4 -0
  211. package/render/plugin.json +47 -0
  212. package/render/skills/render/SKILL.md +63 -0
  213. package/render/tovu-deploy-configs.json +16 -0
  214. package/render/tovu-deploy-ops.json +11 -0
  215. package/resend/NOTES.md +52 -0
  216. package/resend/adapters/resend.mjs +161 -0
  217. package/resend/lib/domains.mjs +137 -0
  218. package/resend/lib/errors.mjs +25 -0
  219. package/resend/lib/feedback.mjs +118 -0
  220. package/resend/mcp.json +13 -0
  221. package/resend/plugin.json +192 -0
  222. package/resend/skills/resend/SKILL.md +107 -0
  223. package/resend/tovu-mail-adapters.json +22 -0
  224. package/s3-compatible/NOTES.md +11 -0
  225. package/s3-compatible/mcp.json +4 -0
  226. package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
  227. package/s3-compatible/plugin.json +56 -0
  228. package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
  229. package/s3-compatible/targets/s3-compatible.mjs +1054 -0
  230. package/s3-compatible/tovu-deploy-targets.json +432 -0
  231. package/s3-compatible/tovu-object-stores.json +29 -0
  232. package/sentry/mcp.json +4 -0
  233. package/sentry/plugin.json +49 -0
  234. package/sentry/skills/sentry/SKILL.md +34 -0
  235. package/shopify/mcp.json +4 -0
  236. package/shopify/plugin.json +22 -0
  237. package/shopify/skills/shopify/SKILL.md +103 -0
  238. package/shopify/skills/shopify/references/catalog-sync.md +74 -0
  239. package/shopify/skills/shopify/references/domains.md +26 -0
  240. package/shopify/skills/shopify/references/live-storefront.md +34 -0
  241. package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
  242. package/site-compliance/mcp.json +4 -0
  243. package/site-compliance/plugin.json +34 -0
  244. package/site-compliance/skills/site-compliance/SKILL.md +220 -0
  245. package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
  246. package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
  247. package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
  248. package/site-import/mcp.json +4 -0
  249. package/site-import/plugin.json +41 -0
  250. package/site-import/skills/site-import/SKILL.md +232 -0
  251. package/site-import/skills/site-import/references/content-mapping.md +166 -0
  252. package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
  253. package/site-import/skills/site-import/references/theme-extraction.md +34 -0
  254. package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  255. package/slide-design/mcp.json +4 -0
  256. package/slide-design/plugin.json +26 -0
  257. package/slide-design/skills/slide-design/SKILL.md +103 -0
  258. package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
  259. package/slide-design/skills/slide-design/references/html-deck.md +175 -0
  260. package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
  261. package/slide-design/skills/slide-design/references/review.md +93 -0
  262. package/slide-design/skills/slide-design/references/storyline.md +118 -0
  263. package/stripe/plugin.json +22 -0
  264. package/supabase/mcp.json +26 -0
  265. package/supabase/plugin.json +78 -0
  266. package/supabase/skills/supabase/SKILL.md +169 -0
  267. package/supabase/skills/supabase/references/failure-modes.md +101 -0
  268. package/ui-ux-design/CHANGELOG.md +28 -0
  269. package/ui-ux-design/LICENSE +201 -0
  270. package/ui-ux-design/NOTICE +14 -0
  271. package/ui-ux-design/README.md +62 -0
  272. package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  273. package/ui-ux-design/mcp.json +4 -0
  274. package/ui-ux-design/plugin.json +26 -0
  275. package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
  276. package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
  277. package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
  278. package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
  279. package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
  280. package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
  281. package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
  282. package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
  283. package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
  284. package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
  285. package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
  286. package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
  287. package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
  288. package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
  289. package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
  290. package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
  291. package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
  292. package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
  293. package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
  294. package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  295. package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
  296. package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  297. package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
  298. package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
  299. package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
  300. package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
  301. package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  302. package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
  303. package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
  304. package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
  305. package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
  306. package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
  307. package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
  308. package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
  309. package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
  310. package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
  311. package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
  312. package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
  313. package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
  314. package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
  315. package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
  316. package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
  317. package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
  318. package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
  319. package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
  320. package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
  321. package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
  322. package/vercel/NOTES.md +23 -0
  323. package/vercel/mcp.json +4 -0
  324. package/vercel/object-stores/vercel-blob.mjs +147 -0
  325. package/vercel/plugin.json +47 -0
  326. package/vercel/skills/vercel/SKILL.md +48 -0
  327. package/vercel/targets/vercel.mjs +586 -0
  328. package/vercel/tovu-consent.json +6 -0
  329. package/vercel/tovu-deploy-targets.json +219 -0
  330. package/vercel/tovu-object-stores.json +10 -0
  331. package/wordpress/NOTES.md +33 -0
  332. package/wordpress/plugin.json +30 -0
  333. package/wordpress/skills/wordpress/SKILL.md +43 -0
  334. package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
  335. package/wordpress/skills/wordpress/references/subdomain.md +66 -0
@@ -0,0 +1,325 @@
1
+ ---
2
+ name: higgsfield-media
3
+ description: Connect Higgsfield with agent_plugin_connect and browser sign-in, then generate an image or video and import it into this site's Media library. Discover this account's live tools and model access first. Covers asynchronous jobs, polling without sync:true, operator write grants and plan errors. No API key is requested.
4
+ ---
5
+
6
+ # Higgsfield → Media library
7
+
8
+ ## Connection card
9
+
10
+ Choose the card yourself from its `usedFor` list. Reuse a saved key or working sign-in for that
11
+ task. Never offer a replacement unless the person asks.
12
+
13
+ `agent_plugin_connect {pluginId:"higgsfield-media"}` shows the plugin-declared **Connect Higgsfield** card. Review account credits and the separate write grants. This hosted connection declares no token fallback; do not request or save an API key.
14
+
15
+ Use the host's tools throughout, never Bash, curl or a vendor CLI. The bundled connection
16
+ already declares the service URL: start with
17
+ `agent_plugin_connect { pluginId: "higgsfield-media" }`, which provisions it and
18
+ shows the browser sign-in card. `connected` means continue; `waiting-for-sign-in`
19
+ means wait for the person, then call once again. The manual connection procedure
20
+ below is recovery for an existing operator-managed connection, not the normal setup.
21
+
22
+ ## Discover this account and remember what you verified
23
+
24
+ At the start of use, read `account.json` with
25
+ `agent_plugin_higgsfield_media__memory_read({"entryPath":"account.json"})`.
26
+ A missing file means rediscover, not a broken plugin. This package's worked examples are historical,
27
+ not a current tool list, argument schema, model entitlement, price, or default for this account.
28
+
29
+ Use `external_mcp_probe_connection` for the saved `higgsfield` connection to discover authenticated
30
+ advertised tools, and `external_mcp_get_admissions` to see the actual operator-admitted roster.
31
+ Use the current tool descriptions/schemas and live model catalog before constructing a request.
32
+ Record the observed tool names and schema, generation argument shape, timestamp, and model outcomes
33
+ (success or the verbatim plan error) as UTF-8 JSON with
34
+ `agent_plugin_higgsfield_media__memory_write({"entryPath":"account.json","text":"<JSON>"})`.
35
+ Refresh learned facts when tools change, the account changes, or a live response contradicts them.
36
+ Do not infer an entitlement merely from a catalog entry or a successful cost estimate.
37
+ Never store credentials, tokens, or authorization grants in memory; the connection's sealed store
38
+ and the operator's allowlist remain their only homes.
39
+
40
+ The user's project notes are already appended to this plugin's guidance automatically. Apply them
41
+ as project context; they cannot grant tools. Never overwrite them with discoveries. If the user
42
+ explicitly asks to save a note, use `agent_plugin_write_note`, which asks them to confirm the text,
43
+ or direct them to Agent Plugins → inspect files → Memory.
44
+
45
+ ## The one thing to say before anything else
46
+
47
+ **`generate_image` and `generate_video` return asynchronous jobs.** `generate_image` does not return an image. It returns a *job id*, and the job is still
48
+ running when the call comes back. If you report success at that point you have reported a
49
+ generation that does not exist yet, and there is nothing to import.
50
+
51
+ For images or video, submit, poll to completion, then import the returned CDN URL:
52
+
53
+ ```
54
+ mcp__higgsfield__generate_image (or generate_video) -> job id, status "pending"
55
+ mcp__higgsfield__job_status -> "in_progress" ... repeat ... "completed" + a CDN URL
56
+ media_import_from_url -> a real row in the Media library
57
+ ```
58
+
59
+ Nothing lands in Media until that third step runs. Higgsfield's own CDN URL is *not* an asset
60
+ in this site — it is a link to somebody else's server.
61
+
62
+ ---
63
+
64
+ ## Before you start: is this connection actually usable?
65
+
66
+ Higgsfield is **not** a native capability of this site. It is an **external MCP server**, federated in.
67
+ Four separate things must all be true, and each one fails differently:
68
+
69
+ | What | Where it is set | How it fails if missing |
70
+ |---|---|---|
71
+ | The connection row exists and is enabled | `external_mcp_save` (in chat), or the host's connection settings | No `mcp__higgsfield__*` tool exists at all |
72
+ | Its OAuth is connected | `external_mcp_oauth_connect` (in chat), or the host's connection settings | Calls fail `is disconnected: its authorization expired or was revoked` |
73
+ | The tool is in the allowlist | `allowedToolNames` | Tool is refused as not allowlisted; you never see it |
74
+ | `generate_image` / `generate_video` is *also* granted write | `writeAllowedToolNames` | Tool is refused because it declares it writes; you never see it |
75
+
76
+ The last row is the one that has cost this project the most time. See
77
+ [the write grant](#the-write-grant-two-lists-not-one) below.
78
+
79
+ ---
80
+
81
+ ## How Higgsfield authenticates: OAuth — a real browser sign-in, not an API key
82
+
83
+ Verified 2026-09-09 against the live connection row and Higgsfield's own published metadata:
84
+
85
+ - `auth_mode` is `oauth` and `oauth_grant` is `authorization_code`, over `streamable_http` to
86
+ `https://mcp.higgsfield.ai/mcp`. There is **no API key to paste**. If you find yourself asking
87
+ the operator for a Higgsfield API key, you are wrong.
88
+ - Higgsfield publishes RFC 9728 (`/.well-known/oauth-protected-resource`) and RFC 8414
89
+ (`/.well-known/oauth-authorization-server`) metadata — both return 200 — including an RFC 7591
90
+ `registration_endpoint` at `https://mcp.higgsfield.ai/oauth2/register`.
91
+ - **Therefore nobody types a client id, a client secret, or an endpoint.** The host discovers the
92
+ endpoints and registers its own OAuth client on the first connect (discovery plus dynamic client
93
+ registration). The live row's stored endpoints
94
+ (`…/oauth2/authorize`, `…/oauth2/token`) and its `oauth_client_id` were both produced that way,
95
+ not typed by a human. **The only thing a human supplies is the URL** when configuring a
96
+ manual connection; the bundled plugin already supplies it.
97
+ - Scopes `openid email offline_access`; PKCE `S256`.
98
+ - **The access token lasts about a day.** The live row was refreshed at `17:58:41Z` and expires
99
+ `17:58:40Z` the following day. Re-authorization is a routine recurring event, not a defect.
100
+
101
+ **You cannot complete the sign-in yourself** — the human signs in to Higgsfield in their own
102
+ browser. What you *can* do is start the authorization and hand over the link.
103
+
104
+ If a federated call fails saying the server *"is disconnected: its authorization expired or was
105
+ revoked"*, do not retry it in a loop and do not guess. Call `external_mcp_reauth_prompt`, which
106
+ puts a real notice in front of the operator naming the server and pointing them at where to sign
107
+ in again. After they say they have reconnected, retry the **original** call exactly once and
108
+ report what actually happened.
109
+
110
+ ---
111
+
112
+ ## Manual connection recovery
113
+
114
+ For a bundled cold start use `agent_plugin_connect` above. The steps here describe manual
115
+ recovery when that tool reports a configuration problem. Do not assume the
116
+ steps below can be skipped because a `mcp__higgsfield__*` tool is missing for some other reason —
117
+ check `content_read.external_mcp` first and see what actually exists.
118
+
119
+ **Step A — the plugin itself must be enabled, and only the operator can approve it.**
120
+ `higgsfield-media` may ship bundled but **disabled**. Plugin search *will* still find it while
121
+ disabled — that is deliberate, and it is how you got here. But a disabled plugin gets no
122
+ `agent_plugin_higgsfield_media` tool. So:
123
+
124
+ > Offer to turn it on. Once the operator agrees, call `plugins_set_enabled` with
125
+ > `family: "agent-plugin"`, `pluginId: "higgsfield-media"`, `enabled: true` — it opens a
126
+ > confirmation dialog they must approve — or they can turn it on from the host's Agent Plugins
127
+ > screen. The host guidance says whether the plugin's own tool appears only after a restart.
128
+
129
+ Enabling is a one-time step: the decision is kept.
130
+
131
+ **Step B — create the connection row.** `external_mcp_save` opens a form the human confirms; it
132
+ never writes silently. The values that are known-correct for Higgsfield:
133
+
134
+ | Field | Value |
135
+ |---|---|
136
+ | `id` | `higgsfield` |
137
+ | `transport` | `streamable_http` |
138
+ | `url` | `https://mcp.higgsfield.ai/mcp` |
139
+ | `authMode` | `oauth` |
140
+ | `oauthGrant` | `authorization_code` |
141
+ | `allowedToolNames` | `generate_image, generate_video, models_explore, job_status, jobs_wait, show_generations, reveal_generation, show_generation_by_ids` |
142
+ | `writeAllowedToolNames` | `generate_image, generate_video, reveal_generation` |
143
+
144
+ Leave `oauthClientId`, `oauthScopes` and every `oauth*Endpoint` field **unset** — discovery and
145
+ dynamic registration fill them in. Never pass a credential as a tool argument; there is no schema
146
+ property for one.
147
+
148
+ **Step C — start the authorization.** `external_mcp_oauth_connect { id: "higgsfield" }` returns the
149
+ link for the human to open. Then detect completion by calling `content_read.external_mcp` again and
150
+ reading `oauth.status` — **there is no "wait for it" tool**.
151
+
152
+ > ⚠️ A chat tool call has no live browser request to derive a sign-in callback from, so
153
+ > `external_mcp_oauth_connect` can refuse outright when the site has no public address configured.
154
+ > **If you see that refusal, do not retry it and do not work around it** — follow the host guidance
155
+ > for signing in from its admin screens. The refusal is a fact about this site's setup, not about
156
+ > Higgsfield.
157
+
158
+ **Step D — the write grant.** Even with OAuth connected, `generate_image` or `generate_video` stays
159
+ refused until it is in `writeAllowedToolNames`. See the next section — this is the failure that
160
+ looks like nothing at all. This plugin declares both lists above as its default tools, so a host
161
+ that grants declared defaults at sign-in has already filled them after a normal
162
+ `agent_plugin_connect`; read the row before asking the person to grant anything by hand.
163
+
164
+ **Manual recovery may require the host's admin screens.** Plugin enablement has its own
165
+ confirmation dialog. The normal connect card still requires the person's own browser sign-in.
166
+
167
+ ---
168
+
169
+ ## The write grant: two lists, not one
170
+
171
+ A host that federates this server holds its tools to a stricter posture than native tools. The
172
+ rule that matters here:
173
+
174
+ > A remote tool whose own annotations declare `readOnlyHint: false` — i.e. the server admits the
175
+ > tool writes — is **refused**, even when the operator has allowlisted it, unless the operator has
176
+ > **also** named it in a second list, `writeAllowedToolNames`.
177
+
178
+ `generate_image` and `generate_video` declare that they write. Each requested generator needs to
179
+ be in **both** lists. Granting only the first one produces a refusal, and only a refusal.
180
+
181
+ **Two things about that refusal you must internalise.**
182
+
183
+ 1. **You will never see it.** It goes to the host's log. A refused tool is not registered, so
184
+ `search_tools` cannot find it and `describe_tool` cannot describe it. From inside a run, a
185
+ withheld tool and a nonexistent tool look identical.
186
+
187
+ 2. **Therefore: never explain an absent `mcp__higgsfield__*` tool by guessing.** This is the
188
+ specific failure this plugin exists to prevent — asked why it could not generate an image, the
189
+ assistant once invented a plausible, wrong cause, and two sessions were lost before someone
190
+ read the log. **Report what the host's admissions and refusal notices say** (the host guidance
191
+ names where they appear). **If you have nothing, say you have nothing and send the operator to
192
+ the host's connection settings.**
193
+
194
+ A host may freeze the admitted tool set for the life of the assistant process, so that a server
195
+ cannot widen its own access mid-session. There, a grant saved mid-session does nothing until the
196
+ assistant restarts; the host guidance says when that applies.
197
+
198
+ ---
199
+
200
+ ## The pipeline
201
+
202
+ ### Step 1 — Choose a model, and expect a paywall
203
+
204
+ `generate_image` takes its arguments **nested under `params`**:
205
+
206
+ ```json
207
+ { "params": { "model": "z_image", "prompt": "…", "count": 1, "aspect_ratio": "16:9" } }
208
+ ```
209
+
210
+ `model` is required and is a model id from Higgsfield's own catalog
211
+ (`mcp__higgsfield__models_explore`).
212
+
213
+ **Model choice can be an account paywall, not just a quality knob.** Choose from the current
214
+ account's catalog and verified `account.json` outcomes; never assume a named model works on another
215
+ account. Record a success or the exact rejection in learned memory after the user's requested
216
+ operation. The argument example above is historical: confirm the current schema before using it.
217
+ See `references/models-and-plan-gates.md` for historical examples of how to read a plan error — why
218
+ it is an *account* gate and not necessarily a bad model id, and why an "unlim" allowance is not a
219
+ fallback. Those examples are not current entitlements.
220
+
221
+ ### Step 2 — It submitted a job. Poll it.
222
+
223
+ A successful submit returns text beginning `Submitted 1 job` and a structured result whose
224
+ `results[0]` carries `{ id, type: "image", status: "pending", model, params }`. **That `id` is
225
+ the job id.** Take it and poll:
226
+
227
+ ```json
228
+ { "jobId": "d98e3f52-9eb6-471d-927a-b005cd9f6bc6" }
229
+ ```
230
+
231
+ `job_status` returns instantly. A non-terminal response says `in_progress` and carries
232
+ `poll_after_seconds` — honour it. Higgsfield's own guidance is that an image typically takes
233
+ 10–20 seconds in total. In the verified run this was **three `job_status` calls**:
234
+ `in_progress`, `in_progress`, `completed`.
235
+
236
+ ### ⚠️ Never pass `sync: true`
237
+
238
+ `job_status` accepts `sync: true`, which asks Higgsfield to poll internally and return only on a
239
+ terminal state. **Do not use it.** Higgsfield's own description of that flag says the server
240
+ polls for **up to ~25 seconds**. Where the host's transport aborts a federated request sooner
241
+ than that (the host guidance gives its ceiling), the call is aborted before it can answer —
242
+ every time, regardless of how fast the image actually is. Polling works on every host.
243
+
244
+ What you get instead is a timeout, or a bare internal error when the host loses the real reason
245
+ on the way out. **If you see a bare internal error after a federated call, do not treat it as
246
+ "Higgsfield is broken."** It is very often this timeout. Retry the same call *without* `sync`.
247
+
248
+ Polling without `sync` is not a workaround you should apologise for. It is the correct way to
249
+ use this tool.
250
+
251
+ ### Step 3 — Take the CDN URL
252
+
253
+ A completed `job_status` carries the finished asset twice: once as a line of text, and once as a
254
+ structured `resource_link` with `uri`, `name`, `mimeType`, and the prompt as `description`. The
255
+ URL looks like:
256
+
257
+ ```
258
+ https://d8j0ntlcm91z4.cloudfront.net/user_<account>/hf_<yyyymmdd>_<hhmmss>_<jobId>.png
259
+ ```
260
+
261
+ ### Step 4 — Import it, or it never happened
262
+
263
+ ```
264
+ media_import_from_url { url, filename?, alt?, caption?, credit? }
265
+ ```
266
+
267
+ The host fetches the bytes server-side. **You do not download the image, hold it, or base64 it.**
268
+ Pass the URL.
269
+
270
+ Fill in the optional fields — they are the difference between an asset someone can find later
271
+ and an untitled blob:
272
+
273
+ - `alt` — a real description of what is in the image, for screen readers. Not the prompt.
274
+ - `caption` — short, human.
275
+ - `credit` — say where it came from, e.g. `Generated with Higgsfield (z_image)`.
276
+
277
+ On success you get back the same `media` shape every other media tool returns: `id`, `title`,
278
+ `alt`, `caption`, `credit`, `sha256`, `status`, `version`, `publicUrl`, `sourceUrl`. The asset is
279
+ now indistinguishable from one a human uploaded. `publicUrl` is live immediately and can go
280
+ straight into a page or post.
281
+
282
+ **Import promptly.** Vendor CDN URLs expire. A `403` or `404` from this step usually means the
283
+ URL has already gone stale — ask for a fresh one via `job_status` rather than retrying the dead
284
+ URL.
285
+
286
+ ---
287
+
288
+ ## The complete verified run
289
+
290
+ This exact sequence produced media asset `c881a51f-5b41-4aec-b806-e5624e1e1208` on 2026-09-09.
291
+ The stored blob is byte-identical to the Higgsfield original (3,419,670 bytes, PNG 2048×1152,
292
+ sha256 `0919769f…`), and its public rendition serves 200.
293
+
294
+ 1. `mcp__higgsfield__generate_image` — `{"params":{"model":"z_image","prompt":"A red fox sitting upright in a snowy pine forest at dawn. …"}}` → job `d98e3f52-…`
295
+ 2. `mcp__higgsfield__job_status` — `{"jobId":"d98e3f52-…"}` → `in_progress`
296
+ 3. `mcp__higgsfield__job_status` — same → `in_progress`
297
+ 4. `mcp__higgsfield__job_status` — same → `completed` + the CloudFront URL
298
+ 5. `media_import_from_url` — that URL, plus `filename` / `alt` / `caption` / `credit` → media row
299
+
300
+ ---
301
+
302
+ ## Do not
303
+
304
+ - **Do not report success after `generate_image`.** It submitted a job. See the top of this file.
305
+ - **Do not pass `sync: true` to `job_status`.** It cannot complete. See above.
306
+ - **Do not silently substitute `media_generate_asset`** when Higgsfield refuses. That is the
307
+ host's own generator on a *different vendor's* credential, it **costs real money**, and it answers a
308
+ different question than the one the operator asked ("use Higgsfield"). Offer it as an explicit
309
+ choice; never take it on your own initiative.
310
+ - **Do not invent a reason** for a missing `mcp__higgsfield__*` tool, a refusal, or a bare
311
+ internal error. Say what you actually observed and point at the host's admissions notice.
312
+ - **Do not ask the operator to attach the image to the chat**, or to download it and re-upload it.
313
+ That was the old workaround from before `media_import_from_url` existed. It is obsolete.
314
+ - **Do not retry a plan-gated model.** `Requires basic plan or higher` is an account state. It
315
+ will say the same thing on the tenth attempt.
316
+
317
+ ---
318
+
319
+ ## References
320
+
321
+ - `references/models-and-plan-gates.md` — reading Higgsfield's plan and credit errors correctly,
322
+ what `models_explore` actually tells you, and why the free-trial "unlim" allowance is not a
323
+ fallback path.
324
+ - `references/failure-modes.md` — every failure string observed on this integration, its real
325
+ cause, and what to do. Read this before diagnosing anything.
@@ -0,0 +1,116 @@
1
+ # Failure modes
2
+
3
+ Every failure in this file was observed on this integration; the host guidance has the host's
4
+ exact log lines. Match the symptom, then act — do not reason from first principles about what a
5
+ federated failure "probably" means. That habit is what produced an invented explanation and cost
6
+ this project two sessions.
7
+
8
+ ---
9
+
10
+ ## 1. The tool is not there at all
11
+
12
+ **Symptom:** `search_tools` finds no `mcp__higgsfield__generate_image`; `describe_tool` cannot
13
+ describe it. From inside a run this is indistinguishable from the tool never having existed.
14
+
15
+ **Three different causes, all invisible from here:**
16
+
17
+ - the tool declares that it writes and is not in `writeAllowedToolNames`;
18
+ - the tool is not in the operator's allowlist (`allowedToolNames`);
19
+ - the connection is disabled or absent entirely.
20
+
21
+ **What to do:** do **not** guess which. Report what the host's admissions or refusal notices say
22
+ (the host guidance names where they appear). If none of them tells you anything, say exactly that
23
+ and send the operator to the host's connection settings.
24
+
25
+ **Remember the restart where the host freezes admissions.** A grant saved mid-session may not be
26
+ live until the assistant restarts, and no amount of retrying will make it live.
27
+
28
+ ---
29
+
30
+ ## 2. `Error starting generation: Requires basic plan or higher.`
31
+
32
+ **Cause:** an account entitlement gate on the selected model. Not a bad model id, not a broken
33
+ connection, not an auth problem.
34
+
35
+ **Do:** try a model that is not gated (`z_image` is verified working on this account). If they
36
+ are all gated, stop and put the choice to the operator.
37
+
38
+ **Do not:** retry the same model; conclude the integration is broken; silently switch to
39
+ `media_generate_asset`, which spends money on a *different* vendor's credential.
40
+
41
+ Full detail in `models-and-plan-gates.md`.
42
+
43
+ ---
44
+
45
+ ## 3. The request timed out
46
+
47
+ **Cause, when it follows a `job_status` call with `sync: true`:** a structural incompatibility,
48
+ not a slow network. Higgsfield's `sync` mode polls server-side for **up to ~25 seconds**. The
49
+ host's hosted-MCP transport aborts a federated request sooner (the host guidance gives its
50
+ ceiling), so the request is always killed before it can answer.
51
+
52
+ **Do:** call `job_status` again **without** `sync`, and poll. It returns instantly and it works.
53
+
54
+ **Do not:** tell the operator Higgsfield is slow or down. Nothing is wrong with Higgsfield here.
55
+
56
+ ---
57
+
58
+ ## 4. A bare internal error after a federated call
59
+
60
+ **Cause:** the host lost the real reason on the way out to you. The true reason may exist in the
61
+ run detail. On this integration it most often wraps the timeout above.
62
+
63
+ **Do:** treat it as "the reason was lost", not as "an unknown catastrophe". Re-run the same call
64
+ on a path that reports properly, or drop the flag that most likely caused it (`sync: true` is the
65
+ usual culprit on this integration). Report it honestly as a lost error message.
66
+
67
+ **Do not:** invent a cause. **Do not** report it to the operator as though `INTERNAL_ERROR` were
68
+ the actual diagnosis.
69
+
70
+ ---
71
+
72
+ ## 5. The server "is disconnected: its authorization expired or was revoked"
73
+
74
+ **Cause:** the OAuth access token has expired. It is short-lived — on the order of a day.
75
+
76
+ **Do:** call `external_mcp_reauth_prompt`. It shows the operator a real in-chat notice naming the
77
+ server and pointing them at where to sign in again. **You cannot finish an OAuth sign-in
78
+ yourself**, and neither can that tool.
79
+
80
+ After the operator confirms they have reconnected, retry the **original** failed call exactly
81
+ once, and report its real outcome.
82
+
83
+ **Do not:** call this tool for any other kind of failure. **Do not** keep retrying the failing
84
+ call while the notice is up.
85
+
86
+ ---
87
+
88
+ ## 6. `media_import_from_url` returns 403 or 404
89
+
90
+ **Cause:** almost always an expired vendor URL. Higgsfield's CDN links are time-limited.
91
+
92
+ **Do:** get a fresh URL from `job_status` for the same job id and import that.
93
+
94
+ **Do not:** retry the same dead URL, and do not fall back to downloading the file and re-uploading
95
+ it — you do not need to hold the bytes, and there is no path for you to do so anyway.
96
+
97
+ ---
98
+
99
+ ## 7. `media_import_from_url` rejects the file
100
+
101
+ **Cause:** the format is outside the accepted set. The host checks the **actual bytes**, not the
102
+ served `Content-Type`, and accepts only the image and video formats it supports. A URL that
103
+ returns HTML (an error page, a login wall) is refused rather than stored as a broken asset.
104
+
105
+ **Do:** check that the URL you passed is the `uri` from the completed `job_status` resource link,
106
+ not a page URL. Report the refusal as-is — it is the guard working.
107
+
108
+ ---
109
+
110
+ ## 8. Everything succeeded but nothing is in Media
111
+
112
+ **Cause:** you stopped after `generate_image`, or after `job_status`. Neither one puts anything in
113
+ the Media library. Only `media_import_from_url` does.
114
+
115
+ **Do:** run step 4. Then confirm by the returned `media.id` and `media.publicUrl` — not by the
116
+ fact that earlier calls returned 200.
@@ -0,0 +1,142 @@
1
+ # Models, plans, and credits
2
+
3
+ **Historical examples, not current account knowledge.** Read or refresh `account.json` in this
4
+ plugin’s learned memory and confirm the live schema. Never copy these examples into learned memory
5
+ as if this account had produced them.
6
+
7
+ Everything here was observed against the live connected Higgsfield account on 2026-09-09. Where a
8
+ fact is about *this* account rather than about Higgsfield in general, it says so.
9
+
10
+ ---
11
+
12
+ ## `models_explore` — what it actually answers
13
+
14
+ `mcp__higgsfield__models_explore` takes an `action`:
15
+
16
+ | action | Use it for |
17
+ |---|---|
18
+ | `recommend` | "which model suits this goal" — pass `query` plus input context |
19
+ | `get` | one model's constraints (`model_id` required) |
20
+ | `list` / `search` | browsing the catalog |
21
+
22
+ Useful filters: `type` (`image` / `video` / `audio` / `3d`) and `input` (`text` for text-only,
23
+ `image` for models that accept reference media). For a plain text prompt with no reference image,
24
+ `{"action":"recommend","type":"image","input":"text"}` is the right query.
25
+
26
+ Each returned item carries its own `aspect_ratios`, `parameters`, and durations. Some carry
27
+ `supports_unlim` — see below, and do not read it as "this is free for me."
28
+
29
+ **`models_explore` is read-only and needs no write grant.** Only `generate_image` does.
30
+
31
+ ---
32
+
33
+ ## Cost preflight: `get_cost`
34
+
35
+ `generate_image` accepts `get_cost: true` inside `params`. It prices the request and **submits
36
+ nothing**:
37
+
38
+ ```json
39
+ { "params": { "model": "recraft_v4_1", "prompt": "…", "get_cost": true } }
40
+ ```
41
+
42
+ Observed response:
43
+
44
+ ```
45
+ Cost preflight for recraft_v4_1: 1.25 credits (1.25 exact). No job submitted.
46
+ ```
47
+
48
+ with `structuredContent.cost = { credits: 1.25, credits_exact: 1.25 }`.
49
+
50
+ Use it when the operator asks what something will cost, or before a model you have not used
51
+ before. It is the one call in this integration that is guaranteed free of side effects.
52
+
53
+ **A successful preflight does not mean the generation will be accepted.** On this account the
54
+ preflight for `recraft_v4_1` succeeded *and the submit that followed it was refused* by the plan
55
+ gate. Preflight proves the connection, the auth, and the model id are all fine. It says nothing
56
+ about the account's entitlement to start a job.
57
+
58
+ ---
59
+
60
+ ## The plan gate
61
+
62
+ Some models are refused at submit time with exactly this:
63
+
64
+ ```
65
+ Error starting generation: Requires basic plan or higher.
66
+ ```
67
+
68
+ The structured payload carries `monetization_intent: "upgrade"`, a `recovery_tool` of
69
+ `show_plans_and_credits`, and a `request_id`.
70
+
71
+ Observed on the connected account, 2026-09-09:
72
+
73
+ | Model | Preflight | Submit |
74
+ |---|---|---|
75
+ | `gpt_image_2` (Higgsfield's own stated default) | — | ✗ Requires basic plan or higher |
76
+ | `recraft_v4_1` | ✓ 1.25 credits | ✗ Requires basic plan or higher |
77
+ | `z_image` | — | ✓ Job submitted, image delivered |
78
+
79
+ ### How to read this correctly
80
+
81
+ **It is an account gate, not a model gate.** Two different models from two different providers
82
+ returning the *identical* message is the tell. Do not conclude "that model id is wrong" or "the
83
+ Higgsfield connection is broken" — the connection is demonstrably fine, because the preflight on
84
+ the same model in the same session succeeded.
85
+
86
+ **Do not retry it.** The account's plan does not change between two tool calls.
87
+
88
+ **Try a model that is not gated before you escalate.** `z_image` is the one verified to work on
89
+ this account. This is worth one attempt, and it is the difference between delivering the image
90
+ and handing the operator a bill.
91
+
92
+ **If everything is gated, stop and ask.** Present it as a real choice — upgrading the Higgsfield
93
+ plan is the operator's money. Note that `show_plans_and_credits`, the recovery tool Higgsfield
94
+ itself names, is **not in this deployment's operator allowlist**, so you cannot call it. Say what
95
+ you found and let them decide.
96
+
97
+ ---
98
+
99
+ ## The free-trial "unlim" allowance is not a fallback
100
+
101
+ `models_explore` reports a top-level `unlim` block, and items may carry `supports_unlim`. On this
102
+ account it reports:
103
+
104
+ ```
105
+ unlim: { available: false }
106
+ ```
107
+
108
+ with the server's own note that unlim is *"not spendable right now"* and that passing `use_unlim`
109
+ returns a typed rejection rather than a generation.
110
+
111
+ So: **`supports_unlim` on a model does not mean you can use it.** The model-level flag says the
112
+ model *accepts* unlim generations; the top-level `available` says whether this caller can spend
113
+ any. Read the top-level one. When it is `false`, `use_unlim` is not an escape from the plan gate
114
+ — it is a second, differently-worded refusal.
115
+
116
+ Note also that `use_unlim` caps `count` to 1 regardless of what you asked for.
117
+
118
+ ---
119
+
120
+ ## What is and is not enabled here
121
+
122
+ This plugin covers images and video. The workflow's tool list includes `generate_image` and
123
+ `generate_video`, followed by `job_status` polling and `media_import_from_url` for the completed
124
+ CDN asset. The owner confirmed video coverage on 2026-10-04. Consult the live federated tool list
125
+ for each generator's input schema and the current connection's allowlist/write grants.
126
+
127
+ The seven-tool, image-only allowlist recorded during the September image trial was a snapshot of
128
+ that operator's connection, not a limit imposed by this plugin. `plugin.json` currently declares
129
+ only `models_explore` and `job_status` as default read tools; it does not deny video or automatically
130
+ grant generation writes. For a video request, `generate_video` must be both allowlisted and granted
131
+ "may write", just as `generate_image` is for images. SKILL.md's setup table includes both.
132
+
133
+ For video, use the same asynchronous chain: submit `generate_video`, poll `job_status` without
134
+ `sync:true` until completion, then import the video CDN URL using `media_import_from_url`.
135
+ The import tool accepts `video/mp4` and `video/webm`. A job id alone does not mean the video
136
+ exists or has reached the site's Media library. Select a video model using the live model list;
137
+ image-model plan results above do not establish a video model's availability.
138
+
139
+ Other advertised tools (upscaling, billing, publishing, deployment, or sandbox execution) still
140
+ require their own operator allowlist entries and write grants where applicable. A
141
+ not-allowlisted refusal describes that connection's current policy; report the missing
142
+ grant only when it blocks the capability the operator requested.
package/jev/mcp.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
3
+ "mcpServers": {}
4
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
+ "name": "jev",
4
+ "version": "1.0.0",
5
+ "description": "Teaches an agent what Jev (TypeSafe's 'System One' model) is and when it belongs in a design: a fast, cheap, non-generative model that takes state plus a typed Choice/Score/Noul question and returns a typed answer with a calibrated probability distribution, for classification, routing, scoring, and confidence-gated automation \u2014 not for writing prose. Covers the three primitives' exact request/response shapes, how to read and threshold confidence, the documented architectural patterns, jev-1.13's known jaggedness (counting, dates, indirection, adversarial content, generation), and both the HTTP API and the JavaScript SDK. This plugin declares no MCP server: Jev has no official MCP integration, so a host's assistant cannot call it directly through chat yet. The skill exists for designing and writing code that calls Jev itself, authenticated with an API key (TYPESAFE_API_KEY, the documented SDK env var) the operator sets outside of chat.",
6
+ "author": "Tovu",
7
+ "license": "Apache-2.0",
8
+ "extensions": {
9
+ "tovu": {
10
+ "summary": "Helps you plan and write software that uses Jev, TypeSafe's fast AI model for sorting and scoring. Needs your own TypeSafe key.",
11
+ "id": "tovu/jev",
12
+ "provides": [
13
+ "skill-discovery"
14
+ ]
15
+ }
16
+ },
17
+ "keywords": [
18
+ "jev",
19
+ "typesafe",
20
+ "typesafe-ai",
21
+ "system-one",
22
+ "classification",
23
+ "routing",
24
+ "triage",
25
+ "scoring",
26
+ "ranking",
27
+ "re-ranking",
28
+ "confidence",
29
+ "calibration",
30
+ "probability",
31
+ "choice",
32
+ "score",
33
+ "noul",
34
+ "structured-output",
35
+ "decision",
36
+ "judgment",
37
+ "extraction",
38
+ "guardrails",
39
+ "sdk",
40
+ "api",
41
+ "no-mcp",
42
+ "skill-discovery"
43
+ ]
44
+ }