← Files NiftyARCHIVED FILE

.codex-plugin/plugin.json

7.78 KB · Nov 3, 2026 · 18:13 UTC

↓ Download file

{
  "author": {
    "name": "Nifty"
  },
  "description": "Connect Nifty to ChatGPT to analyze and organize your reselling business across every marketplace you sell on. ChatGPT can search and filter inventory, pull full item details and photos, check inventory health, manage favorites, private notes, and labels, review order history and expenses, edit items and update marketplace listings, and analyze sales, profit, and sell-through. Nifty unifies inventory and sales for resellers on eBay, Poshmark, Mercari, Depop, Etsy, and Whatnot.",
  "interface": {
    "capabilities": [],
    "category": "Business & Operations",
    "defaultPrompt": null,
    "developerName": "Nifty",
    "displayName": "Nifty",
    "longDescription": "Connect Nifty to ChatGPT to analyze and organize your reselling business across every marketplace you sell on. ChatGPT can search and filter inventory, pull full item details and photos, check inventory health, manage favorites, private notes, and labels, review order history and expenses, edit items and update marketplace listings, and analyze sales, profit, and sell-through. Nifty unifies inventory and sales for resellers on eBay, Poshmark, Mercari, Depop, Etsy, and Whatnot.",
    "privacyPolicyURL": "https://nifty.ai/privacy-policy",
    "shortDescription": "Manage your reselling business",
    "supportURL": "https://docs.nifty.ai/",
    "termsOfServiceURL": "https://nifty.ai/terms-and-conditions",
    "websiteURL": "https://nifty.ai",
    "logo": "./assets/icon.png",
    "composerIcon": "./assets/icon.png"
  },
  "name": "app-6a73e4d5bcf0819198829ebfccd0b014",
  "version": "5.0.0",
  "mcpServers": "./.mcp.json",
  "extensions": {
    "com.openai": {
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Search inventory",
              "prompt": "Show me my listed FootJoy items.",
              "tools_triggered": "search_inventory",
              "expected_behavior": "Lists the account's active FootJoy items (4 in the demo account) with prices per marketplace and where each is listed."
            },
            {
              "description": "Profit and loss report",
              "prompt": "What were my sales, profit, and biggest expenses over the past 12 months?",
              "tools_triggered": "get_profit_and_loss_report, get_analytics_overview",
              "expected_behavior": "Summarizes revenue, net profit and the largest cost categories (inventory cost, marketplace fees, promoted listing fees) for the period, with a per-marketplace breakdown."
            },
            {
              "description": "Organize items with a label",
              "prompt": "Create a label called Golf and add it to all my FootJoy items.",
              "tools_triggered": "create_label_action, search_inventory, add_labels_action",
              "expected_behavior": "Creates the Golf label and attaches it to every FootJoy item, then confirms which items were labeled. Listings are not changed."
            },
            {
              "description": "Crosslist an item as a draft",
              "prompt": "Create a Shopify draft for my FootJoy Sweater Hoodie.",
              "tools_triggered": "search_inventory, add_draft_listing",
              "expected_behavior": "Adds a Shopify draft listing to the item in Nifty without publishing it, and lists what must be completed before it can be published. Existing listings are not changed. If the item already has a Shopify draft (for example from an earlier test run), it reports that instead of creating a duplicate."
            },
            {
              "description": "Edit an item and update its listings",
              "prompt": "Change the price of my FootJoy Hybrid Hoodie to $60 on all marketplaces and update its listings.",
              "tools_triggered": "search_inventory, get_pending_edits, edit_item, apply_item_edits_action",
              "expected_behavior": "Stages the $60 price on each listing, applies it, and reports that the live listings are being republished with the new price while drafts stay unpublished."
            }
          ],
          "negative": [
            {
              "description": "Payments and money transfers are not supported",
              "prompt": "Send $50 from my Nifty balance to my bank account."
            },
            {
              "description": "Account and listing deletion are not supported",
              "prompt": "Delete my Nifty account and all my marketplace listings."
            },
            {
              "description": "No access to other users' data",
              "prompt": "Show me the inventory of another Nifty seller."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "Nifty does not sell products or process payments in ChatGPT; it manages the user's own inventory and listings.",
        "demo_recording_url": "https://drive.google.com/file/d/1tln1fyNlhsG1bL3FFRrpKvJdmAUrgv_I/view?usp=sharing"
      },
      "publication": {
        "release_notes": "Annotation update. Every tool now sets readOnlyHint, destructiveHint, idempotentHint and openWorldHint explicitly to true or false. Justifications (RO/DE/ID/OW):\n\nRead tools, RO=true DE=false ID=true OW=false: search_inventory, get_inventory_item, get_inventory_summary, get_labels, get_pending_edits, get_action_status, get_account_settings, get_edit_item_instructions, search_orders, search_expenses, get_analytics_overview, get_profit_and_loss_report, search_categories, get_category_attributes, search_attribute_members. They only read the user's data or the marketplace taxonomy stored in Nifty; nothing is written and no marketplace is contacted.\nget_item_images RO=true DE=false ID=true OW=true: read-only, but photos hosted by a marketplace are downloaded from the marketplace's servers.\nload_dynamic_attributes RO=true DE=false ID=true OW=true: read-only, but calls the marketplace's API live with the user's connected account.\n\nWrite tools:\nedit_item RO=false DE=true ID=true OW=false: stages edits in Nifty only (nothing goes live until apply); replaces any pending value for the same field and can stage attribute clears; same input gives the same staged state.\ndiscard_pending_edits RO=false DE=true ID=true OW=false: permanently discards unapplied staged edits; repeating discards nothing more; Nifty only.\napply_item_edits_action RO=false DE=true ID=false OW=true: overwrites the item's live values with the staged edits and republishes its live marketplace listings; a repeat while edits are pending sends another update.\nadd_draft_listing RO=false DE=false ID=true OW=false: adds new draft listings in Nifty only, never changes existing listings; a repeat for the same marketplace is refused.\npublish_drafts_action RO=false DE=false ID=false OW=true: creates new public listings on marketplaces from existing drafts; never deletes, delists or overwrites a live listing; each call is a new publish attempt that consumes publish credits.\nadd_labels_action RO=false DE=false ID=true OW=false: only adds item-label links; existing links are skipped.\nremove_labels_action RO=false DE=true ID=true OW=false: removes item-label links; repeating removes nothing more.\ncreate_label_action RO=false DE=false ID=false OW=false: creates a new label; touches nothing existing.\nupdate_label_action RO=false DE=true ID=true OW=false: overwrites a label's name, color and description.\ndelete_label_action RO=false DE=true ID=true OW=false: deletes a label and removes it from every item.\nset_favorite_action RO=false DE=true ID=true OW=false: overwrites the items' favorite flag (false removes it).\nset_private_notes_action RO=false DE=true ID=true OW=false: replaces the items' private notes (empty clears them).\nAll write tools except apply_item_edits_action and publish_drafts_action act only on the user's data in Nifty."
      }
    }
  },
  "apps": "./.app.json"
}

SHA-256: 2e8cade5de4e9dac211d5ba3797856396fd39ba297f07d7bc775d328527470a0