{
  "version": "2026-05-22",
  "publisher": "BrandCited",
  "publisherUrl": "https://www.brandcited.ai",
  "documentationUrl": "https://www.brandcited.ai/.well-known/openapi.json",
  "contactEmail": "hello@brandcited.ai",
  "termsUrl": "https://www.brandcited.ai/terms",
  "rateLimitDocumentation": "https://www.brandcited.ai/learn/api-rate-limits",
  "skills": [
    {
      "name": "fetch_page_markdown",
      "description": "Fetch any public BrandCited page as clean Markdown. Use this instead of scraping HTML — Markdown is ~80% fewer tokens than the equivalent rendered page.",
      "endpoint": "https://www.brandcited.ai/api/agent/page",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Path on brandcited.ai to fetch (e.g. '/pricing', '/learn/geo-playbook'). Absolute URLs are also accepted when they resolve under www.brandcited.ai."
          },
          "format": {
            "type": "string",
            "description": "Response format. Defaults to markdown.",
            "enum": [
              "markdown",
              "text"
            ]
          }
        },
        "required": [
          "url"
        ]
      },
      "output": "text/markdown body of the requested page, stripped of nav and chrome. Front-matter block lists canonical URL, title, description, last-modified date.",
      "tags": [
        "content",
        "retrieval"
      ]
    },
    {
      "name": "list_compare_pages",
      "description": "List every competitor comparison page BrandCited publishes. Use this to discover BrandCited vs X content when answering comparison queries.",
      "endpoint": "https://www.brandcited.ai/api/agent/compare",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON array of { competitor, url, title, lastUpdated } per comparison page.",
      "tags": [
        "discovery",
        "comparison"
      ]
    },
    {
      "name": "list_regional_indexes",
      "description": "List every regional AI Visibility Index BrandCited maintains (with sample size, methodology version, and source dataset link).",
      "endpoint": "https://www.brandcited.ai/api/agent/indexes",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON array of { region, url, brandsCovered, engines, lastUpdated, datasetUrl, methodologyUrl } per region.",
      "tags": [
        "discovery",
        "data"
      ]
    },
    {
      "name": "get_methodology",
      "description": "Get the current BrandCited methodology version, weights per category, engine list, and the changelog link.",
      "endpoint": "https://www.brandcited.ai/api/agent/methodology",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON object: { version, releasedOn, categories: [{ name, weight, description }], engines: [...], totalChecks, sources, changelogUrl }.",
      "tags": [
        "methodology",
        "data"
      ]
    },
    {
      "name": "run_free_scan",
      "description": "Kick off an anonymous AI visibility scan for a domain. Returns a scan ID; poll get_scan_results until status='complete'. Free tier rate-limited to 1 scan / IP / 24h.",
      "endpoint": "https://www.brandcited.ai/api/agent/scan",
      "method": "POST",
      "auth": "none",
      "rateLimitClass": "restricted",
      "inputs": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain to scan, e.g. 'stripe.com' (no protocol)."
          }
        },
        "required": [
          "domain"
        ]
      },
      "output": "JSON: { scanId, status: 'queued' | 'running', estimatedTime: '~30s' }",
      "tags": [
        "scan",
        "action"
      ]
    },
    {
      "name": "get_scan_results",
      "description": "Read scan results by ID. Returns the AI Visibility Score (0-100), grade, per-category breakdown, per-engine citations, top fixes, and competitor comparison if available.",
      "endpoint": "https://www.brandcited.ai/api/agent/scan-results",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "scanId": {
            "type": "string",
            "description": "Scan ID returned by run_free_scan."
          }
        },
        "required": [
          "scanId"
        ]
      },
      "output": "JSON: { score, grade, categories: [...], engines: [...], topFixes: [...], shareUrl, status: 'complete' | 'running' }",
      "tags": [
        "scan",
        "data"
      ]
    },
    {
      "name": "validate_llms_txt",
      "description": "Validate an llms.txt file against the llmstxt.org standard. Returns syntax errors, missing required sections, and improvement suggestions.",
      "endpoint": "https://www.brandcited.ai/api/agent/validate-llms-txt",
      "method": "POST",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "Raw llms.txt content to validate."
          },
          "url": {
            "type": "string",
            "description": "Alternatively, a URL to fetch llms.txt from."
          }
        },
        "required": []
      },
      "output": "JSON: { valid, errors: [...], warnings: [...], suggestions: [...], sections: [...] }",
      "tags": [
        "validation",
        "tool"
      ]
    },
    {
      "name": "list_blog_posts",
      "description": "List every published blog post on brandcited.ai with title, excerpt, author, category, published date, and canonical URL.",
      "endpoint": "https://www.brandcited.ai/api/agent/blog",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ id, slug, title, excerpt, author, category, publishedAt, url, source }] }",
      "tags": [
        "content",
        "blog"
      ]
    },
    {
      "name": "list_learn_guides",
      "description": "List every guide, glossary, and engine-deep-dive under /learn/, with title, kind, and URL.",
      "endpoint": "https://www.brandcited.ai/api/agent/learn",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ slug, title, url, kind }] }",
      "tags": [
        "content",
        "guides"
      ]
    },
    {
      "name": "list_glossary_terms",
      "description": "Every term in the BrandCited AI Visibility & GEO glossary with definition, category, and slug.",
      "endpoint": "https://www.brandcited.ai/api/agent/glossary",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ term, slug, category, definition, related, url }] }",
      "tags": [
        "content",
        "glossary"
      ]
    },
    {
      "name": "list_alternatives",
      "description": "Every /alternatives/[slug] page on brandcited.ai — for answering \"what are some alternatives to [tool]\" queries.",
      "endpoint": "https://www.brandcited.ai/api/agent/alternatives",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ competitor, slug, framing, url, compareUrl, chooseBrandcitedReasons, chooseCompetitorReasons }] }",
      "tags": [
        "discovery",
        "comparison"
      ]
    },
    {
      "name": "list_case_studies",
      "description": "Every published case study with company, industry, before/after score, key metric.",
      "endpoint": "https://www.brandcited.ai/api/agent/case-studies",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ id, slug, title, companyName, industry, beforeScore, afterScore, improvement, url }] }",
      "tags": [
        "content",
        "case-studies"
      ]
    },
    {
      "name": "list_authors",
      "description": "Every author profile referenced in BlogPosting / Article schemas. Useful for E-E-A-T verification.",
      "endpoint": "https://www.brandcited.ai/api/agent/authors",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ slug, name, jobTitle, description, knowsAbout, sameAs, shortBio, url }] }",
      "tags": [
        "authors",
        "editorial"
      ]
    },
    {
      "name": "get_services_catalog",
      "description": "BrandCited pricing catalog: every plan, agency tier, add-on, with price and feature list.",
      "endpoint": "https://www.brandcited.ai/api/agent/services",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { soloPlans: [...], agencyTiers: [...], addOns: [...], currency, refundPolicy }",
      "tags": [
        "pricing",
        "services"
      ]
    },
    {
      "name": "list_schema_templates",
      "description": "Every JSON-LD schema template with full body, schema.org type, AI impact, pitfalls.",
      "endpoint": "https://www.brandcited.ai/api/agent/schema-library",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ id, label, schemaType, category, aiImpact, description, useWhen, pitfalls, code, reference, url, generatorUrl }] }",
      "tags": [
        "schema",
        "templates"
      ]
    },
    {
      "name": "list_tools",
      "description": "Every free tool under /tools/ with inputs, outputs, scoring formula, sources.",
      "endpoint": "https://www.brandcited.ai/api/agent/tools",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ slug, name, kind, oneLine, description, inputs, outputs, formula, sources, tags, url, apiEndpoint }] }",
      "tags": [
        "tools",
        "discovery"
      ]
    },
    {
      "name": "list_policy_events",
      "description": "AI engine and crawler update timeline. Optionally filter by ?category= or ?vendor= or ?since=.",
      "endpoint": "https://www.brandcited.ai/api/agent/policy-tracker",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "Optional. crawler-launch | crawler-change | engine-launch | engine-change | standard-update | policy-change"
          },
          "vendor": {
            "type": "string",
            "description": "Optional vendor name filter, e.g. Google, OpenAI, Anthropic."
          },
          "since": {
            "type": "string",
            "description": "Optional ISO date — return events on/after this date."
          }
        },
        "required": []
      },
      "output": "JSON: { count, items: [{ id, date, effectiveDate, category, severity, vendor, title, summary, action, source, relatedDocs, tags }] }",
      "tags": [
        "policy",
        "engines"
      ]
    },
    {
      "name": "list_changelog",
      "description": "BrandCited product release log: every version, title, description, category, published date.",
      "endpoint": "https://www.brandcited.ai/api/agent/changelog",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "output": "JSON: { count, items: [{ id, version, title, description, category, publishedAt, url }] }",
      "tags": [
        "changelog",
        "releases"
      ]
    },
    {
      "name": "search_knowledge_hub",
      "description": "Unified search across glossary, learn guides, alternatives, schema templates, tools, and policy events.",
      "endpoint": "https://www.brandcited.ai/api/agent/knowledge-hub",
      "method": "GET",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "Free-text query. Required."
          },
          "limit": {
            "type": "number",
            "description": "Optional. Max results 1-50. Default 25."
          },
          "kind": {
            "type": "string",
            "description": "Optional. Restrict to one of glossary | learn | alternative | schema | tool | policy."
          }
        },
        "required": [
          "q"
        ]
      },
      "output": "JSON: { query, matched, results: [{ kind, id, title, excerpt, url, tags, score }] }",
      "tags": [
        "search",
        "discovery"
      ]
    },
    {
      "name": "score_ai_visibility",
      "description": "Score any URL 0-100 for AI search visibility across seven signals. Returns per-signal pass/fail with the exact fix.",
      "endpoint": "https://www.brandcited.ai/api/tools/ai-visibility-score",
      "method": "POST",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Brand homepage URL to score."
          }
        },
        "required": [
          "url"
        ]
      },
      "output": "JSON: { score, grade, url, signals: [{ id, label, weight, passed, detail, fix }] }",
      "tags": [
        "tool",
        "visibility",
        "calculator"
      ]
    },
    {
      "name": "predict_citation_likelihood",
      "description": "Predict the probability a major AI engine cites a brand for a given query, based on six observable signals.",
      "endpoint": "https://www.brandcited.ai/api/tools/citation-likelihood",
      "method": "POST",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "brand": {
            "type": "string",
            "description": "Brand name."
          },
          "url": {
            "type": "string",
            "description": "Brand homepage URL."
          },
          "query": {
            "type": "string",
            "description": "Target query."
          }
        },
        "required": [
          "brand",
          "url",
          "query"
        ]
      },
      "output": "JSON: { probability, probabilityLabel, signals, topLever, allLevers }",
      "tags": [
        "tool",
        "citation",
        "calculator"
      ]
    },
    {
      "name": "audit_schema_coverage",
      "description": "Parse every JSON-LD block on a URL and report detected types, validation issues, and missing high-impact schemas.",
      "endpoint": "https://www.brandcited.ai/api/tools/schema-coverage-audit",
      "method": "POST",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Page URL to audit."
          }
        },
        "required": [
          "url"
        ]
      },
      "output": "JSON: { url, pageIntent, detected, detectedTypes, recommendedTypes, missingTypes, summary }",
      "tags": [
        "tool",
        "schema",
        "audit"
      ]
    },
    {
      "name": "preview_engine_coverage",
      "description": "Preview which of the 9 tracked AI engines are likely to cite a brand. Free signal-based estimate; full scan requires signup.",
      "endpoint": "https://www.brandcited.ai/api/tools/engine-coverage-gap",
      "method": "POST",
      "auth": "none",
      "rateLimitClass": "public",
      "inputs": {
        "type": "object",
        "properties": {
          "brand": {
            "type": "string",
            "description": "Brand name."
          },
          "url": {
            "type": "string",
            "description": "Brand homepage URL."
          },
          "category": {
            "type": "string",
            "description": "Category prompt."
          }
        },
        "required": [
          "brand",
          "url",
          "category"
        ]
      },
      "output": "JSON: { coveragePct, summary, perEngine: [{ id, name, estimatedCoverage, verdict }], upgradeUrl }",
      "tags": [
        "tool",
        "engines",
        "coverage"
      ]
    }
  ]
}