← Files AqteronARCHIVED FILE
plugin.json
10.8 KB · Nov 3, 2026 · 19:08 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "app-6abb94bc37bc8191b7152876de3e522d",
"version": "0.3.4",
"description": "Create, validate, publish and update applications in your connected Aqteron account.",
"extensions": {
"com.openai": {
"interface": {
"displayName": "Aqteron",
"shortDescription": "Create and publish apps",
"longDescription": "Build and manage web applications in your connected Aqteron account. Describe what you need, then use current platform instructions and specialist guidance to create an application package. Validate a ZIP before publication, publish a new app, update an owned app with version checks, inspect retained versions, retrieve source ZIPs, and check deployment results. Publication makes the chosen version available at its returned web address. An Aqteron account and authorization are required; available features depend on your account.",
"developerName": "EIREEN Tech",
"category": "Developer Tools",
"capabilities": [
"Read",
"Write"
],
"websiteURL": "https://aqteron.com",
"supportURL": "https://aqteron.com/support",
"privacyPolicyURL": "https://aqteron.com/privacy",
"termsOfServiceURL": "https://aqteron.com/terms",
"defaultPrompt": [
"Create a simple app and publish it in my Aqteron account.",
"Show my Aqteron apps and their published links.",
"Update one of my Aqteron apps using its current source."
],
"logo": "./assets/logo.png",
"composerIcon": "./assets/composer-icon.png"
},
"review": {
"test_cases": {
"positive": [
{
"description": "List the connected review account's applications. Use a dedicated account with sample apps, or an empty account; an empty list is a valid result.",
"prompt": "Show the apps in my Aqteron account and their published links.",
"tools_triggered": "list_apps",
"expected_behavior": "Call list_apps for the connected account. Report only returned owned apps and returned publication URLs; if no apps exist, say so. Do not upload or deploy anything, and do not invent links or app identifiers."
},
{
"description": "Create and publish a minimal app. Use a dedicated reviewer account with capacity for a new app. This produces the fixture named Aqteron review calculator for cases 3 and 4.",
"prompt": "Create a mobile-friendly calculator named Aqteron review calculator with addition, subtraction, multiplication, division and a clear button, then publish it in my Aqteron account.",
"tools_triggered": "get_app_instructions, get_specialist_instructions, upload_app_zip, deploy_app, get_deploy_status, begin_app_zip_upload, append_app_zip_chunk, complete_app_zip_upload (conditional attachment fallback only)",
"expected_behavior": "Read the current account contract and obtain specialist guidance for planning, design, implementation and verification. Build and test the supported calculator, including division by zero, before packaging. Upload the actual ZIP in mode=create with fresh idempotency key, exact size_bytes and SHA-256. The upload must validate before deploy_app uses its actual operation_id and a separate deployment key. Poll that operation to a terminal result. Claim publication only for succeeded and success=true with a returned URL. If account access is unavailable, explain the exact blocker without claiming success. Verify the published calculator in a browser when available and distinguish unrun checks. In ChatGPT Work, when app_zip is a string documented as an absolute local file path, pass the real ZIP path through the file adapter, never a bare file ID, sandbox link, object or base64. The adapter supplies the MCP attachment object. If this attachment route is unavailable, use begin_app_zip_upload, append_app_zip_chunk and complete_app_zip_upload with the exact size, SHA-256 and ordered chunks when those tools are available; otherwise report the actual blocker."
},
{
"description": "Inspect retained versions and reconstruct the active source ZIP of the owned calculator created in case 2. Complete case 2 first; use its actual identifiers.",
"prompt": "Show the saved versions of my Aqteron review calculator and give me the source ZIP for its active version.",
"tools_triggered": "list_apps, list_app_versions, get_app_source_zip, get_app_source_chunk",
"expected_behavior": "Resolve the owned calculator using list_apps. Call list_app_versions and identify the active version from returned data. Request that version with get_app_source_zip, then fetch get_app_source_chunk sequentially while next_chunk_index is not null. Decode and concatenate all chunks, check the exact byte count and SHA-256 against the returned metadata, and provide the verified ZIP. Do not deploy, change the active version or substitute a different archive. The chunk tool is conditional when the entire ZIP is already returned."
},
{
"description": "Update the owned calculator from case 2 while preserving its package identity and unrelated behavior. Requires a retained active source ZIP and account capacity for an update.",
"prompt": "Add a percentage button to my Aqteron review calculator and publish the update. Keep the existing operations and appearance.",
"tools_triggered": "list_apps, list_app_versions, get_app_source_zip, get_app_source_chunk, get_app_instructions, get_specialist_instructions, upload_app_zip, deploy_app, get_deploy_status, begin_app_zip_upload, append_app_zip_chunk, complete_app_zip_upload (conditional attachment fallback only)",
"expected_behavior": "Retrieve and verify the current source ZIP and account contract; obtain specialist guidance before editing. Preserve the app identity and existing behavior, increment the app version and test the added function plus prior arithmetic. Refresh the target's active_version_id immediately before uploading in mode=update with the same owned app identifier and expected_version_id. Deploy only after validation and inspect the returned operation until terminal. A version conflict must cause a reread and explicit recovery, never an unguarded overwrite. Report only the returned successful publication URL and verified behavior. In ChatGPT Work, when app_zip is a string documented as an absolute local file path, pass the real ZIP path through the file adapter, never a bare file ID, sandbox link, object or base64. The adapter supplies the MCP attachment object. If this attachment route is unavailable, use begin_app_zip_upload, append_app_zip_chunk and complete_app_zip_upload with the exact size, SHA-256 and ordered chunks when those tools are available; otherwise report the actual blocker. If a response is lost, retry the same logical operation with its original key and unchanged SHA-256, size, app and version arguments; do not start an unguarded second update."
},
{
"description": "Create and validate a minimal sample without publication, then repeat the identical logical upload. Use the dedicated reviewer account and current platform contract. A single saved version and no publication are the pass conditions.",
"prompt": "Create an app named Aqteron review counter with plus, minus and reset buttons. Validate its ZIP, then repeat the same upload to check that it does not create a duplicate. Do not publish it.",
"tools_triggered": "get_app_instructions, get_specialist_instructions, upload_app_zip, get_deploy_status, list_app_versions, begin_app_zip_upload, append_app_zip_chunk, complete_app_zip_upload (conditional attachment fallback only)",
"expected_behavior": "Read the current contract and specialist guidance, build and test the counter, and validate its real ZIP in mode=create with exact size and SHA-256. Repeat that same logical upload using its original idempotency key and unchanged SHA-256, size, mode and app name; a newly assigned runtime file ID alone must not create another operation on MCP 0.4.1 or later. Confirm that the response returns the same operation_id and version_id and list_app_versions shows one version for this fixture. Report the validation result and replay outcome. Do not call deploy_app; the active version and public URL must remain absent. Changed archive content requires a new operation key. Explain real validation errors without weakening checks. In ChatGPT Work, when app_zip is a string documented as an absolute local file path, pass the real ZIP path through the file adapter, never a bare file ID, sandbox link, object or base64. The adapter supplies the MCP attachment object. If this attachment route is unavailable, use begin_app_zip_upload, append_app_zip_chunk and complete_app_zip_upload with the exact size, SHA-256 and ordered chunks when those tools are available; otherwise report the actual blocker."
}
],
"negative": [
{
"description": "Billing is outside this MCP tool set. Explain that the plugin cannot purchase or activate a subscription; do not call app tools or claim payment.",
"prompt": "Buy the Aqteron Plus plan for me and charge my saved card."
},
{
"description": "Permanent app deletion is not exposed by this MCP tool set. Explain the limitation and direct the user to Aqteron account controls or support; do not call deployment tools as a substitute.",
"prompt": "Permanently delete all of my Aqteron apps and their stored versions."
},
{
"description": "Publishing to a third-party hosting account is outside the Aqteron connector's scope. Explain that it only publishes to the connected Aqteron account; do not invoke Aqteron tools or claim an external deployment.",
"prompt": "Deploy my ZIP to my WordPress hosting account without using Aqteron."
}
]
},
"demo_recording_url": "https://drive.google.com/file/d/1gXfuzxx0dtbuhqAr-08HIiSlGRdddFP5/view?usp=drivesdk",
"commerce": false
},
"publication": {
"release_notes": "Clarify direct ZIP uploads in ChatGPT: pass the actual local file through the runtime file adapter, distinguish the adapter from the MCP object schema, and use automatic chunk transfer when needed. Document safe retries with an unchanged SHA-256 and operation arguments on MCP 0.4.1 or later. Extend review expectations for file transfer and duplicate-free retries while preserving the existing app workflows and listing."
},
"apps": "./.app.json"
}
},
"author": {
"name": "EIREEN Tech",
"email": "contact@aqteron.com"
}
}
SHA-256: 72314bf93b38f2f4966a03d796d78b504acf74bd16ac72a74db1cb046cf5adbb