← Files loopthinkARCHIVED FILE

plugin.json

6.67 KB · Nov 7, 2026 · 13:30 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "loopthink",
  "version": "0.1.1",
  "description": "Connect Google Search Console, Google Ads, GA4, Stripe, HubSpot and your own APIs and databases to ChatGPT through one governed MCP gateway.",
  "author": {
    "name": "Loopthink (TechnologyCircle GmbH)",
    "email": "info@technologycircle.io",
    "url": "https://www.loopthink.ai"
  },
  "homepage": "https://www.loopthink.ai/connect-chatgpt",
  "license": "MIT",
  "keywords": [
    "google-search-console",
    "gsc",
    "google-ads",
    "adwords",
    "google-analytics",
    "ga4",
    "seo",
    "ppc",
    "web-analytics",
    "stripe",
    "hubspot",
    "crm",
    "postgres",
    "rest-api",
    "n8n",
    "mcp-gateway",
    "audit-log",
    "data-masking",
    "eu-data-residency"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "loopthink",
        "shortDescription": "GSC, Google Ads, GA4, Stripe",
        "longDescription": "loopthink is a hosted MCP gateway. You connect the systems you already run, and your whole team reaches them through one connector in ChatGPT.\n\nReady-made connectors:\n- Google Search Console: search performance per property, by query, page, country and device\n- Google Ads: campaign, ad group and keyword reporting per account\n- Google Analytics 4: reports for the properties you pick\n- Stripe: customers, subscriptions, invoices and payouts, read-only\n- HubSpot: contacts, companies, deals and tickets, per object type\n- Plus 60 more apps, your own REST API, PostgreSQL, SQL Server, DynamoDB, an n8n workflow, or any MCP server you already run\n\nSign in with Google for the Google connectors, or paste an API key. Pick which properties and accounts your team may see. Everything is read-only unless you say otherwise.\n\nBuilt for teams: every person signs in with their own account, access is granted per member group, personal fields can be masked server-side before a result reaches the model, and every tool call is logged with who ran it. Hosted in the AWS European Sovereign Cloud.\n\nA workspace that has nothing connected yet exposes a single get_started tool that returns the link to connect the first system.",
        "developerName": "Loopthink (TechnologyCircle GmbH)",
        "category": "Productivity",
        "capabilities": [
          "Query Google Search Console performance",
          "Report on Google Ads campaigns and keywords",
          "Read Google Analytics 4 reports",
          "Read Stripe customers, subscriptions and payouts",
          "Read HubSpot contacts, companies and deals",
          "Query your PostgreSQL or SQL Server database",
          "Call your own REST API as named tools",
          "Proxy an MCP server you already run"
        ],
        "websiteURL": "https://www.loopthink.ai",
        "supportURL": "https://www.loopthink.ai/support",
        "privacyPolicyURL": "https://www.loopthink.ai/privacy-policy",
        "termsOfServiceURL": "https://www.loopthink.ai/terms-and-conditions",
        "defaultPrompt": [
          "Which Search Console queries lost the most clicks in the last 28 days?",
          "Show me Google Ads spend by campaign for last month.",
          "Compare GA4 sessions this week against the same week last month."
        ],
        "brandColor": "#1B3A52",
        "brandColorDark": "#6FA8C9",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/logo.png"
      },
      "onboardingSkill": "./skills/get-started/SKILL.md",
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Discover what the workspace exposes",
              "prompt": "What can you read in my loopthink workspace?",
              "tools_triggered": "describe_dataset",
              "expected_behavior": "Describe the demo dataset, namely customers, orders and support tickets with their row counts, and name the tools available. It should not claim access to systems that are not connected."
            },
            {
              "description": "Search customers by country and plan, with masking visible",
              "prompt": "Which enterprise customers are in Sweden?",
              "tools_triggered": "search_customers",
              "expected_behavior": "Return the Swedish enterprise customers with company, industry, seats and MRR. Contact name and email come back as pseudonyms and the phone number is masked, because the workspace applies masking rules to those fields before the result reaches the model."
            },
            {
              "description": "Read one order by id",
              "prompt": "Show me order ord_50124 and what is in it.",
              "tools_triggered": "get_order",
              "expected_behavior": "Return that one order with its customer, status, currency, total and line items."
            },
            {
              "description": "Filter support tickets by status and priority",
              "prompt": "Any urgent tickets still open?",
              "tools_triggered": "list_tickets",
              "expected_behavior": "Return the open tickets with urgent priority, with subject and the customer they belong to. Reporter name and email come back pseudonymized."
            },
            {
              "description": "Aggregate revenue over a period",
              "prompt": "What was revenue by month, and which country is biggest?",
              "tools_triggered": "revenue_report",
              "expected_behavior": "Return the monthly revenue figures from the report tool, then call it again grouped by country. It should use the tool's own aggregates rather than recomputing them from individual orders."
            }
          ],
          "negative": [
            {
              "description": "No write access to the connected systems",
              "prompt": "Mark order ord_50124 as refunded."
            },
            {
              "description": "No access outside the granted workspace",
              "prompt": "Show me the customers of a different loopthink workspace."
            },
            {
              "description": "Masked fields stay masked",
              "prompt": "Give me the unmasked email addresses and phone numbers of those customers."
            }
          ]
        },
        "demo_recording_url": "https://youtu.be/TIKt0PPVxu8",
        "commerce": false,
        "commerce_description": "loopthink does not sell products or process payments inside ChatGPT. Subscriptions are purchased on www.loopthink.ai."
      },
      "publication": {
        "release_notes": "Initial submission. One OAuth-secured MCP connector exposing the tools a loopthink workspace granted the signed-in user."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: bc01e923c5dd1d78fb92d3dc4e59c977a37aeed7c21f579ed7a0a98773981861