ChatGPT

[Directories](/)

[Shared](/shared)[ChatGPT](/chatgpt)[Claude](/claude)[Cursor](/cursor)[Grok](/grok)[Registry](/mcp-registry)[Gemini](/gemini)

# ChatGPT

Plugin Directory. Submit With MCP at https://sails.app/mcp.

[Submission doc](https://developers.openai.com/plugins/deploy/submission) · [Packet](/chatgpt-packet)

## [Shared](/shared)

*   Our product call, not a store rule: bash\_exec stays on tools/list.
    
    Note
    
*   Reviewer demo login if the server requires sign-in. No MFA, SMS, or email-confirm. Claude also wants a fully populated account and every URL/step written out.
    
    Human
    
    Create the reviewer login. ChatGPT only requires this if OAuth/sign-in is on. Claude requires test credentials.
    
*   HTTPS website, support, privacy, and terms URLs. Live: sails.app, /contact, /legal/privacy, /legal/terms.
    
    AI
    
*   Our copy lock, not a store rule: 0 customer sentences say Sails makes zero inference calls.
    
    Note
    
*   Tool responses omit secrets, debug lines, internal ids, and user fields the privacy policy does not disclose. Privacy policy matches what tools return.
    
    AI
    
    Reported 2026-08-28.
    
    Official ChatGPT rule: strip unnecessary personal data, auth secrets, debug payloads, internal identifiers, and undisclosed user-related fields from tool responses. Then make https://sails.app/legal/privacy match what remains. Not a field-by-field inventory for its own sake.
    
*   ChatGPT: every tool has readOnlyHint, openWorldHint, destructiveHint, and a justification for each. Claude: every tool has a title and readOnlyHint or destructiveHint.
    
    AI
    
    Reported 2026-08-28.
    
    Platform work on the MCP server behind https://sails.app/mcp. ChatGPT requires all three hints plus a justification string for each value. Claude requires a title and readOnlyHint or destructiveHint. Bits must match side effects. Do not hide bash_exec. If you do not have the MCP server source, stop.
    

## ChatGPT

*   1 demo-recording URL that shows the main use cases and tools.
    
    Human
    
    Record it. Host it. Paste the URL in the form.
    
*   Display name ≤30. Short description ≤30, one line. Written: Sails / Add tools to your AI assistant.
    
    AI
    
*   Form still needs: long description ≤4,000, logo, category, release notes. Website/support/privacy/terms already live.
    
    Human
    
    Fill these in the OpenAI portal. Packet does not cover them yet.
    
*   v1 is tools only. Screenshots and CSP are required only if the server returns UI. Ours does not.
    
    Note
    
*   Verified individual or business identity in the OpenAI Platform. Apps Management write. Same org as the submit.
    
    Human
    
    Verify in OpenAI Platform organization settings.
    
*   At most 3 starter prompts. Each ≤128, one line, unique, no @mention. Written on /chatgpt-packet.
    
    AI
    
*   Submit With MCP. Universal URL is https://sails.app/mcp. Do not paste an existing connector id.
    
    Human
    
    Sign in to the OpenAI plugin portal. Apps Management write.
    
*   Exactly 5 positive and 3 negative test cases, plus release notes. Cases are written on /chatgpt-packet. Release notes still needed at submit.
    
    AI
    
*   Every MCP tool: accurate readOnlyHint, openWorldHint, destructiveHint, and a justification for each value.
    
    AI
    
    Reported 2026-08-28.
    
    Same as shared/tool-hints. ChatGPT rejects missing justifications. Mail send and bash_exec are write + openWorld + destructive. Publish is write + openWorld. Cron and goal are write. If you do not have the MCP server source, stop.
    
*   Scan Tools on the production URL https://sails.app/mcp succeeds and is current.
    
    AI
    
    This is the portal Scan Tools step, not a file we save ourselves. Confirm https://sails.app/mcp initializes and lists tools. A workspace connector list is not the scan.
    
*   If the portal shows a domain challenge: host the exact token at https://sails.app/.well-known/openai-apps-challenge. Raw token. Not JSON.
    
    Human, then AI
    
    OpenAI gives you the token when you open the form.
    
    Write that token as the raw body of https://sails.app/.well-known/openai-apps-challenge. GET 200. Not JSON. Not HTML.
