@jini-ai/agent-plugins 0.6.16 → 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.
- package/CHANGELOG.md +35 -1
- package/NOTICE +14 -0
- package/README.md +35 -14
- package/charts-echarts/plugin.json +39 -0
- package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
- package/charts-recharts/plugin.json +32 -0
- package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
- package/cloudflare/NOTES.md +16 -0
- package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
- package/cloudflare/lib/api.mjs +96 -0
- package/cloudflare/lib/assets.mjs +65 -0
- package/cloudflare/lib/dns.mjs +32 -0
- package/cloudflare/lib/domain-inventory.mjs +61 -0
- package/cloudflare/lib/domain-status.mjs +48 -0
- package/cloudflare/lib/domains.mjs +95 -0
- package/cloudflare/lib/forms.mjs +254 -0
- package/cloudflare/lib/pages-upload.mjs +51 -0
- package/cloudflare/lib/target.mjs +165 -0
- package/cloudflare/lib/workers-upload.mjs +48 -0
- package/cloudflare/lib/zones.mjs +25 -0
- package/cloudflare/mcp.json +4 -0
- package/cloudflare/plugin.json +96 -0
- package/cloudflare/skills/cloudflare/SKILL.md +57 -0
- package/cloudflare/skills/cloudflare/references/domains.md +31 -0
- package/cloudflare/skills/cloudflare/references/pages.md +18 -0
- package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
- package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
- package/cloudflare/skills/cloudflare/references/workers.md +42 -0
- package/cloudflare/targets/cloudflare-pages.mjs +12 -0
- package/cloudflare/targets/cloudflare-workers.mjs +17 -0
- package/cloudflare/tovu-consent.json +6 -0
- package/cloudflare/tovu-deploy-targets.json +630 -0
- package/cloudflare/tovu-form-destinations.json +12 -0
- package/cloudflare/worker/forms-receiver.mjs +249 -0
- package/composio/mcp.json +10 -0
- package/composio/plugin.json +68 -0
- package/composio/skills/composio/SKILL.md +85 -0
- package/dist/core/identity-namespace.d.ts +12 -0
- package/dist/core/identity-namespace.js +20 -0
- package/dist/folder-zip-node.js +29 -7
- package/dist/lifecycle/bundled-digests.js +4 -3
- package/dist/lifecycle/install.d.ts +7 -0
- package/dist/lifecycle/install.js +45 -3
- package/dist/lifecycle/manifest.d.ts +2 -2
- package/dist/lifecycle/manifest.js +5 -3
- package/dist/lifecycle/node.js +2 -0
- package/dist/lifecycle/persistent-state.js +1 -1
- package/dist/lifecycle/ports.d.ts +8 -0
- package/dist/lifecycle/seed-bundled.js +4 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +3 -2
- package/fly/deploy-configs/fly.mjs +115 -0
- package/fly/deploy-ops/fly.mjs +102 -0
- package/fly/mcp.json +4 -0
- package/fly/plugin.json +81 -0
- package/fly/scripts/render-deploy-workflow.mjs +150 -0
- package/fly/skills/fly/SKILL.md +43 -0
- package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
- package/fly/skills/fly/references/fly.template.toml +81 -0
- package/fly/tovu-credential-schemes.json +11 -0
- package/fly/tovu-deploy-configs.json +21 -0
- package/fly/tovu-deploy-ops.json +14 -0
- package/github/deploy-ops/github-actions.mjs +164 -0
- package/github/deployments/github.mjs +415 -0
- package/github/mcp.json +4 -0
- package/github/plugin.json +105 -0
- package/github/skills/github/SKILL.md +249 -0
- package/github/skills/github/references/actions.md +224 -0
- package/github/skills/github/references/auth-and-tokens.md +140 -0
- package/github/skills/github/references/repo-files.md +135 -0
- package/github/skills/github/references/site-backup.md +159 -0
- package/github/skills/github/references/source-control.md +123 -0
- package/github/source-control/backup-push.mjs +242 -0
- package/github/source-control/commit-site.mjs +459 -0
- package/github/source-control/github.mjs +93 -0
- package/github/source-control/write-files.mjs +468 -0
- package/github/tovu-deploy-ops.json +13 -0
- package/github/tovu-source-control.json +117 -0
- package/github-pages/NOTES.md +19 -0
- package/github-pages/mcp.json +4 -0
- package/github-pages/plugin.json +48 -0
- package/github-pages/skills/github-pages/SKILL.md +44 -0
- package/github-pages/targets/github-pages.mjs +543 -0
- package/github-pages/tovu-deploy-targets.json +327 -0
- package/google-login/exports/google-g.svg +1 -0
- package/google-login/exports/sign-in-button.css +68 -0
- package/google-login/exports/sign-in-button.html +4 -0
- package/google-login/mcp.json +4 -0
- package/google-login/plugin.json +59 -0
- package/google-login/skills/google-login/SKILL.md +96 -0
- package/google-login/tovu-login-providers.json +21 -0
- package/google-workspace/README.md +132 -0
- package/google-workspace/form-destinations/README.md +87 -0
- package/google-workspace/form-destinations/dedupe.mjs +43 -0
- package/google-workspace/form-destinations/delivery-result.mjs +69 -0
- package/google-workspace/form-destinations/mapping.mjs +152 -0
- package/google-workspace/form-destinations/sheets.mjs +202 -0
- package/google-workspace/lib/auth.mjs +81 -0
- package/google-workspace/lib/drive-files.mjs +54 -0
- package/google-workspace/lib/form-destination-settings.mjs +72 -0
- package/google-workspace/lib/http.mjs +168 -0
- package/google-workspace/lib/picker-flow.mjs +171 -0
- package/google-workspace/lib/picker-selection.mjs +107 -0
- package/google-workspace/lib/product-state.mjs +93 -0
- package/google-workspace/lib/request-policy.mjs +163 -0
- package/google-workspace/lib/sheets-a1.mjs +79 -0
- package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
- package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
- package/google-workspace/lib/sheets-client.mjs +286 -0
- package/google-workspace/lib/surface-actions.mjs +107 -0
- package/google-workspace/mcp.json +4 -0
- package/google-workspace/plugin.json +77 -0
- package/google-workspace/products.json +12 -0
- package/google-workspace/skills/google-workspace/SKILL.md +82 -0
- package/google-workspace/skills/google-workspace/references/connection.md +102 -0
- package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
- package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
- package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
- package/google-workspace/tools/account-info.mjs +18 -0
- package/google-workspace/tools/sheets/README.md +54 -0
- package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
- package/google-workspace/tools/sheets/copy.mjs +23 -0
- package/google-workspace/tools/sheets/create.mjs +35 -0
- package/google-workspace/tools/sheets/find-replace.mjs +38 -0
- package/google-workspace/tools/sheets/find.mjs +52 -0
- package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
- package/google-workspace/tools/sheets/get.mjs +22 -0
- package/google-workspace/tools/sheets/values-append.mjs +27 -0
- package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
- package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
- package/google-workspace/tools/sheets/values-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-get.mjs +21 -0
- package/google-workspace/tools/sheets/values-update.mjs +26 -0
- package/google-workspace/tools/sheets-admin/README.md +45 -0
- package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
- package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
- package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
- package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
- package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
- package/google-workspace/tools/sheets-admin/format.mjs +70 -0
- package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
- package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
- package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
- package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
- package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
- package/google-workspace/tovu-admin-surfaces.json +63 -0
- package/google-workspace/tovu-agent-tools.json +1178 -0
- package/google-workspace/tovu-connections.json +35 -0
- package/google-workspace/tovu-form-destinations.json +10 -0
- package/google-workspace/ui/README.md +73 -0
- package/google-workspace/ui/connection-panel.handler.mjs +167 -0
- package/google-workspace/ui/connection-panel.html +17 -0
- package/google-workspace/ui/connection-panel.mjs +189 -0
- package/google-workspace/ui/connection-view.mjs +120 -0
- package/google-workspace/ui/destination-panel.handler.mjs +106 -0
- package/google-workspace/ui/destination-panel.html +17 -0
- package/google-workspace/ui/destination-panel.mjs +150 -0
- package/google-workspace/ui/dom.mjs +140 -0
- package/google-workspace/ui/panel.css +170 -0
- package/google-workspace/ui/picker-flow.mjs +87 -0
- package/google-workspace/ui/picker-view.mjs +44 -0
- package/google-workspace/ui/picker.handler.mjs +56 -0
- package/google-workspace/ui/picker.html +17 -0
- package/google-workspace/ui/picker.mjs +88 -0
- package/google-workspace/ui/surface-client.mjs +227 -0
- package/higgsfield-media/mcp.json +9 -0
- package/higgsfield-media/plugin.json +109 -0
- package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
- package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
- package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
- package/jev/mcp.json +4 -0
- package/jev/plugin.json +44 -0
- package/jev/skills/jev/SKILL.md +308 -0
- package/jev/skills/jev/references/cookbooks.md +197 -0
- package/jev/skills/jev/references/jaggedness.md +135 -0
- package/jev/skills/jev/references/javascript-sdk.md +146 -0
- package/jev/skills/jev/references/patterns.md +123 -0
- package/jev/skills/jev/references/primitives-reference.md +187 -0
- package/langfuse/plugin.json +22 -0
- package/meilisearch/mcp.json +4 -0
- package/meilisearch/plugin.json +54 -0
- package/meilisearch/providers/meilisearch.mjs +651 -0
- package/meilisearch/skills/meilisearch/SKILL.md +43 -0
- package/meilisearch/tovu-search-providers.json +10 -0
- package/netlify/NOTES.md +13 -0
- package/netlify/mcp.json +4 -0
- package/netlify/plugin.json +47 -0
- package/netlify/skills/netlify/SKILL.md +39 -0
- package/netlify/targets/netlify.mjs +384 -0
- package/netlify/tovu-consent.json +6 -0
- package/netlify/tovu-deploy-targets.json +163 -0
- package/opentelemetry/mcp.json +4 -0
- package/opentelemetry/plugin.json +52 -0
- package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
- package/package.json +161 -6
- package/posthog/mcp.json +4 -0
- package/posthog/plugin.json +46 -0
- package/posthog/skills/posthog/SKILL.md +36 -0
- package/railway/deploy-configs/railway.mjs +135 -0
- package/railway/deploy-ops/railway.mjs +167 -0
- package/railway/mcp.json +4 -0
- package/railway/plugin.json +45 -0
- package/railway/skills/railway/SKILL.md +66 -0
- package/railway/tovu-deploy-configs.json +16 -0
- package/railway/tovu-deploy-ops.json +11 -0
- package/render/deploy-configs/render.mjs +141 -0
- package/render/deploy-ops/render.mjs +152 -0
- package/render/mcp.json +4 -0
- package/render/plugin.json +47 -0
- package/render/skills/render/SKILL.md +63 -0
- package/render/tovu-deploy-configs.json +16 -0
- package/render/tovu-deploy-ops.json +11 -0
- package/resend/NOTES.md +52 -0
- package/resend/adapters/resend.mjs +161 -0
- package/resend/lib/domains.mjs +137 -0
- package/resend/lib/errors.mjs +25 -0
- package/resend/lib/feedback.mjs +118 -0
- package/resend/mcp.json +13 -0
- package/resend/plugin.json +192 -0
- package/resend/skills/resend/SKILL.md +107 -0
- package/resend/tovu-mail-adapters.json +22 -0
- package/s3-compatible/NOTES.md +11 -0
- package/s3-compatible/mcp.json +4 -0
- package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
- package/s3-compatible/plugin.json +56 -0
- package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
- package/s3-compatible/targets/s3-compatible.mjs +1054 -0
- package/s3-compatible/tovu-deploy-targets.json +432 -0
- package/s3-compatible/tovu-object-stores.json +29 -0
- package/sentry/mcp.json +4 -0
- package/sentry/plugin.json +49 -0
- package/sentry/skills/sentry/SKILL.md +34 -0
- package/shopify/mcp.json +4 -0
- package/shopify/plugin.json +22 -0
- package/shopify/skills/shopify/SKILL.md +103 -0
- package/shopify/skills/shopify/references/catalog-sync.md +74 -0
- package/shopify/skills/shopify/references/domains.md +26 -0
- package/shopify/skills/shopify/references/live-storefront.md +34 -0
- package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
- package/site-compliance/mcp.json +4 -0
- package/site-compliance/plugin.json +34 -0
- package/site-compliance/skills/site-compliance/SKILL.md +220 -0
- package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
- package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
- package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
- package/site-import/mcp.json +4 -0
- package/site-import/plugin.json +41 -0
- package/site-import/skills/site-import/SKILL.md +232 -0
- package/site-import/skills/site-import/references/content-mapping.md +166 -0
- package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
- package/site-import/skills/site-import/references/theme-extraction.md +34 -0
- package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/slide-design/mcp.json +4 -0
- package/slide-design/plugin.json +26 -0
- package/slide-design/skills/slide-design/SKILL.md +103 -0
- package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
- package/slide-design/skills/slide-design/references/html-deck.md +175 -0
- package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
- package/slide-design/skills/slide-design/references/review.md +93 -0
- package/slide-design/skills/slide-design/references/storyline.md +118 -0
- package/stripe/plugin.json +22 -0
- package/supabase/mcp.json +26 -0
- package/supabase/plugin.json +78 -0
- package/supabase/skills/supabase/SKILL.md +169 -0
- package/supabase/skills/supabase/references/failure-modes.md +101 -0
- package/ui-ux-design/CHANGELOG.md +28 -0
- package/ui-ux-design/LICENSE +201 -0
- package/ui-ux-design/NOTICE +14 -0
- package/ui-ux-design/README.md +62 -0
- package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/ui-ux-design/mcp.json +4 -0
- package/ui-ux-design/plugin.json +26 -0
- package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
- package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
- package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
- package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
- package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
- package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
- package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
- package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
- package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
- package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
- package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
- package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
- package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
- package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
- package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
- package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
- package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
- package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
- package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
- package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
- package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
- package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
- package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
- package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
- package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
- package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
- package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
- package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
- package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
- package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
- package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
- package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
- package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
- package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
- package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
- package/vercel/NOTES.md +23 -0
- package/vercel/mcp.json +4 -0
- package/vercel/object-stores/vercel-blob.mjs +147 -0
- package/vercel/plugin.json +47 -0
- package/vercel/skills/vercel/SKILL.md +48 -0
- package/vercel/targets/vercel.mjs +586 -0
- package/vercel/tovu-consent.json +6 -0
- package/vercel/tovu-deploy-targets.json +219 -0
- package/vercel/tovu-object-stores.json +10 -0
- package/wordpress/NOTES.md +33 -0
- package/wordpress/plugin.json +30 -0
- package/wordpress/skills/wordpress/SKILL.md +43 -0
- package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
- 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
package/jev/plugin.json
ADDED
|
@@ -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
|
+
}
|