{
  "site": "brandcontextapi.com",
  "lastChecked": "2026-11-11",
  "about": "What brand context APIs return. endpoints: the eight endpoints documented, each with its request and the records shown in its facts strip. fields: the ten parts of brand context. coverage: for each endpoint, the key that held each field in its response for linear.app, or null. responses: the full response each endpoint returned for linear.app on 11 November 2026, with account identifiers removed. records: one documented fact each, with the page it comes from, the date it was checked, and a short quote.",
  "sample": {
    "domain": "linear.app",
    "requested": "2026-11-11",
    "note": "Every endpoint was called for linear.app on 11 November 2026, from free or existing accounts. Some answered from a cache; each response says how old its data was where it can."
  },
  "endpoints": [
    {
      "id": "brandfetch-brand-context-api",
      "name": "Brandfetch Brand Context API",
      "short": "Brandfetch Context",
      "vendor": "Brandfetch",
      "kind": "observed",
      "request": "GET https://api.brandfetch.io/v2/context/{domain}",
      "docs": "https://docs.brandfetch.com/brand-context-api/overview",
      "strip": [
        {
          "label": "Auth",
          "record": "brandfetch-brand-context-api.auth"
        },
        {
          "label": "Formats",
          "record": "brandfetch-brand-context-api.responseFormats.markdown"
        },
        {
          "label": "Plans",
          "record": "brandfetch.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "brandfetch-brand-context-api.mcp.tool"
        }
      ]
    },
    {
      "id": "brandfetch-brand-api",
      "name": "Brandfetch Brand API",
      "short": "Brandfetch Brand",
      "vendor": "Brandfetch",
      "kind": "observed",
      "request": "GET https://api.brandfetch.io/v2/brands/{identifier}",
      "docs": "https://docs.brandfetch.com/brand-api/overview",
      "strip": [
        {
          "label": "Auth",
          "record": "brandfetch-brand-api.auth"
        },
        {
          "label": "Charged",
          "record": "brandfetch-brand-api.billing.chargedOutcomes"
        },
        {
          "label": "Plans",
          "record": "brandfetch.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "brandfetch-brand-api.mcp.tools.get_brand_data"
        }
      ]
    },
    {
      "id": "context-dev-brand",
      "name": "Context.dev Brand",
      "short": "Context.dev Brand",
      "vendor": "Context.dev",
      "kind": "observed",
      "request": "POST https://api.context.dev/v1/brand/retrieve",
      "docs": "https://docs.context.dev/brand/overview",
      "strip": [
        {
          "label": "Auth",
          "record": "context-dev-brand.auth"
        },
        {
          "label": "Not charged",
          "record": "context-dev.billing.notCharged"
        },
        {
          "label": "Plans",
          "record": "context-dev.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "context-dev-brand.mcp.toolName"
        }
      ]
    },
    {
      "id": "context-dev-styleguide",
      "name": "Context.dev Styleguide",
      "short": "Context.dev Styleguide",
      "vendor": "Context.dev",
      "kind": "observed",
      "request": "GET https://api.context.dev/v1/web/styleguide",
      "docs": "https://docs.context.dev/brand/styleguide",
      "strip": [
        {
          "label": "Auth",
          "record": "context-dev-styleguide.auth"
        },
        {
          "label": "Plans",
          "record": "context-dev.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "context-dev-styleguide.mcp.toolName"
        }
      ]
    },
    {
      "id": "firecrawl-branding",
      "name": "Firecrawl branding format",
      "short": "Firecrawl branding",
      "vendor": "Firecrawl",
      "kind": "observed",
      "request": "POST https://api.firecrawl.dev/v2/scrape with formats: [\"branding\"]",
      "docs": "https://docs.firecrawl.dev/features/scrape",
      "strip": [
        {
          "label": "Auth",
          "record": "firecrawl.auth"
        },
        {
          "label": "Combine formats",
          "record": "firecrawl-branding.endpoint.request.combine"
        },
        {
          "label": "Plans",
          "record": "firecrawl.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "firecrawl.mcp.tools.scrape"
        }
      ]
    },
    {
      "id": "logo-dev-brand-api",
      "name": "Logo.dev Brand API",
      "short": "Logo.dev Brand",
      "vendor": "Logo.dev",
      "kind": "observed",
      "request": "GET https://api.logo.dev/v2/brands?domain={domain}",
      "docs": "https://www.logo.dev/docs/brand/introduction.md",
      "strip": [
        {
          "label": "Auth",
          "record": "logo-dev-brand-api.auth"
        },
        {
          "label": "Billed",
          "record": "logo-dev-brand-api.billing.window"
        },
        {
          "label": "Plans",
          "record": "logo-dev.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "logo-dev-brand-api.mcp.toolName"
        }
      ]
    },
    {
      "id": "rainbrand-brief",
      "name": "Rainbrand Brief",
      "short": "Rainbrand Brief",
      "vendor": "Rainbrand",
      "kind": "maintained",
      "request": "POST https://www.rainbrand.com/api/v1/briefs, then GET /briefs/{id}",
      "docs": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "strip": [
        {
          "label": "Auth",
          "record": "rainbrand.auth.apiKey"
        },
        {
          "label": "Pin a version",
          "record": "rainbrand-brief.request.versionPinning"
        },
        {
          "label": "Plans",
          "record": "rainbrand.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "rainbrand-brief.mcp.tools.createBrief"
        }
      ]
    },
    {
      "id": "rainbrand-brand-skill",
      "name": "Rainbrand Brand Skill",
      "short": "Rainbrand Brand Skill",
      "vendor": "Rainbrand",
      "kind": "maintained",
      "request": "GET https://www.rainbrand.com/api/v1/brands/{id}/skill",
      "docs": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "strip": [
        {
          "label": "Auth",
          "record": "rainbrand.auth.apiKey"
        },
        {
          "label": "Version",
          "record": "rainbrand-brand-skill.response.skillId"
        },
        {
          "label": "Plans",
          "record": "rainbrand.plans.summary"
        },
        {
          "label": "Over MCP",
          "record": "rainbrand-brand-skill.mcp.tools.getBrand"
        }
      ]
    }
  ],
  "fields": [
    {
      "id": "name-and-description",
      "name": "Name and description",
      "group": "Who it is and how it sounds"
    },
    {
      "id": "voice-and-tone",
      "name": "Voice and tone",
      "group": "Who it is and how it sounds"
    },
    {
      "id": "positioning",
      "name": "Positioning",
      "group": "Who it is and how it sounds"
    },
    {
      "id": "logos",
      "name": "Logos",
      "group": "What it looks like"
    },
    {
      "id": "colors",
      "name": "Colors",
      "group": "What it looks like"
    },
    {
      "id": "type",
      "name": "Type",
      "group": "What it looks like"
    },
    {
      "id": "spacing-and-components",
      "name": "Spacing and components",
      "group": "What it looks like"
    },
    {
      "id": "rules-and-claims",
      "name": "Rules and claims",
      "group": "What to avoid, what to use, and when"
    },
    {
      "id": "images-and-files",
      "name": "Images and files",
      "group": "What to avoid, what to use, and when"
    },
    {
      "id": "dates-and-versions",
      "name": "Dates and versions",
      "group": "What to avoid, what to use, and when"
    }
  ],
  "coverage": {
    "brandfetch-brand-context-api": {
      "name-and-description": "identity.description",
      "voice-and-tone": "brand.voice",
      "positioning": "positioning",
      "logos": null,
      "colors": null,
      "type": null,
      "spacing-and-components": null,
      "rules-and-claims": "brand.voice.avoid",
      "images-and-files": null,
      "dates-and-versions": "meta.resolved_at"
    },
    "brandfetch-brand-api": {
      "name-and-description": "description",
      "voice-and-tone": null,
      "positioning": null,
      "logos": "logos[]",
      "colors": "colors[]",
      "type": "fonts[]",
      "spacing-and-components": null,
      "rules-and-claims": null,
      "images-and-files": "images[]",
      "dates-and-versions": null
    },
    "context-dev-brand": {
      "name-and-description": "brand.description",
      "voice-and-tone": null,
      "positioning": null,
      "logos": "brand.logos[]",
      "colors": "brand.colors[]",
      "type": null,
      "spacing-and-components": null,
      "rules-and-claims": null,
      "images-and-files": "brand.backdrops[]",
      "dates-and-versions": "cache_metadata"
    },
    "context-dev-styleguide": {
      "name-and-description": null,
      "voice-and-tone": null,
      "positioning": null,
      "logos": null,
      "colors": "styleguide.colors",
      "type": "styleguide.typography",
      "spacing-and-components": "styleguide.components",
      "rules-and-claims": null,
      "images-and-files": "styleguide.fontLinks",
      "dates-and-versions": "cache_metadata"
    },
    "firecrawl-branding": {
      "name-and-description": "brandName",
      "voice-and-tone": "personality.tone",
      "positioning": "personality.targetAudience",
      "logos": "images.logo",
      "colors": "colors",
      "type": "typography",
      "spacing-and-components": "components",
      "rules-and-claims": null,
      "images-and-files": "images",
      "dates-and-versions": null
    },
    "logo-dev-brand-api": {
      "name-and-description": "data.description",
      "voice-and-tone": null,
      "positioning": null,
      "logos": "data.logo",
      "colors": "data.colors[]",
      "type": null,
      "spacing-and-components": null,
      "rules-and-claims": null,
      "images-and-files": "data.social_banners[]",
      "dates-and-versions": "data.indexed_at"
    },
    "rainbrand-brief": {
      "name-and-description": "guidance",
      "voice-and-tone": "guidance",
      "positioning": "guidance",
      "logos": "assets[]",
      "colors": "guidance",
      "type": "guidance",
      "spacing-and-components": null,
      "rules-and-claims": "guidance",
      "images-and-files": "assets[]",
      "dates-and-versions": "skill_id"
    },
    "rainbrand-brand-skill": {
      "name-and-description": "profile.name",
      "voice-and-tone": "copywriting.md",
      "positioning": "positioning.md",
      "logos": "profile.logo_catalog",
      "colors": "profile.palette",
      "type": "profile.typography",
      "spacing-and-components": "interface-design.md",
      "rules-and-claims": "logo.md",
      "images-and-files": "files[]",
      "dates-and-versions": "version_id"
    }
  },
  "responses": {
    "brandfetch-brand-context-api": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "domain": "linear.app",
        "accept": "application/json",
        "via": "Executor brandfetch app (context.getBrandContext), a free account"
      },
      "note": "Answered from Brandfetch's cache: meta.resolved_at is 16 October 2026.",
      "response": {
        "meta": {
          "domain": "linear.app",
          "canonical_name": "Linear",
          "resolved_at": "2026-10-16T11:40:11.383835+00:00"
        },
        "identity": {
          "tagline": "product development software for teams and agents",
          "mission": "Linear builds a structured product development system where software teams and AI agents can plan, coordinate, and ship products together.",
          "description": "Linear is a software company founded in 2019 that makes a product development system for planning, issue tracking, and coordinating software work, serving more than 40,000 organizations from startups to large enterprises worldwide. Its defining focus is a fast, structured workflow that brings teams and AI agents together across product planning and execution.",
          "tags": [
            "software issue tracking",
            "product roadmap planning",
            "AI agent workflows",
            "engineering team collaboration",
            "customer feedback triage"
          ]
        },
        "positioning": {
          "value_proposition": "Linear brings product planning, engineering work, and AI agents into one structured workspace, so teams can move from idea to shipped software without losing context between tools or handing repetitive coordination back to people. Its advantage is that agents operate natively on the same issues, projects, documents, and connected tools teams already use to build products.",
          "target_audience": [
            {
              "segment": "Product and engineering teams at software startups and scale-ups",
              "description": "Product managers, designers, and engineers coordinating releases in fast-moving companies use Linear to manage issues, cycles, initiatives, and roadmaps in a shared workflow."
            },
            {
              "segment": "Product and engineering organizations at large enterprises",
              "description": "Technology leaders and cross-functional delivery teams use Linear to coordinate work across multiple teams, with enterprise controls, integrations, and structured planning for complex organizations."
            },
            {
              "segment": "Developers and product operations teams adopting AI agents",
              "description": "Engineering and operations teams seeking to automate repetitive triage, follow-up, and planning work use Linear Agent, Loops, and connected codebase context to keep shared product workflows moving."
            }
          ],
          "products_and_services": [
            {
              "name": "Linear",
              "type": "product",
              "description": "A product development system for software teams that brings issues, projects, cycles, and initiatives together to plan and track work from idea to launch.",
              "category": "project management software",
              "features": [
                "Manage issues, projects, cycles, and initiatives",
                "Plan product roadmaps",
                "Coordinate team work from idea to launch"
              ],
              "tags": [
                "project-management",
                "issue-tracking",
                "product-development"
              ],
              "url": "https://linear.app",
              "pricing": {
                "model": "per_user",
                "free_tier": true,
                "starting_price": 10,
                "currency": "USD",
                "unit": "per user/month",
                "plans": [
                  "Free",
                  "Basic",
                  "Business",
                  "Enterprise"
                ],
                "url": "https://linear.app/pricing"
              }
            },
            {
              "name": "Linear Agent",
              "type": "service",
              "description": "An AI agent built into Linear that uses workspace context to help teams handle product-development work, including drafting product requirements and initiating coding sessions.",
              "category": "AI agent",
              "features": [
                "Draft product requirements",
                "Start coding sessions",
                "Work with issues and workspace context"
              ],
              "tags": [
                "ai",
                "agents",
                "automation"
              ],
              "url": "https://linear.app",
              "pricing": {
                "model": "subscription",
                "free_tier": true,
                "starting_price": null,
                "currency": null,
                "unit": null,
                "plans": [
                  "Free",
                  "Basic",
                  "Business",
                  "Enterprise"
                ],
                "url": "https://linear.app/pricing"
              }
            },
            {
              "name": "Loops",
              "type": "service",
              "description": "Recurring, AI-powered workflows for Linear Agent that run on a schedule or in response to workspace events, using context from issues, projects, documents, and connected tools.",
              "category": "AI workflow automation",
              "features": [
                "Run workflows on a schedule",
                "Trigger workflows from events",
                "Review shared workflow instructions and run history"
              ],
              "tags": [
                "automation",
                "ai",
                "workflows"
              ],
              "url": "https://linear.app/now/introducing-loops",
              "pricing": {
                "model": "subscription",
                "free_tier": false,
                "starting_price": 16,
                "currency": "USD",
                "unit": "per user/month",
                "plans": [
                  "Business",
                  "Enterprise"
                ],
                "url": "https://linear.app/pricing"
              }
            },
            {
              "name": "Triage Intelligence",
              "type": "service",
              "description": "AI-assisted issue triage that helps product and engineering teams assess incoming issues and apply labels or priorities for routing.",
              "category": "issue triage",
              "features": [
                "Review incoming issues",
                "Label and prioritize issues",
                "Route issues to the appropriate team"
              ],
              "tags": [
                "triage",
                "ai",
                "issue-management"
              ],
              "url": "https://linear.app/pricing",
              "pricing": {
                "model": "subscription",
                "free_tier": false,
                "starting_price": 16,
                "currency": "USD",
                "unit": "per user/month",
                "plans": [
                  "Business",
                  "Enterprise"
                ],
                "url": "https://linear.app/pricing"
              }
            },
            {
              "name": "Linear Asks",
              "type": "service",
              "description": "A request-management workflow that lets teams collect and organize incoming requests through Slack, email, and web forms.",
              "category": "request management",
              "features": [
                "Collect requests through Slack",
                "Collect requests by email",
                "Collect requests through web forms"
              ],
              "tags": [
                "requests",
                "intake",
                "integrations"
              ],
              "url": "https://linear.app/pricing",
              "pricing": {
                "model": "subscription",
                "free_tier": false,
                "starting_price": 16,
                "currency": "USD",
                "unit": "per user/month",
                "plans": [
                  "Business",
                  "Enterprise"
                ],
                "url": "https://linear.app/pricing"
              }
            }
          ]
        },
        "brand": {
          "voice": {
            "summary": "Linear speaks to product and engineering teams in a composed, exacting register, framing software work as a craft and the product as a focused system for moving it forward. Its copy favors short declarative headlines followed by concrete explanations of workflows and outcomes, with restrained technical detail; the About page’s phrase “relentless focus, fast execution, and a deep care for software craftsmanship” captures its characteristic emphasis on precision and momentum.",
            "attributes": [
              "precise",
              "measured",
              "craft-focused",
              "technical"
            ],
            "avoid": [
              "breathless hype",
              "folksy banter"
            ]
          },
          "style": {
            "summary": "Linear’s wordmark pairs a clean, compact sans-serif name with a circular emblem formed from diagonal white stripes, a distinctive mark that also works independently as an app icon. Its visual identity is minimal and high-contrast, using dark charcoal and black grounds, white and soft-gray typography, and restrained cool accents; crisp geometric letterforms, finely detailed product imagery, and spacious, carefully ordered compositions reinforce a polished software-craft feel.",
            "attributes": [
              "minimal",
              "geometric",
              "monochromatic",
              "refined",
              "technical"
            ]
          }
        },
        "competition": {
          "competitors": [
            {
              "name": "Atlassian Jira",
              "domain": "atlassian.com",
              "type": "direct",
              "category": "issue tracking and project management software",
              "positioning": "Broader, enterprise-oriented work management platform with extensive customization and ecosystem.",
              "overlap": [
                "Software teams use both to track development issues and projects",
                "Agile planning and sprint workflows",
                "Competes for product and engineering teams replacing Jira, as described in Linear customer stories"
              ]
            },
            {
              "name": "YouTrack",
              "domain": "jetbrains.com",
              "type": "direct",
              "category": "issue tracking and project management software",
              "positioning": "Developer-focused issue tracker bundled with JetBrains' software development ecosystem.",
              "overlap": [
                "Software issue tracking and agile project planning",
                "Used by engineering teams to manage backlogs, sprints, and workflows"
              ]
            },
            {
              "name": "Asana",
              "domain": "asana.com",
              "type": "indirect",
              "category": "work management software",
              "positioning": "Cross-functional work management platform focused on coordinating projects across an organization.",
              "overlap": [
                "Project planning and progress monitoring",
                "Initiatives and roadmaps used by product teams",
                "Competes for teams coordinating product work beyond engineering issue tracking"
              ]
            },
            {
              "name": "Shortcut",
              "domain": "shortcut.com",
              "type": "direct",
              "category": "software project management",
              "positioning": "Streamlined, software-team-focused project management with stories, iterations, and roadmaps.",
              "overlap": [
                "Engineering issue and backlog management",
                "Sprint and cycle planning",
                "Product and engineering teams seeking an alternative to Jira"
              ]
            }
          ]
        }
      }
    },
    "brandfetch-brand-api": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "domain": "linear.app",
        "via": "Executor brandfetch app (brands.getBrandDataByDomain), a free account"
      },
      "note": "The c= value in each CDN address is the caller's client ID and is replaced here.",
      "response": {
        "id": "iduDa181eM",
        "name": "Linear",
        "domain": "linear.app",
        "claimed": false,
        "description": "Linear helps streamline software projects, sprints, tasks, and bug tracking. It’s built for high-performance teams.",
        "longDescription": "Linear is a brand that is passionate about bringing the magic back to software. In today's fast-paced world, software has become essential but has lost some of its enchantment along the way. Linear aims to change that by providing superior tools and practices that empower teams and accelerate great work. Founded by a team with extensive experience in startups and high-growth environments like Uber, Airbnb, and Coinbase, Linear is committed to delivering exceptional results. Whether you need data expertise, design excellence, engineering prowess, or customer experience, Linear has a talented team ready to meet your needs. Their impressive lineup of team members includes individuals who have worked at top companies such as Facebook, Airtable, Atlassian, and Stripe. Their diverse backgrounds and expertise ensure that Linear can tackle any software project with confidence and expertise. Join Linear in their mission to bring the magic back to software and experience the difference for yourself.",
        "links": [
          {
            "name": "youtube",
            "url": "https://youtube.com/linear"
          },
          {
            "name": "twitter",
            "url": "https://twitter.com/linear"
          },
          {
            "name": "github",
            "url": "https://github.com/linear"
          },
          {
            "name": "linkedin",
            "url": "https://linkedin.com/company/linearapp"
          },
          {
            "name": "instagram",
            "url": "https://instagram.com/linear_app"
          }
        ],
        "banner": "https://cdn.brandfetch.io/iduDa181eM/w/1500/h/500/fallback/404/banner.webp?c=YOUR_CLIENT_ID&t=1768565406400",
        "icon": "https://cdn.brandfetch.io/iduDa181eM/w/128/h/128/fallback/lettermark/icon.webp?c=YOUR_CLIENT_ID&t=1723620974313",
        "logo": "https://cdn.brandfetch.io/iduDa181eM/w/512/h/512/theme/dark/fallback/404/logo.webp?c=YOUR_CLIENT_ID&t=1723620984751",
        "symbol": "https://cdn.brandfetch.io/iduDa181eM/w/512/h/512/theme/dark/fallback/404/symbol.webp?c=YOUR_CLIENT_ID&t=1723620984953",
        "logos": [
          {
            "theme": "light",
            "formats": [
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/theme/light/logo.svg?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "svg",
                "height": 100,
                "width": 400,
                "size": 4620
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/200/theme/light/logo.png?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "png",
                "height": 200,
                "width": 800,
                "size": 18885
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/200/theme/light/logo.webp?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "webp",
                "height": 200,
                "width": 800,
                "size": 9128
              }
            ],
            "tags": [],
            "type": "logo"
          },
          {
            "theme": "dark",
            "formats": [
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/theme/dark/logo.svg?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "svg",
                "height": 100,
                "width": 400,
                "size": 4623
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/200/theme/dark/logo.png?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "png",
                "height": 200,
                "width": 800,
                "size": 25307
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/200/theme/dark/logo.webp?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "webp",
                "height": 200,
                "width": 800,
                "size": 11022
              }
            ],
            "tags": [],
            "type": "logo"
          },
          {
            "theme": "light",
            "formats": [
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/theme/light/symbol.svg?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "svg",
                "height": 200,
                "width": 200,
                "size": 1057
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/800/theme/light/symbol.png?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "png",
                "height": 800,
                "width": 800,
                "size": 39405
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/800/theme/light/symbol.webp?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "webp",
                "height": 800,
                "width": 800,
                "size": 18316
              }
            ],
            "tags": [],
            "type": "symbol"
          },
          {
            "theme": "dark",
            "formats": [
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/theme/dark/symbol.svg?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "svg",
                "height": 200,
                "width": 200,
                "size": 1060
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/800/theme/dark/symbol.png?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "png",
                "height": 800,
                "width": 800,
                "size": 60895
              },
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/800/h/800/theme/dark/symbol.webp?c=YOUR_CLIENT_ID",
                "background": "transparent",
                "format": "webp",
                "height": 800,
                "width": 800,
                "size": 21084
              }
            ],
            "tags": [],
            "type": "symbol"
          },
          {
            "theme": "dark",
            "formats": [
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/400/h/400/theme/dark/icon.jpeg?c=YOUR_CLIENT_ID",
                "background": null,
                "format": "jpeg",
                "height": 400,
                "width": 400,
                "size": 12069
              }
            ],
            "tags": [],
            "type": "icon"
          }
        ],
        "colors": [
          {
            "hex": "#222326",
            "type": "dark",
            "brightness": 35
          },
          {
            "hex": "#F4F5F8",
            "type": "light",
            "brightness": 245
          }
        ],
        "fonts": [
          {
            "name": "Linear",
            "type": "title",
            "origin": "custom",
            "originId": null,
            "weights": [],
            "category": null,
            "fallbacks": [],
            "license": null
          },
          {
            "name": "Linear",
            "type": "body",
            "origin": "custom",
            "originId": null,
            "weights": [],
            "category": null,
            "fallbacks": [],
            "license": null
          }
        ],
        "images": [
          {
            "formats": [
              {
                "src": "https://cdn.brandfetch.io/iduDa181eM/w/1500/h/500/theme/dark/idlThIJ4eV.jpeg?c=YOUR_CLIENT_ID",
                "background": null,
                "format": "jpeg",
                "height": 500,
                "width": 1500,
                "size": 30073
              }
            ],
            "tags": [],
            "type": "banner"
          }
        ],
        "qualityScore": 0.9097671793648717,
        "company": {
          "employees": 51,
          "financialIdentifiers": {
            "isin": [],
            "ticker": []
          },
          "foundedYear": 2019,
          "industries": [
            {
              "score": 1,
              "id": "37",
              "name": "Programming and Developer Software",
              "emoji": "🖥",
              "parent": {
                "emoji": "🖥",
                "id": "28",
                "name": "Computers Electronics and Technology",
                "slug": "computers-electronics-and-technology"
              },
              "slug": "programming-and-developer-software"
            },
            {
              "score": 1,
              "id": "28",
              "name": "Computers Electronics and Technology",
              "emoji": "🖥",
              "parent": null,
              "slug": "computers-electronics-and-technology"
            }
          ],
          "kind": "PRIVATELY_HELD",
          "location": {
            "city": "San Francisco",
            "country": "United States",
            "countryCode": "US",
            "region": "Americas",
            "state": "California",
            "subregion": "Northern America"
          }
        },
        "isNsfw": false,
        "urn": "urn:brandfetch:brand:iduDa181eM",
        "screenshot": {
          "capturedAt": "2026-09-25T14:20:50.000Z",
          "url": "https://cdn.brandfetch.io/iduDa181eM/screenshot.png?c=YOUR_CLIENT_ID&t=1790346050000"
        }
      }
    },
    "context-dev-brand": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "domain": "linear.app",
        "via": "Context.dev dashboard (an existing account)"
      },
      "note": "Answered from Context.dev's cache (cache_metadata). key_metadata, which describes the caller's account, is left out.",
      "response": {
        "status": "ok",
        "brand": {
          "domain": "linear.app",
          "title": "Linear",
          "description": "Linear builds a product development system for modern teams and AI agents. Its platform helps teams plan and build products by managing issues, projects, initiatives, roadmaps, customer requests, and product feedback in one workspace. Linear also supports AI-powered workflows for tasks such as drafting product requirements, triaging and prioritizing issues, and contributing to code reviews. Designed for speed and focus, it helps teams coordinate work and move products from idea to launch.",
          "slogan": "The product development system for teams and agents.",
          "colors": [
            {
              "hex": "#7170ff",
              "name": "Stargate Shimmer",
              "source": "site"
            },
            {
              "hex": "#000000",
              "name": "Black",
              "source": "site"
            },
            {
              "hex": "#8c9494",
              "name": "Millennium Silver",
              "source": "logo"
            },
            {
              "hex": "#202022",
              "name": "Lead",
              "source": "logo"
            },
            {
              "hex": "#d7d7d7",
              "name": "Cape Hope",
              "source": "logo"
            }
          ],
          "logos": [
            {
              "url": "https://media.brand.dev/15ef2df6-8f9d-41d3-9c49-5ff11a23a762.png",
              "mode": "has_opaque_background",
              "colors": [
                {
                  "hex": "#8c9494",
                  "name": "Millennium Silver"
                },
                {
                  "hex": "#202022",
                  "name": "Lead"
                },
                {
                  "hex": "#d7d7d7",
                  "name": "Cape Hope"
                }
              ],
              "resolution": {
                "width": 180,
                "height": 180,
                "aspect_ratio": 1
              },
              "type": "icon"
            },
            {
              "url": "https://media.brand.dev/9ecdcfaa-7374-471a-9045-4644c8c58fb6.png",
              "mode": "dark",
              "colors": [
                {
                  "hex": "#7c7c7c",
                  "name": "Namara Grey"
                },
                {
                  "hex": "#090909",
                  "name": "Badab Black Wash"
                },
                {
                  "hex": "#c6c6c6",
                  "name": "Silver Polish"
                }
              ],
              "resolution": {
                "width": 144,
                "height": 144,
                "aspect_ratio": 1
              },
              "type": "icon"
            },
            {
              "url": "https://media.brand.dev/ba1a36da-a9cc-4c0b-b8b1-9bfb4d56dc26.svg",
              "mode": "light",
              "colors": [
                {
                  "hex": "#040404",
                  "name": "Armor Wash"
                }
              ],
              "resolution": {
                "width": 88,
                "height": 22,
                "aspect_ratio": 4
              },
              "type": "logo"
            }
          ],
          "backdrops": [
            {
              "url": "https://media.brand.dev/1e020dbb-6d39-4a6c-9c1f-8f6e2f5ca917.jpg",
              "colors": [
                {
                  "hex": "#555a64",
                  "name": "Turbulence"
                },
                {
                  "hex": "#44484a",
                  "name": "Little Black Dress"
                }
              ],
              "resolution": {
                "width": 1000,
                "height": 333,
                "aspect_ratio": 3
              }
            },
            {
              "url": "https://media.brand.dev/d57392fa-7a72-4f70-b048-73eddbf6fdae.jpg",
              "colors": [
                {
                  "hex": "#30343f",
                  "name": "Parisian Night"
                }
              ],
              "resolution": {
                "width": 1000,
                "height": 169,
                "aspect_ratio": 5.92
              }
            },
            {
              "url": "https://media.brand.dev/db993079-9a89-42d3-bd06-1f448e870f0c.jpg",
              "colors": [
                {
                  "hex": "#545864",
                  "name": "Blackwater"
                },
                {
                  "hex": "#3c3e4a",
                  "name": "Indian Ink"
                }
              ],
              "resolution": {
                "width": 1000,
                "height": 166,
                "aspect_ratio": 6.02
              }
            },
            {
              "url": "https://media.brand.dev/ce2fef78-f726-40f5-9031-4241cd06edc3.png",
              "colors": [
                {
                  "hex": "#8c9494",
                  "name": "Millennium Silver"
                },
                {
                  "hex": "#1d1e20",
                  "name": "Inkwell Inception"
                },
                {
                  "hex": "#cacaca",
                  "name": "Leadbelcher"
                }
              ],
              "resolution": {
                "width": 1000,
                "height": 525,
                "aspect_ratio": 1.9
              }
            },
            {
              "url": "https://media.brand.dev/4ee71122-70b4-466d-96c9-5ff12b37effb.jpg",
              "colors": [
                {
                  "hex": "#848c8c",
                  "name": "Monument"
                },
                {
                  "hex": "#121314",
                  "name": "Cursed Black"
                },
                {
                  "hex": "#c3c3c4",
                  "name": "Explosive Grey"
                }
              ],
              "resolution": {
                "width": 1000,
                "height": 525,
                "aspect_ratio": 1.9
              }
            }
          ],
          "address": {
            "city": "San Francisco",
            "country": "United States",
            "country_code": "US",
            "state_province": "California",
            "state_code": "CA",
            "postal_code": "94103"
          },
          "socials": [
            {
              "type": "x",
              "url": "https://x.com/linear"
            },
            {
              "type": "youtube",
              "url": "https://youtube.com/@linear"
            },
            {
              "type": "github",
              "url": "https://github.com/linear"
            },
            {
              "type": "linkedin",
              "url": "https://linkedin.com/company/linearapp"
            },
            {
              "type": "instagram",
              "url": "https://instagram.com/popular/linear-app-news-2026-march-linear-company-what-happened"
            },
            {
              "type": "facebook",
              "url": "https://m.facebook.com/pages/Linearapp/641126879692279"
            }
          ],
          "employees": {
            "range": "51 to 200"
          },
          "is_nsfw": false,
          "industries": {
            "eic": [
              {
                "industry": "Technology",
                "subindustry": "Software (B2B)"
              },
              {
                "industry": "Technology",
                "subindustry": "Developer Tools & APIs"
              }
            ]
          },
          "links": {
            "careers": "https://linear.app/careers",
            "terms": "https://linear.app/terms",
            "contact": "https://linear.app/contact",
            "privacy": "https://linear.app/privacy",
            "pricing": "https://linear.app/pricing",
            "blog": null
          },
          "primary_language": "english"
        },
        "code": 200,
        "cache_metadata": {
          "status": "hit",
          "age_ms": 19071504
        },
        "request_id": "3ab15f53-8523-4522-bc33-a1eb02d9c0a3"
      }
    },
    "context-dev-styleguide": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "domain": "linear.app",
        "via": "Context.dev dashboard (an existing account)"
      },
      "note": "Answered from Context.dev's cache (cache_metadata). key_metadata, which describes the caller's account, is left out.",
      "response": {
        "status": "ok",
        "finalDOMState": "loaded",
        "domain": "linear.app",
        "styleguide": {
          "mode": "dark",
          "colors": {
            "accent": "#7170ff",
            "background": "#08090a",
            "text": "#f7f8f8"
          },
          "typography": {
            "headings": {
              "h1": {
                "fontFamily": "Inter Variable",
                "fontSize": "72px",
                "fontWeight": 510,
                "lineHeight": "86px",
                "letterSpacing": "-1.408px",
                "fontFallbacks": [
                  "Inter Variable",
                  "SF Pro Display",
                  "-apple-system",
                  "BlinkMacSystemFont",
                  "Segoe UI",
                  "Roboto",
                  "Oxygen",
                  "Ubuntu",
                  "Cantarell",
                  "Open Sans",
                  "Helvetica Neue",
                  "sans-serif"
                ]
              },
              "h2": {
                "fontFamily": "Inter Variable",
                "fontSize": "49px",
                "fontWeight": 510,
                "lineHeight": "72px",
                "letterSpacing": "-1.584px",
                "fontFallbacks": [
                  "Inter Variable",
                  "SF Pro Display",
                  "-apple-system",
                  "BlinkMacSystemFont",
                  "Segoe UI",
                  "Roboto",
                  "Oxygen",
                  "Ubuntu",
                  "Cantarell",
                  "Open Sans",
                  "Helvetica Neue",
                  "sans-serif"
                ]
              },
              "h3": {
                "fontFamily": "Inter Variable",
                "fontSize": "33px",
                "fontWeight": 510,
                "lineHeight": "40px",
                "letterSpacing": "-0.24px",
                "fontFallbacks": [
                  "Inter Variable",
                  "SF Pro Display",
                  "-apple-system",
                  "BlinkMacSystemFont",
                  "Segoe UI",
                  "Roboto",
                  "Oxygen",
                  "Ubuntu",
                  "Cantarell",
                  "Open Sans",
                  "Helvetica Neue",
                  "sans-serif"
                ]
              },
              "h4": {
                "fontFamily": "Inter Variable",
                "fontSize": "22px",
                "fontWeight": 510,
                "lineHeight": "28px",
                "letterSpacing": "0px",
                "fontFallbacks": [
                  "Inter Variable",
                  "SF Pro Display",
                  "-apple-system",
                  "BlinkMacSystemFont",
                  "Segoe UI",
                  "Roboto",
                  "Oxygen",
                  "Ubuntu",
                  "Cantarell",
                  "Open Sans",
                  "Helvetica Neue",
                  "sans-serif"
                ]
              }
            },
            "p": {
              "fontFamily": "Inter Variable",
              "fontSize": "15px",
              "fontWeight": 400,
              "lineHeight": "24px",
              "letterSpacing": "-0.165px",
              "fontFallbacks": [
                "Inter Variable",
                "SF Pro Display",
                "-apple-system",
                "BlinkMacSystemFont",
                "Segoe UI",
                "Roboto",
                "Oxygen",
                "Ubuntu",
                "Cantarell",
                "Open Sans",
                "Helvetica Neue",
                "sans-serif"
              ]
            }
          },
          "elementSpacing": {
            "xs": "8px",
            "sm": "20px",
            "md": "30px",
            "lg": "40px",
            "xl": "78px"
          },
          "shadows": {
            "sm": "rgba(0, 0, 0, 0.4) 0px 1px 0px 0px",
            "md": "none",
            "lg": "none",
            "xl": "none",
            "inner": "rgba(255, 255, 255, 0.08) 0px 0px 0px 0.5px inset"
          },
          "components": {
            "button": {
              "primary": {
                "backgroundColor": "#e5e5e6",
                "color": "#08090a",
                "borderColor": "#e5e5e6",
                "borderRadius": "9999px",
                "borderWidth": "1px",
                "borderStyle": "solid",
                "padding": "14px 20px",
                "fontSize": "16px",
                "fontWeight": 510,
                "minWidth": "127px",
                "minHeight": "44px",
                "textDecoration": "none",
                "boxShadow": "rgba(0, 0, 0, 0.01) 0px 5px 2px 0px, rgba(0, 0, 0, 0.04) 0px 3px 2px 0px, rgba(0, 0, 0, 0.07) 0px 1px 1px 0px, rgba(0, 0, 0, 0.08) 0px 0px 1px 0px",
                "fontFamily": "Inter Variable",
                "fontFallbacks": [
                  "Inter Variable",
                  "SF Pro Display",
                  "-apple-system",
                  "BlinkMacSystemFont",
                  "Segoe UI",
                  "Roboto",
                  "Oxygen",
                  "Ubuntu",
                  "Cantarell",
                  "Open Sans",
                  "Helvetica Neue",
                  "sans-serif"
                ],
                "css": "box-sizing: border-box; display: inline-block; min-width: 127px; min-height: 44px; background-color: #e5e5e6; color: #08090a; border: 1px solid #e5e5e6; border-radius: 9999px; padding: 14px 20px; font-size: 16px; font-weight: 510; font-family: \"Inter Variable\", \"SF Pro Display\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Open Sans\", \"Helvetica Neue\", sans-serif; text-decoration: none; box-shadow: rgba(0, 0, 0, 0.01) 0px 5px 2px 0px, rgba(0, 0, 0, 0.04) 0px 3px 2px 0px, rgba(0, 0, 0, 0.07) 0px 1px 1px 0px, rgba(0, 0, 0, 0.08) 0px 0px 1px 0px;"
              },
              "secondary": {
                "backgroundColor": "transparent",
                "color": "#f7f8f8",
                "borderColor": "#f7f8f8",
                "borderRadius": "9999px",
                "borderWidth": "0px",
                "borderStyle": "none",
                "padding": "14px 20px",
                "fontSize": "16px",
                "fontWeight": 510,
                "minWidth": "127px",
                "minHeight": "44px",
                "textDecoration": "none",
                "boxShadow": "rgba(255, 255, 255, 0.03) 0px 0px 0px 1px inset, rgba(255, 255, 255, 0.04) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.6) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 4px 4px 0px",
                "fontFamily": "Inter Variable",
                "fontFallbacks": [
                  "Inter Variable",
                  "SF Pro Display",
                  "-apple-system",
                  "BlinkMacSystemFont",
                  "Segoe UI",
                  "Roboto",
                  "Oxygen",
                  "Ubuntu",
                  "Cantarell",
                  "Open Sans",
                  "Helvetica Neue",
                  "sans-serif"
                ],
                "css": "box-sizing: border-box; display: inline-block; min-width: 127px; min-height: 44px; background-color: transparent; color: #f7f8f8; border: 0px none #f7f8f8; border-radius: 9999px; padding: 14px 20px; font-size: 16px; font-weight: 510; font-family: \"Inter Variable\", \"SF Pro Display\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Open Sans\", \"Helvetica Neue\", sans-serif; text-decoration: none; box-shadow: rgba(255, 255, 255, 0.03) 0px 0px 0px 1px inset, rgba(255, 255, 255, 0.04) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.6) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 4px 4px 0px;"
              },
              "link": {
                "borderRadius": "0px",
                "borderWidth": "0px",
                "borderStyle": "none",
                "padding": "0px",
                "fontSize": "16px",
                "fontWeight": 400,
                "minWidth": "0px",
                "minHeight": "0px",
                "textDecoration": "underline",
                "boxShadow": "none",
                "backgroundColor": "transparent",
                "color": "#f7f8f8",
                "borderColor": "transparent",
                "fontFamily": "Inter Variable",
                "fontFallbacks": [
                  "Inter Variable",
                  "SF Pro Display",
                  "-apple-system",
                  "BlinkMacSystemFont",
                  "Segoe UI",
                  "Roboto",
                  "Oxygen",
                  "Ubuntu",
                  "Cantarell",
                  "Open Sans",
                  "Helvetica Neue",
                  "sans-serif"
                ],
                "css": "color: #f7f8f8; font-size: 16px; font-weight: 400; font-family: \"Inter Variable\", \"SF Pro Display\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Open Sans\", \"Helvetica Neue\", sans-serif; text-decoration: underline;"
              }
            },
            "card": {
              "backgroundColor": "#0f1011",
              "borderColor": "#ffffff14",
              "borderRadius": "9px",
              "borderWidth": "1px",
              "borderStyle": "solid",
              "padding": "12px 16px 16px",
              "boxShadow": "rgba(0, 0, 0, 0.2) 0px 0px 0px 1px",
              "textColor": "#f7f8f8",
              "css": "background-color: #0f1011; color: #f7f8f8; border: 1px solid #ffffff14; border-radius: 9px; padding: 12px 16px 16px; box-shadow: rgba(0, 0, 0, 0.2) 0px 0px 0px 1px;"
            }
          },
          "fontLinks": {
            "Inter Variable": {
              "type": "custom",
              "files": {
                "100": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "200": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "300": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "400": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "500": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "600": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "700": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "800": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                "900": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2"
              },
              "faces": [
                {
                  "url": "https://media.brand.dev/fonts/693b77d4f32ee9b8bfc995589b5fad5e99adf2832738661f5402f9978429a8e3.woff2",
                  "style": "normal",
                  "weight": "100 900"
                },
                {
                  "url": "https://media.brand.dev/fonts/e564f652916db6c139570fefb9524a77c4d48f30c92928de9db19b6b5c7a262a.woff2",
                  "style": "italic",
                  "weight": "100 900"
                }
              ],
              "displayName": "Inter Variable"
            },
            "Roboto": {
              "type": "google",
              "displayName": "Roboto",
              "files": {
                "100": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbGmTggvWl0Qn.ttf",
                "200": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZEbWmTggvWl0Qn.ttf",
                "300": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabWmTggvWl0Qn.ttf",
                "400": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbWmTggvWl0Qn.ttf",
                "500": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bWmTggvWl0Qn.ttf",
                "600": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYaammTggvWl0Qn.ttf",
                "700": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjammTggvWl0Qn.ttf",
                "800": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZEammTggvWl0Qn.ttf",
                "900": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZtammTggvWl0Qn.ttf"
              },
              "faces": [
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbGmTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "100"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZEbWmTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "200"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabWmTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "300"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbWmTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bWmTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "500"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYaammTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "600"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjammTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "700"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZEammTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "800"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZtammTggvWl0Qn.ttf",
                  "style": "normal",
                  "weight": "900"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLoHRiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "100"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLgHQiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "200"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "300"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLoHQiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLrPQiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "500"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLl_XiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "600"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLmbXiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "700"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLgHXiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "800"
                },
                {
                  "url": "https://fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLijXiA_0klQnx24.ttf",
                  "style": "italic",
                  "weight": "900"
                }
              ],
              "category": "sans-serif"
            },
            "Oxygen": {
              "type": "google",
              "displayName": "Oxygen",
              "files": {
                "300": "https://fonts.gstatic.com/s/oxygen/v16/2sDcZG1Wl4LcnbuCJW8Db2-4C7wFZQ.ttf",
                "400": "https://fonts.gstatic.com/s/oxygen/v16/2sDfZG1Wl4Lcnbu6iUcnZ0SkAg.ttf",
                "700": "https://fonts.gstatic.com/s/oxygen/v16/2sDcZG1Wl4LcnbuCNWgDb2-4C7wFZQ.ttf"
              },
              "faces": [
                {
                  "url": "https://fonts.gstatic.com/s/oxygen/v16/2sDcZG1Wl4LcnbuCJW8Db2-4C7wFZQ.ttf",
                  "style": "normal",
                  "weight": "300"
                },
                {
                  "url": "https://fonts.gstatic.com/s/oxygen/v16/2sDfZG1Wl4Lcnbu6iUcnZ0SkAg.ttf",
                  "style": "normal",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/oxygen/v16/2sDcZG1Wl4LcnbuCNWgDb2-4C7wFZQ.ttf",
                  "style": "normal",
                  "weight": "700"
                }
              ],
              "category": "sans-serif"
            },
            "Ubuntu": {
              "type": "google",
              "displayName": "Ubuntu",
              "files": {
                "300": "https://fonts.gstatic.com/s/ubuntu/v21/4iCv6KVjbNBYlgoC1CzTt2aMH4V_gg.ttf",
                "400": "https://fonts.gstatic.com/s/ubuntu/v21/4iCs6KVjbNBYlgo6eAT3v02QFg.ttf",
                "500": "https://fonts.gstatic.com/s/ubuntu/v21/4iCv6KVjbNBYlgoCjC3Tt2aMH4V_gg.ttf",
                "700": "https://fonts.gstatic.com/s/ubuntu/v21/4iCv6KVjbNBYlgoCxCvTt2aMH4V_gg.ttf"
              },
              "faces": [
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCv6KVjbNBYlgoC1CzTt2aMH4V_gg.ttf",
                  "style": "normal",
                  "weight": "300"
                },
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCp6KVjbNBYlgoKejZftWyIPYBvgpUI.ttf",
                  "style": "italic",
                  "weight": "300"
                },
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCs6KVjbNBYlgo6eAT3v02QFg.ttf",
                  "style": "normal",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCu6KVjbNBYlgoKeg7znUiAFpxm.ttf",
                  "style": "italic",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCv6KVjbNBYlgoCjC3Tt2aMH4V_gg.ttf",
                  "style": "normal",
                  "weight": "500"
                },
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCp6KVjbNBYlgoKejYHtGyIPYBvgpUI.ttf",
                  "style": "italic",
                  "weight": "500"
                },
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCv6KVjbNBYlgoCxCvTt2aMH4V_gg.ttf",
                  "style": "normal",
                  "weight": "700"
                },
                {
                  "url": "https://fonts.gstatic.com/s/ubuntu/v21/4iCp6KVjbNBYlgoKejZPsmyIPYBvgpUI.ttf",
                  "style": "italic",
                  "weight": "700"
                }
              ],
              "category": "sans-serif"
            },
            "Cantarell": {
              "type": "google",
              "displayName": "Cantarell",
              "files": {
                "400": "https://fonts.gstatic.com/s/cantarell/v18/B50NF7ZDq37KMUvlO01Ji6hqHK-CLA.ttf",
                "700": "https://fonts.gstatic.com/s/cantarell/v18/B50IF7ZDq37KMUvlO01xN4dOFISeJY8GgQ.ttf"
              },
              "faces": [
                {
                  "url": "https://fonts.gstatic.com/s/cantarell/v18/B50NF7ZDq37KMUvlO01Ji6hqHK-CLA.ttf",
                  "style": "normal",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/cantarell/v18/B50LF7ZDq37KMUvlO015iaJuPqqSLJYf.ttf",
                  "style": "italic",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/cantarell/v18/B50IF7ZDq37KMUvlO01xN4dOFISeJY8GgQ.ttf",
                  "style": "normal",
                  "weight": "700"
                },
                {
                  "url": "https://fonts.gstatic.com/s/cantarell/v18/B50WF7ZDq37KMUvlO015iZrSEY6aB4oWgWHB.ttf",
                  "style": "italic",
                  "weight": "700"
                }
              ],
              "category": "sans-serif"
            },
            "Open Sans": {
              "type": "google",
              "displayName": "Open Sans",
              "files": {
                "300": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4nY1M2xLER.ttf",
                "400": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4nY1M2xLER.ttf",
                "500": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4nY1M2xLER.ttf",
                "600": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4nY1M2xLER.ttf",
                "700": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4nY1M2xLER.ttf",
                "800": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4nY1M2xLER.ttf"
              },
              "faces": [
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4nY1M2xLER.ttf",
                  "style": "normal",
                  "weight": "300"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4nY1M2xLER.ttf",
                  "style": "normal",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4nY1M2xLER.ttf",
                  "style": "normal",
                  "weight": "500"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4nY1M2xLER.ttf",
                  "style": "normal",
                  "weight": "600"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4nY1M2xLER.ttf",
                  "style": "normal",
                  "weight": "700"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4nY1M2xLER.ttf",
                  "style": "normal",
                  "weight": "800"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVcUwaERZjA.ttf",
                  "style": "italic",
                  "weight": "300"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVcUwaERZjA.ttf",
                  "style": "italic",
                  "weight": "400"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVcUwaERZjA.ttf",
                  "style": "italic",
                  "weight": "500"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVcUwaERZjA.ttf",
                  "style": "italic",
                  "weight": "600"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVcUwaERZjA.ttf",
                  "style": "italic",
                  "weight": "700"
                },
                {
                  "url": "https://fonts.gstatic.com/s/opensans/v44/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVcUwaERZjA.ttf",
                  "style": "italic",
                  "weight": "800"
                }
              ],
              "category": "sans-serif"
            },
            "Berkeley Mono": {
              "type": "custom",
              "files": {
                "100": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "200": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "300": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "400": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "500": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "600": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "700": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "800": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                "900": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2"
              },
              "faces": [
                {
                  "url": "https://media.brand.dev/fonts/8fdf6ce1312d8a4230f30d90e7758500d6574311bce306ff1433e90f5ba0c094.woff2",
                  "style": "normal",
                  "weight": "100 900"
                }
              ],
              "displayName": "Berkeley Mono"
            }
          }
        },
        "code": 200,
        "cache_metadata": {
          "status": "hit",
          "age_ms": 239242548
        },
        "request_id": "4c39e443-c198-4e84-b7d1-717dc3f69bcc"
      }
    },
    "firecrawl-branding": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "url": "https://linear.app/",
        "formats": [
          "branding"
        ],
        "via": "Firecrawl playground (a free account)"
      },
      "note": "Copied from Firecrawl's playground: the branding object, without the success and data envelope the API wraps it in.",
      "response": {
        "colorScheme": "dark",
        "fonts": [
          {
            "family": "Inter",
            "role": "body"
          },
          {
            "family": "Berkeley Mono",
            "role": "monospace"
          }
        ],
        "colors": {
          "primary": "#E4F222",
          "accent": "#E4F222",
          "background": "#08090A",
          "textPrimary": "#8A8F98",
          "link": "#E4F222"
        },
        "typography": {
          "fontFamilies": {
            "primary": "Inter",
            "heading": "Inter"
          },
          "fontStacks": {
            "heading": [
              "Inter",
              "SF Pro Display",
              "-apple-system",
              "BlinkMacSystemFont",
              "Segoe UI",
              "Roboto",
              "Oxygen",
              "Ubuntu",
              "Cantarell",
              "Open Sans",
              "Helvetica Neue",
              "sans-serif"
            ],
            "body": [
              "Inter",
              "SF Pro Display",
              "-apple-system",
              "BlinkMacSystemFont",
              "Segoe UI",
              "Roboto",
              "Oxygen",
              "Ubuntu",
              "Cantarell",
              "Open Sans",
              "Helvetica Neue",
              "sans-serif"
            ],
            "paragraph": [
              "Inter",
              "SF Pro Display",
              "-apple-system",
              "BlinkMacSystemFont",
              "Segoe UI",
              "Roboto",
              "Oxygen",
              "Ubuntu",
              "Cantarell",
              "Open Sans",
              "Helvetica Neue",
              "sans-serif"
            ]
          },
          "fontSizes": {
            "h1": "64px",
            "h2": "48px",
            "body": "15px"
          }
        },
        "spacing": {
          "baseUnit": 4,
          "borderRadius": "8px"
        },
        "components": {
          "input": {
            "background": "transparent",
            "textColor": null,
            "borderColor": null,
            "borderRadius": "0px",
            "borderRadiusCorners": {
              "topLeft": "0px",
              "topRight": "0px",
              "bottomRight": "0px",
              "bottomLeft": "0px"
            },
            "shadow": "none"
          },
          "buttonPrimary": {
            "background": "#E5E5E6",
            "textColor": "#08090A",
            "borderColor": "#E5E5E6",
            "borderRadius": "9999px",
            "borderRadiusCorners": {
              "topLeft": "9999px",
              "topRight": "9999px",
              "bottomRight": "9999px",
              "bottomLeft": "9999px"
            },
            "shadow": "rgba(0, 0, 0, 0) 0px 8px 2px 0px, rgba(0, 0, 0, 0.01) 0px 5px 2px 0px, rgba(0, 0, 0, 0.04) 0px 3px 2px 0px, rgba(0, 0, 0, 0.07) 0px 1px 1px 0px, rgba(0, 0, 0, 0.08) 0px 0px 1px 0px"
          },
          "buttonSecondary": {
            "background": "#141516",
            "textColor": "#F7F8F8",
            "borderRadius": "9999px",
            "borderRadiusCorners": {
              "topLeft": "9999px",
              "topRight": "9999px",
              "bottomRight": "9999px",
              "bottomLeft": "9999px"
            },
            "shadow": "rgba(255, 255, 255, 0.03) 0px 0px 0px 1px inset, rgba(255, 255, 255, 0.04) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.6) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 4px 4px 0px"
          }
        },
        "images": {
          "logo": "data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2222%22%20viewBox%3D%220%200%20400%20100%22%20fill%3D%22currentColor%22%20size%3D%2222%22%20color%3D%22currentColor%22%20aria-label%3D%22Linear%22%20data-fc-idx%3D%220%22%3E%3Cpath%20d%3D%22M12.927%2016.371a1.47%201.47%200%200%200%20.061%202.027l68.595%2068.594c.555.555%201.446.59%202.026.062%2010.058-9.152%2016.372-22.348%2016.372-37.018C99.98%2022.402%2077.579%200%2049.945%200c-14.67%200-27.866%206.313-37.018%2016.371M4.353%2029.39a1.47%201.47%200%200%200%20.309%201.648L68.943%2095.32c.434.434%201.09.562%201.648.308a50%2050%200%200%200%204.335-2.227c.834-.482.962-1.62.28-2.3L8.882%2024.773c-.68-.68-1.818-.553-2.3.281a50%2050%200%200%200-2.228%204.334m-3.9%2018.407a1.48%201.48%200%200%201-.432-1.14q.2-2.986.74-5.866c.215-1.15%201.62-1.55%202.448-.722l56.703%2056.704c.828.827.429%202.233-.722%202.448a50%2050%200%200%201-5.865.74%201.48%201.48%200%200%201-1.14-.433zm3.48%2013.963c-1.033-1.033-2.7-.143-2.322%201.268C6.221%2080.22%2019.761%2093.76%2036.954%2098.37c1.41.379%202.3-1.289%201.268-2.322z%22%20style%3D%22fill%3A%20rgb(247%2C%20248%2C%20248)%20!important%3B%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M201.602%2027.536c3.587%200%206.494-2.918%206.494-6.518s-2.907-6.517-6.494-6.517-6.493%202.918-6.493%206.518%202.907%206.517%206.493%206.517m-55.621%2056.84v-69.87h11.54v59.648h31.115v10.223zm82.136-28.511v28.51h-11.166V34.857h11.026v8.487l.14-.094q1.682-3.986%205.42-6.659%203.737-2.72%209.531-2.72%205.139%200%209.344%202.299%204.204%202.25%206.727%206.611%202.523%204.362%202.523%2010.692v30.903h-11.166V55.02q0-5.628-2.99-8.535-2.943-2.954-7.896-2.954-3.177%200-5.793%201.313t-4.158%204.032-1.542%206.988M329.222%2083.53q3.831%201.642%208.783%201.642%204.065%200%206.961-1.032%202.898-1.078%204.766-2.86%201.915-1.782%203.037-3.893h.187v6.988h10.699V50.283q0-3.61-1.402-6.612-1.401-3-4.065-5.205-2.616-2.205-6.354-3.376-3.737-1.22-8.409-1.22-6.4%200-11.073%202.205-4.625%202.157-7.242%205.814t-2.85%208.254h10.793a7.15%207.15%200%200%201%201.495-3.846q1.308-1.687%203.551-2.626%202.242-.984%205.186-.984t4.999.984q2.102.986%203.223%202.673%201.122%201.689%201.122%203.94v.375q0%201.687-1.168%202.485-1.122.797-3.831%201.172-2.664.375-7.289.891a59%2059%200%200%200-7.288%201.266q-3.504.844-6.261%202.486a12.25%2012.25%200%200%200-4.298%204.36q-1.588%202.72-1.588%206.988%200%204.923%202.242%208.253%202.243%203.282%206.074%204.97m18.081-8.3q-2.71%201.454-6.681%201.454-4.019%200-6.401-1.688-2.383-1.736-2.383-4.736%200-2.345%201.308-3.799%201.356-1.454%203.551-2.297t4.765-1.173q1.869-.281%203.645-.562%201.775-.329%203.317-.61%201.542-.329%202.616-.657%201.122-.328%201.635-.703v5.533q0%202.908-1.355%205.346-1.308%202.392-4.017%203.892m26.094%209.145v-49.52h10.745v8.16h.141q1.354-4.22%204.251-6.425%202.943-2.25%207.709-2.25%201.169%200%202.102.093.982.048%201.636.094V44.61a41%2041%200%200%200-2.149-.234%2036%2036%200%200%200-3.271-.14q-2.756%200-5.046%201.265-2.29%201.267-3.644%203.892-1.308%202.58-1.308%206.518v28.465zm-177.401%200v-49.52h11.166v49.52zm84.238-2.204q5.373%203.33%2012.755%203.329%205.7%200%2010.372-2.063%204.719-2.11%207.849-5.768%203.13-3.705%204.065-8.535h-10.512a10.1%2010.1%200%200%201-2.29%203.892q-1.541%201.642-3.877%202.58-2.337.937-5.42.937-4.158%200-7.148-1.875-2.943-1.876-4.485-5.205-1.4-3.065-1.529-6.94h35.915V59.52q0-5.721-1.682-10.41-1.682-4.735-4.766-8.16-3.082-3.47-7.428-5.345-4.298-1.875-9.578-1.876-6.867%200-12.147%203.33t-8.27%209.19-2.99%2013.412q0%207.503%202.897%2013.364%202.897%205.815%208.269%209.145m23.501-32.779q-1.542-3.189-4.392-4.923-2.85-1.736-6.728-1.736-3.831%200-6.681%201.736-2.802%201.734-4.391%204.923-1.134%202.31-1.434%205.252h25.059q-.3-2.942-1.433-5.252%22%20style%3D%22fill%3A%20rgb(247%2C%20248%2C%20248)%20!important%3B%22%2F%3E%3C%2Fsvg%3E",
          "favicon": "https://linear.app/favicon.ico?v=2",
          "ogImage": "https://linear.app/api/og/main?title=Linear&v=4",
          "logoHref": "/homepage",
          "logoAlt": "Linear"
        },
        "personality": {
          "tone": "minimalist",
          "energy": "low",
          "targetAudience": "developers"
        },
        "designSystem": {
          "framework": "custom",
          "componentLibrary": ""
        },
        "confidence": {
          "buttons": 0.99,
          "colors": 0.8533333333333334,
          "overall": 0.9216666666666666
        },
        "brandName": "Linear",
        "logo": "data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2222%22%20viewBox%3D%220%200%20400%20100%22%20fill%3D%22currentColor%22%20size%3D%2222%22%20color%3D%22currentColor%22%20aria-label%3D%22Linear%22%20data-fc-idx%3D%220%22%3E%3Cpath%20d%3D%22M12.927%2016.371a1.47%201.47%200%200%200%20.061%202.027l68.595%2068.594c.555.555%201.446.59%202.026.062%2010.058-9.152%2016.372-22.348%2016.372-37.018C99.98%2022.402%2077.579%200%2049.945%200c-14.67%200-27.866%206.313-37.018%2016.371M4.353%2029.39a1.47%201.47%200%200%200%20.309%201.648L68.943%2095.32c.434.434%201.09.562%201.648.308a50%2050%200%200%200%204.335-2.227c.834-.482.962-1.62.28-2.3L8.882%2024.773c-.68-.68-1.818-.553-2.3.281a50%2050%200%200%200-2.228%204.334m-3.9%2018.407a1.48%201.48%200%200%201-.432-1.14q.2-2.986.74-5.866c.215-1.15%201.62-1.55%202.448-.722l56.703%2056.704c.828.827.429%202.233-.722%202.448a50%2050%200%200%201-5.865.74%201.48%201.48%200%200%201-1.14-.433zm3.48%2013.963c-1.033-1.033-2.7-.143-2.322%201.268C6.221%2080.22%2019.761%2093.76%2036.954%2098.37c1.41.379%202.3-1.289%201.268-2.322z%22%20style%3D%22fill%3A%20rgb(247%2C%20248%2C%20248)%20!important%3B%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M201.602%2027.536c3.587%200%206.494-2.918%206.494-6.518s-2.907-6.517-6.494-6.517-6.493%202.918-6.493%206.518%202.907%206.517%206.493%206.517m-55.621%2056.84v-69.87h11.54v59.648h31.115v10.223zm82.136-28.511v28.51h-11.166V34.857h11.026v8.487l.14-.094q1.682-3.986%205.42-6.659%203.737-2.72%209.531-2.72%205.139%200%209.344%202.299%204.204%202.25%206.727%206.611%202.523%204.362%202.523%2010.692v30.903h-11.166V55.02q0-5.628-2.99-8.535-2.943-2.954-7.896-2.954-3.177%200-5.793%201.313t-4.158%204.032-1.542%206.988M329.222%2083.53q3.831%201.642%208.783%201.642%204.065%200%206.961-1.032%202.898-1.078%204.766-2.86%201.915-1.782%203.037-3.893h.187v6.988h10.699V50.283q0-3.61-1.402-6.612-1.401-3-4.065-5.205-2.616-2.205-6.354-3.376-3.737-1.22-8.409-1.22-6.4%200-11.073%202.205-4.625%202.157-7.242%205.814t-2.85%208.254h10.793a7.15%207.15%200%200%201%201.495-3.846q1.308-1.687%203.551-2.626%202.242-.984%205.186-.984t4.999.984q2.102.986%203.223%202.673%201.122%201.689%201.122%203.94v.375q0%201.687-1.168%202.485-1.122.797-3.831%201.172-2.664.375-7.289.891a59%2059%200%200%200-7.288%201.266q-3.504.844-6.261%202.486a12.25%2012.25%200%200%200-4.298%204.36q-1.588%202.72-1.588%206.988%200%204.923%202.242%208.253%202.243%203.282%206.074%204.97m18.081-8.3q-2.71%201.454-6.681%201.454-4.019%200-6.401-1.688-2.383-1.736-2.383-4.736%200-2.345%201.308-3.799%201.356-1.454%203.551-2.297t4.765-1.173q1.869-.281%203.645-.562%201.775-.329%203.317-.61%201.542-.329%202.616-.657%201.122-.328%201.635-.703v5.533q0%202.908-1.355%205.346-1.308%202.392-4.017%203.892m26.094%209.145v-49.52h10.745v8.16h.141q1.354-4.22%204.251-6.425%202.943-2.25%207.709-2.25%201.169%200%202.102.093.982.048%201.636.094V44.61a41%2041%200%200%200-2.149-.234%2036%2036%200%200%200-3.271-.14q-2.756%200-5.046%201.265-2.29%201.267-3.644%203.892-1.308%202.58-1.308%206.518v28.465zm-177.401%200v-49.52h11.166v49.52zm84.238-2.204q5.373%203.33%2012.755%203.329%205.7%200%2010.372-2.063%204.719-2.11%207.849-5.768%203.13-3.705%204.065-8.535h-10.512a10.1%2010.1%200%200%201-2.29%203.892q-1.541%201.642-3.877%202.58-2.337.937-5.42.937-4.158%200-7.148-1.875-2.943-1.876-4.485-5.205-1.4-3.065-1.529-6.94h35.915V59.52q0-5.721-1.682-10.41-1.682-4.735-4.766-8.16-3.082-3.47-7.428-5.345-4.298-1.875-9.578-1.876-6.867%200-12.147%203.33t-8.27%209.19-2.99%2013.412q0%207.503%202.897%2013.364%202.897%205.815%208.269%209.145m23.501-32.779q-1.542-3.189-4.392-4.923-2.85-1.736-6.728-1.736-3.831%200-6.681%201.736-2.802%201.734-4.391%204.923-1.134%202.31-1.434%205.252h25.059q-.3-2.942-1.433-5.252%22%20style%3D%22fill%3A%20rgb(247%2C%20248%2C%20248)%20!important%3B%22%2F%3E%3C%2Fsvg%3E"
      }
    },
    "logo-dev-brand-api": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "domain": "linear.app",
        "nosubscribe": "true",
        "via": "Executor logodev app (brands.v2GetBrand), a free account"
      },
      "note": "Requested with nosubscribe=true. The asset links are signed and expired on 12 November 2026.",
      "response": {
        "data": {
          "object": "brand",
          "id": "brand_8n3sa37xvd72dfb6evmw8v4aa4",
          "slug": "linear",
          "domain": "linear.app",
          "status": "ready",
          "name": "Linear",
          "description": "Linear is a product development platform for planning and building products.",
          "indexed_at": "2026-09-21T03:13:20.59294Z",
          "is_profane": false,
          "socials": {
            "github": "https://github.com/linear",
            "twitter": "https://x.com/linear",
            "youtube": "https://www.youtube.com/@linear"
          },
          "colors": [
            {
              "r": 0,
              "g": 0,
              "b": 0,
              "hex": "#000000",
              "oklch": {
                "l": 0,
                "c": 0,
                "h": 0
              }
            },
            {
              "r": 255,
              "g": 255,
              "b": 255,
              "hex": "#ffffff",
              "oklch": {
                "l": 0.9999999934735462,
                "c": 0,
                "h": 0
              }
            }
          ],
          "logo": {
            "url": "https://img.logo.dev/assets/_NC1zHLX8HWX-9RSRP1L0i4d7OrZsAq1_XM61jxCGEzotKPsIAnAGrI3b5KUDS-rCFCP11yj-6WqlYqr_Wx1YcDtnCOznt45RWtqSj9oMYY8on4IzjERzgG3vGmAIqiWbBtIawscG8LH3Xuz0Bu0KI5sNOPLLBHlgyHrldOUsfO8RcLDO4uSa-E7y--dh9dA6X16J3C4TtObfbCUWl48eV62BLv_MtmBG_taNOqMSWq3idnzDPhKfxCI6q6_LOS2pGUPwoCGbV0OFB8ahvEGQh2pZxrtiBjDeSSdG6YPmumaq-MeOgNf9YY8PpplE7Rs5l6UHYekbplYkUy93pJf",
            "etag": "15e80b3276d16a567ec386aac3024be31ec418d0bc36692f58cf9c4ca77c357c",
            "blurhash": "UgGlL@M{00%M-;j[IUay4nxu%MIUD%of%MWB",
            "source": {
              "width": 16,
              "height": 16,
              "format": "svg",
              "has_transparency": true,
              "is_vector": true
            },
            "last_updated_at": "2026-09-25T22:33:18.775141922Z",
            "expires_at": "2026-11-12T19:00:00Z"
          },
          "brandmark": {
            "url": "https://img.logo.dev/assets/U-5JfqgTKyLIkT1UDPU0zGNw-H6RKgVBUqGG4Ll9Euzw0N2TC2msaJUHE45wp3_1CdS5hWX5fd7KtSN_JRpBAP8X5fa862tPvTsQkIEmT4br4M-LTjr8Ly1EfIyR9xB7R2NqSSqE2MRv9JrL7ptRP0F4DOcSrQ0AAQhV5EgTFVPGP0fLDTW9og3uO7ldBrG7gDNUWqNJzTeT6UWJjyPn5puwX_6FG59_MZyUk90-7BgSRttaIbE_jrRZIG4sF1SdFIfbjz7g9Nlx8yT8Rn4Pwxk6lI6ogHul-G_Adw6Qw-swv9ft6khq--0EUJqXTfxhsShDRVXcumNECkZBNNLMx4xuEYU",
            "etag": "d76202659beb1d2cfa347823568f9ba778b95a4c3d1e1a2f3157310b06267176",
            "blurhash": "U3T9L#bHIUt7_3M{Rjay?HRjoLof_3s:j[ay",
            "source": {
              "width": 400,
              "height": 100,
              "format": "svg",
              "has_transparency": true,
              "is_vector": true
            },
            "last_updated_at": "2026-09-20T20:12:12.163987-07:00",
            "expires_at": "2026-11-12T19:00:00Z"
          },
          "social_banners": [
            {
              "url": "https://img.logo.dev/assets/waqKq-vs3fEVJrg6FveC6a5o35WnhxpJ6f-MvnnIZed-QUKlNf3UTPyZQyVAtKQpqVWuHUtYVTkZ1sIOZUoRh24JMf4ydf0YxZgdTj-a8_iCBnOcbS73O6HHjtMB_18fZtGU-qfSqUM1H7ptfZ7wg-Z_Oomc8dYmqgogriIlkFfuIJXx01_XeeMFP26zzzQEYJbh1uhuon1YPMv3JVgz19NlVRYw76C3CzKDZxYZamS01hARBx6vA7Gn9dMcuXkMPGiom43j2LIHoZDULvHE_ydcJ-ob8g-tK8CPu66V8Uh-VDjNzor0M3TAwPDUmbCOvLaaffdQiEBpsYc6C_daFho",
              "etag": "293c1b13cdf6d339ba3ba52bfd0bf30e00851deb23a5546629136891e3437f45",
              "blurhash": "U35E,2t700M{9Ej[ofay4nRj_3xuM{WBj[of",
              "source": {
                "width": 1200,
                "height": 630,
                "format": "png",
                "has_transparency": true,
                "is_vector": false
              },
              "last_updated_at": "2026-09-20T20:12:10.54797-07:00",
              "expires_at": "2026-11-12T19:00:00Z"
            }
          ]
        },
        "metadata": {
          "request_id": "request_z7s34d24dn13v0mrjar2trn700",
          "resolution": {
            "type": "domain",
            "value": "linear.app",
            "method": "direct",
            "context": {}
          }
        }
      }
    },
    "rainbrand-brief": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "brand_session_id": "{brandSessionId}",
        "task": "Today is November 11, 2026. A hero section for a Linear landing page announcing Loops (recurring workflows for Linear Agent): a headline, a one-line subhead, a call to action, and one product image, on a dark section of linear.app. The copy and image will be generated by a model, so include what it must not claim.",
        "via": "Executor rainbrand-mcp app, the operator's team"
      },
      "note": "Requested and read over Rainbrand's MCP server (create_brief, get_brief) on 11 November 2026, after the Linear announcement of Loops was added to the brand. The task gives the date, because a Brief requested a minute earlier without it took the date to be 10 July 2025. The REST API returns the same Brief with camelCase keys inside data.",
      "response": {
        "brief_id": "eda2b032-0268-4902-b610-45e7ae928caa",
        "status": "completed",
        "skill_id": "e16b6239-d74f-4922-97c1-d65c6ae3d882",
        "created_at": "2026-11-12T00:00:04.667Z",
        "completed_at": "2026-11-12T00:00:46.716Z",
        "guidance": "## Linear Loops hero — pinned brand context\n\n### Copy and factual guardrails\n- Use Linear’s voice: plain, direct, purposeful, concise, confident but not inflated. Prefer a short, specific headline and only the context needed in the one-line subhead. Make benefits concrete; avoid jargon and hype.\n- Position Linear as a product development system for teams and agents, where people and agents work from shared product context and teams move quickly without losing visibility or control.\n- The source-backed Loops description is: “Loops let you define scheduled or event-driven operations for Linear Agent to run across your workspace.” It also describes Loops as a way for Linear Agent to take on recurring work across a team. Stay within these facts.\n- **Date conflict with a “new launch” interpretation:** the brand source says Loops launched July 20, 2026. As of November 11, 2026, do not call it newly launched, upcoming, or a first-time release unless independently verified. An introduction/promotion hero is still possible; the brand source does not establish a new launch today.\n- Do not invent trigger types beyond scheduled or event-driven, or claim unsupported integrations, pricing, availability/access, setup, permissions, performance, outcomes, or degree of autonomy. In particular, don’t imply Loops can do anything, is always-on, or guarantees results. The Brand sources do not supply an approved Loops-specific CTA or destination; use only a verified destination and avoid invented trial/signup/access claims.\n- Write the public brand name as “Linear” (capital L, one word); call the product “Linear Agent.” Don’t write “Linear app” or lowercase “linear.”\n\n### Dark website styling\n- Use the captured dark-site palette: near-black background **#08090A**, soft-white text **#F7F8F8**, restrained violet accent **#7170FF**, and near-black card surface **#0F1011**. The captured primary button is pale **#E5E5E6** with dark text. Keep surfaces and supporting grays subdued; don’t treat UI colors as alternate logo colors.\n- Use **Inter Variable**: headings at the supplied medium role (weight 510), body at regular (400). Keep type crisp, compact, and easy to scan. [Inter Variable font](https://www.rainbrand.com/assets/AgHtorAyAmhJArYQReeukoyqAAAAANtDqpYJNjToESYJwPXKIYw)\n- If a logo mark is needed on the dark section, use a supported high-contrast monochrome mark and preserve its artwork and clear space. The primary black lockup is intended for light contrast, so don’t place it on the near-black background. [Supported monochrome icon reference](https://www.rainbrand.com/assets/AgHtorAyAmhJArYQReeukoyqAAAAAbg9p51c3Brp0zKac38zDPY)\n\n### Generated product image\nDepict Linear as a real, orderly dark workspace; keep the UI legible and the product itself central. A real Agent-tasks workspace screenshot is included as **visual/product-language reference only**—it is not evidence of Loops’ actual interface. Do not present invented Loops controls, screens, or product states as shipped UI. [Agent-tasks dark UI reference](https://www.rainbrand.com/assets/AgHtorAyAmhJArYQReeukoyqAAAAAhf8lNwDvPuaj_HDfvw_a7A)",
        "assets": [
          {
            "kind": "font",
            "media_type": "font/woff2",
            "url": "https://www.rainbrand.com/assets/AgHtorAyAmhJArYQReeukoyqAAAAANtDqpYJNjToESYJwPXKIYw",
            "inline": {
              "status": "omitted",
              "reason": "not_supported"
            }
          },
          {
            "kind": "logo",
            "media_type": "image/png",
            "url": "https://www.rainbrand.com/assets/AgHtorAyAmhJArYQReeukoyqAAAAAbg9p51c3Brp0zKac38zDPY",
            "inline": {
              "status": "included"
            }
          },
          {
            "kind": "image",
            "media_type": "image/png",
            "url": "https://www.rainbrand.com/assets/AgHtorAyAmhJArYQReeukoyqAAAAAhf8lNwDvPuaj_HDfvw_a7A",
            "inline": {
              "status": "included"
            }
          },
          {
            "kind": "font_render",
            "media_type": "image/png",
            "url": "https://www.rainbrand.com/assets/AgHtorAyAmhJArYQReeukoyqAAAAA8F95jJGrJxbouRhMvWX2TM",
            "inline": {
              "status": "included"
            }
          }
        ]
      }
    },
    "rainbrand-brand-skill": {
      "requested": "2026-11-11",
      "domain": "linear.app",
      "request": {
        "brand_session_id": "{brandSessionId}",
        "via": "Executor rainbrand-mcp app, the operator's team"
      },
      "note": "Read over Rainbrand's MCP server (get_brand, view_files, list_brand_versions) for a brand added from linear.app on 15 October 2026. On 11 November 2026 the Linear page that announced Loops was added to the brand, which made version e16b6239. Condensed: signed file links shortened, the nine identical font_files entries per type role reduced to one, and image references inside guidance files left out.",
      "response": {
        "status": "ready",
        "version_id": "e16b6239-d74f-4922-97c1-d65c6ae3d882",
        "versions": [
          {
            "version_id": "e16b6239-d74f-4922-97c1-d65c6ae3d882",
            "created_at": "2026-11-11T23:58:45.584Z",
            "is_latest": true
          },
          {
            "version_id": "f4dbf3ac-d39e-403b-8fff-537a6ddea4c1",
            "created_at": "2026-10-15T11:00:37.180Z",
            "is_latest": false
          },
          {
            "version_id": "f3ac87f8-789d-5c3d-a7fc-cc20c559466c",
            "created_at": "2026-10-15T10:59:26.476Z",
            "is_latest": false
          }
        ],
        "profile": {
          "name": "Linear",
          "logo_catalog": {
            "primary_logo_image_id": "dd88f31c-5faa-4f9c-be84-35d1152ca53c",
            "items": [
              {
                "image_id": "dd88f31c-5faa-4f9c-be84-35d1152ca53c",
                "form": "lockup",
                "contrasts_best_on": [
                  "light"
                ],
                "asset": {
                  "path": "assets/images/dd88f31c-5faa-4f9c-be84-35d1152ca53c.svg",
                  "media_type": "image/svg+xml",
                  "byte_length": 3097,
                  "width": 88,
                  "height": 22,
                  "has_transparency": true
                }
              },
              {
                "image_id": "344aa657-87c5-4988-8d9a-d4174598bd22",
                "form": "icon",
                "contrasts_best_on": null,
                "asset": {
                  "path": "assets/images/344aa657-87c5-4988-8d9a-d4174598bd22.png",
                  "media_type": "image/png",
                  "byte_length": 31604,
                  "width": 180,
                  "height": 180,
                  "has_transparency": false
                }
              },
              {
                "image_id": "ef57f66f-d689-48eb-9608-3ff0b5c80fe5",
                "form": "icon",
                "contrasts_best_on": [
                  "light",
                  "dark"
                ],
                "asset": {
                  "path": "assets/images/ef57f66f-d689-48eb-9608-3ff0b5c80fe5.png",
                  "media_type": "image/png",
                  "byte_length": 19632,
                  "width": 144,
                  "height": 144,
                  "has_transparency": true
                }
              }
            ]
          },
          "palette": [
            {
              "hex": "#F4F5F8",
              "name": "Mercury White",
              "group": "Official brand colors",
              "usage": "Preferred light accent for monochrome wordmark use."
            },
            {
              "hex": "#222326",
              "name": "Nordic Gray",
              "group": "Official brand colors",
              "usage": "Preferred dark accent for monochrome wordmark use."
            },
            {
              "hex": "#7170FF",
              "name": null,
              "group": "Website accent",
              "usage": "Captured linear.app dark-mode accent; the official brand guidance describes the primary blue as typically reserved for backgrounds."
            },
            {
              "hex": "#000000",
              "name": null,
              "group": "Captured palette",
              "usage": "Secondary neutral; use only when the source design calls for black."
            },
            {
              "hex": "#7C7C7C",
              "name": null,
              "group": "Captured palette",
              "usage": "Supporting gray; use only where the source design calls for it."
            },
            {
              "hex": "#C6C6C6",
              "name": null,
              "group": "Captured palette",
              "usage": "Supporting light gray; use only where the source design calls for it."
            },
            {
              "hex": "#202022",
              "name": null,
              "group": "Captured palette",
              "usage": "Supporting dark neutral; use only where the source design calls for it."
            },
            {
              "hex": "#08090A",
              "name": null,
              "group": "Website dark mode",
              "usage": "Dark website background."
            },
            {
              "hex": "#F7F8F8",
              "name": null,
              "group": "Website dark mode",
              "usage": "Website text color."
            },
            {
              "hex": "#E5E5E6",
              "name": null,
              "group": "Website components",
              "usage": "Primary button background, paired with dark text."
            },
            {
              "hex": "#0F1011",
              "name": null,
              "group": "Website components",
              "usage": "Card background in dark mode."
            }
          ],
          "gradients": [],
          "typography": {
            "roles": [
              {
                "name": "Heading",
                "weight": 510,
                "font": {
                  "family": "Inter Variable",
                  "source": "custom",
                  "font_files": [
                    {
                      "path": "assets/fonts/693b77d4f32e-font-693b77d4f32ee9b8.woff2",
                      "weight": 400,
                      "format": "woff2",
                      "variable": true,
                      "primary": true
                    }
                  ]
                }
              },
              {
                "name": "Body",
                "weight": 400,
                "font": {
                  "family": "Inter Variable",
                  "source": "custom",
                  "font_files": [
                    {
                      "path": "assets/fonts/693b77d4f32e-font-693b77d4f32ee9b8.woff2",
                      "weight": 400,
                      "format": "woff2",
                      "variable": true,
                      "primary": true
                    }
                  ]
                }
              }
            ]
          }
        },
        "file_catalog": {
          "total_files": 23
        },
        "files": [
          "SKILL.md",
          "assets/favicon/ef628df828af3c6c.png",
          "assets/fonts/693b77d4f32e-font-693b77d4f32ee9b8.specimen.png",
          "assets/fonts/693b77d4f32e-font-693b77d4f32ee9b8.woff2",
          "assets/fonts/8fdf6ce1312d-font-8fdf6ce1312d8a42.specimen.png",
          "assets/fonts/8fdf6ce1312d-font-8fdf6ce1312d8a42.woff2",
          "assets/images/344aa657-87c5-4988-8d9a-d4174598bd22.png",
          "assets/images/6a4b3758-81c2-444b-b460-523589dc60d2.png",
          "assets/images/8715a0a8-c484-4eb6-9b16-11f3dc1f84f2.png",
          "assets/images/ae50435d-3e23-4086-969d-99d775f1399f.png",
          "assets/images/b353e12c-07e2-49a0-a72d-6dde1cae401e.png",
          "assets/images/cc647260-e3d7-481e-995a-a67beca93443.png",
          "assets/images/d956902b-3c14-4f90-9545-ece23442c4e7.png",
          "assets/images/dd88f31c-5faa-4f9c-be84-35d1152ca53c.svg",
          "assets/images/ef57f66f-d689-48eb-9608-3ff0b5c80fe5.png",
          "references/colors.md",
          "references/copywriting.md",
          "references/imagery-editorial.md",
          "references/interface-design.md",
          "references/logo.md",
          "references/positioning.md",
          "references/product-imagery.md",
          "references/typography.md"
        ],
        "root_guidance_excerpt": "name: linear-brand. Linear builds a fast, purpose-built product development system for teams and agents ... Skill navigation tables route by task (Brand design, Marketing copy, Product UI), component, medium and brand topic to the reference files.",
        "guidance_files": {
          "references/colors.md": "# Colors\n\nLinear’s official brand guidance names Mercury White and Nordic Gray as its preferred light and dark accents for monochrome wordmark use. The subtle, desaturated blue is the primary brand color and is typically used for backgrounds.\n\nFor dark website and product reproductions, follow the captured dark-mode palette: near-black background, soft-white text, and Linear violet accent. Keep surfaces and supporting grays subdued so they do not compete with the working content.\n\nThe captured site palette also includes neutral grays and black; use these as secondary neutrals only when the source design calls for them.\n\nWebsite tokens show pale neutral primary buttons with dark text, transparent secondary buttons, and near-black cards with subtle borders. Keep these component colors tied to that dark-site context rather than treating them as alternate logo colors.",
          "references/copywriting.md": "# Copywriting\n\nWrite plainly, directly, and with purpose. Use short, scannable titles that state the task or idea; add only the context a reader needs. Favor specific language over jargon, formulaic user stories, or long setup.\n\nLead with the real problem, then explain the considered solution. Keep the customer experience and product intent at the product or project level, rather than forcing unnecessary detail into individual task copy. Quote customer feedback directly when the authentic wording helps explain a request.\n\nSound confident and thoughtful, not inflated. Emphasize craft, speed, focus, and quality through concrete outcomes; explain how Linear helps teams and agents share context and move work forward.\n\n### Naming\n\nWrite “Linear” as one word with a capital L. It is the name of both the company and application, so never write “Linear app” or lowercase “linear.” Capitalize dedicated releases as proper nouns, such as “Linear Method.”",
          "references/positioning.md": "# Positioning\n\nDescribe Linear as the product development system for teams and agents: a purpose-built place to plan, build, and ship software. It brings issues, project plans, roadmaps, customer feedback, and connected tools into shared product context.\n\nFrame the value around three ideas: product operations become more coordinated, humans and agents act from shared context, and teams move quickly without losing visibility or control. Ground claims in specific workflows—intake and triage, planning, agent-assisted execution, code review, and launch.\n\nUse “Linear” as the public brand name. In legal or contractual writing, use the precise legal entity name shown in the relevant source document.\n\n## Loops\n\nLaunched July 20, 2026, Loops are a new way for Linear Agent to take on recurring work across a team. Use Linear’s announcement wording: “Loops let you define scheduled or event-driven operations for Linear Agent to run across your workspace.”",
          "references/logo.md": "# Logo\n\nUse the Linear wordmark whenever space allows; it has stronger recognition than the logomark. Use the standalone mark in tight layouts or logo-only grids. The stylized icon is suited to company references such as social media and chip-like layouts. Prefer monochrome artwork against the brand’s light or dark neutrals.\n\nGive logo assets generous clear space. Keep the supplied artwork intact: do not alter it, combine it with other graphics, or place it where it suggests Linear endorses or is affiliated with another product or business.\n\nThe default supplied logo is the black Linear lockup; use the light-on-dark icon or centered lockup where the background calls for it. Choose the version with clear contrast and breathing room.",
          "references/typography.md": "# Typography\n\nUse Inter Variable for headings and body copy. The website defines a single medium heading role across its heading levels (weight 510) and a regular body role (weight 400). Keep type crisp, compact, and easy to scan.\n\nThe supplied Berkeley Mono family can support technical or code-oriented details when a monospaced face is appropriate; the source does not assign it a general text role.",
          "references/interface-design.md": "# Interface design\n\nLinear’s interface is information-dense but should feel calm, consistent, and easy to navigate. Keep the user’s current work in focus; let navigation and orientation recede. Use compact controls and restrained icon use rather than giving every element equal emphasis.\n\nUse borders and separators only where they clarify relationships. Favor softer contrast and rounded edges over a thicket of hard dividers; give structure without adding visual noise.\n\nIn dark product UI, keep inactive navigation muted, content surfaces legible, and the layout precise. Product examples show a compact dark workspace with clear task groupings and restrained borders.",
          "references/imagery-editorial.md": "# Editorial imagery\n\nLinear’s editorial visuals can use precise, abstract geometry on dark fields: pixel grids, dotted structures, and sparse transitions that suggest systems, motion, or change. Keep the composition deliberate and restrained, with strong negative space rather than decorative clutter.\n\nTechnical explainers may use blueprint-like interface diagrams, fine violet linework, clear layers, and compact monospaced annotations. Keep labels functional and the diagram legible.",
          "references/product-imagery.md": "# Product imagery\n\nShow Linear as a real working product: a dark, orderly workspace where issues, projects, boards, and agent workflows are immediately legible. Prefer useful interface context and believable product states over generic software imagery.\n\nProduct views should communicate the relationship between organized team work and agent execution. Keep the UI itself the subject; avoid embellishment that overwhelms the product."
        }
      }
    }
  },
  "records": [
    {
      "id": "brandfetch-brand-context-api.endpoint",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "endpoint",
      "value": "The endpoint is GET https://api.brandfetch.io/v2/context/{domain}.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "--url https://api.brandfetch.io/v2/context/{domain}"
    },
    {
      "id": "brandfetch-brand-context-api.identifiers",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "identifiers",
      "value": "It accepts a domain name, a website URL on the domain, or an email address on the domain.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "You query the Brand Context API by a domain name, or by a website URL or email address on the domain"
    },
    {
      "id": "brandfetch-brand-context-api.identifiers.resolution",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "identifiers.resolution",
      "value": "A website URL or email address is resolved to its registrable domain before the lookup.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "The API resolves a website URL or an email address to its registrable domain before the lookup."
    },
    {
      "id": "brandfetch-brand-context-api.identifiers.storage",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "identifiers.storage",
      "value": "The API does not store the URL or email address sent; request logs show only the domain.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "It does not store the URL or the address. Your request logs show only the domain."
    },
    {
      "id": "brandfetch-brand-context-api.identifiers.tickerIsinCrypto",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "identifiers.tickerIsinCrypto",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-context-api.auth",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "auth",
      "value": "Requests authenticate with an API key sent as a Bearer token, or are paid one at a time with x402 or MPP.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "Authenticate with an API key sent as `Authorization: Bearer <key>`, or pay for the single request with x402 or MPP"
    },
    {
      "id": "brandfetch-brand-context-api.auth.payPerRequest.x402",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "auth.payPerRequest.x402",
      "value": "x402 payments are made in USDC on Base with the exact scheme.",
      "source": "https://docs.brandfetch.com/agents/pay-per-request",
      "checked": "2026-11-11",
      "quote": "Payments are made in USDC on Base (`eip155:8453`) with the x402 `exact` scheme"
    },
    {
      "id": "brandfetch-brand-context-api.auth.payPerRequest.mpp",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "auth.payPerRequest.mpp",
      "value": "MPP payments for a single request use USDC.e on Tempo; cards are not offered at this price.",
      "source": "https://docs.brandfetch.com/agents/pay-per-request",
      "checked": "2026-11-11",
      "quote": "USDC.e on Tempo from a cent, so every per-request price qualifies."
    },
    {
      "id": "brandfetch-brand-context-api.requestOptions.accept",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "requestOptions.accept",
      "value": "The Accept request header chooses the response format.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Use the `Accept` request header to choose the format of the response"
    },
    {
      "id": "brandfetch-brand-context-api.requestOptions.cachedOnly",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "requestOptions.cachedOnly",
      "value": "The optional cachedOnly query parameter, when true, returns a context only if one is already cached, without crawling the domain.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "When `true`, return a brand context only if one is already cached, responding instantly without crawling the domain."
    },
    {
      "id": "brandfetch-brand-context-api.requestOptions.cachedOnly.default",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "requestOptions.cachedOnly.default",
      "value": "cachedOnly defaults to false; any value other than true keeps live resolution on a cache miss.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "Any value other than `true` (including omitting the parameter) keeps the default behaviour of resolving the domain live on a cache miss. Defaults to `false`."
    },
    {
      "id": "brandfetch-brand-context-api.responseFormats.json",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseFormats.json",
      "value": "JSON (application/json) is the default response format.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "`application/json` (default): returns the structured JSON object described below."
    },
    {
      "id": "brandfetch-brand-context-api.responseFormats.markdown",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseFormats.markdown",
      "value": "Sending Accept: text/markdown returns the brand context as a Markdown document.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "`text/markdown`: returns the brand context as a Markdown document, ready to drop directly into an LLM prompt or a Markdown-aware surface."
    },
    {
      "id": "brandfetch-brand-context-api.responseFormats.markdown.contentType",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseFormats.markdown.contentType",
      "value": "Markdown responses are served as text/markdown; charset=utf-8.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "The Markdown representation is served as `text/markdown; charset=utf-8`."
    },
    {
      "id": "brandfetch-brand-context-api.responseFormats.markdown.emptyFields",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseFormats.markdown.emptyFields",
      "value": "In the Markdown version, fields with no value are left out.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Fields with no value are omitted rather than rendered empty."
    },
    {
      "id": "brandfetch-brand-context-api.keyCase",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "keyCase",
      "value": "Field names are snake_case, unlike the rest of the Brandfetch API, which uses camelCase.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Unlike the rest of the Brandfetch API, which uses camelCase, the Brand Context API returns field names in `snake_case`"
    },
    {
      "id": "brandfetch-brand-context-api.responseKeys.meta",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseKeys.meta",
      "value": "meta holds the resolved domain, the brand's canonical name, and when the context was resolved.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "The resolved domain, the brand's canonical name, and when the context was resolved."
    },
    {
      "id": "brandfetch-brand-context-api.responseKeys.identity",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseKeys.identity",
      "value": "identity holds the tagline, mission, description and tags.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Tagline, mission, description, and tags."
    },
    {
      "id": "brandfetch-brand-context-api.responseKeys.positioning",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseKeys.positioning",
      "value": "positioning holds the value proposition, target audience segments, and products and services.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Value proposition, target audience segments, and products & services."
    },
    {
      "id": "brandfetch-brand-context-api.responseKeys.brand",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseKeys.brand",
      "value": "brand holds the brand's voice and visual style, each as a narrative summary with descriptive attributes.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "The brand's voice and visual style, each as a narrative summary with descriptive attributes."
    },
    {
      "id": "brandfetch-brand-context-api.responseKeys.competition",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseKeys.competition",
      "value": "competition holds the brand's competitors, most direct first.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "The brand's competitors, most direct first."
    },
    {
      "id": "brandfetch-brand-context-api.responseKeys.alwaysPresent",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responseKeys.alwaysPresent",
      "value": "All five top-level objects are present on every 200 response.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "`meta`, `identity`, `positioning`, `brand` and `competition` are present on every `200` response"
    },
    {
      "id": "brandfetch-brand-context-api.meta.resolved_at",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "meta.resolved_at",
      "value": "meta.resolved_at is an ISO 8601 UTC timestamp of when the context was resolved.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "ISO 8601 timestamp, in UTC, of when the context was resolved."
    },
    {
      "id": "brandfetch-brand-context-api.cache.marker",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "cache.marker",
      "value": "On a cached response, meta.resolved_at shows when the context was first resolved, not when the request was made.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "On a cached response, `resolved_at` is when the context was originally resolved, not when you made the request."
    },
    {
      "id": "brandfetch-brand-context-api.positioning.target_audience",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "positioning.target_audience",
      "value": "Each target_audience entry has a segment label and a description of what that segment needs from the brand.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Each entry has a `segment` label and a `description` of what that segment needs from the brand."
    },
    {
      "id": "brandfetch-brand-context-api.positioning.products_and_services",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "positioning.products_and_services",
      "value": "Each product or service has a name, a type (product or service) and a description, plus optional category, features, tags, url and pricing.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Each entry has a `name`, a `type` (`product` or `service`), and a `description`, plus the optional fields below."
    },
    {
      "id": "brandfetch-brand-context-api.positioning.products_and_services.nulls",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "positioning.products_and_services.nulls",
      "value": "An optional product field is null (or an empty array) when the brand's site does not state it, and none is guessed.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "A value is `null` when the brand's site does not state it — the array fields may instead be an empty array, which means the same — and none is ever guessed."
    },
    {
      "id": "brandfetch-brand-context-api.positioning.products_and_services.features",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "positioning.products_and_services.features",
      "value": "features lists up to five things a customer can do with the offering, each starting with a verb.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Up to five things a customer can do with the offering, each starting with a verb"
    },
    {
      "id": "brandfetch-brand-context-api.positioning.products_and_services.pricing",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "positioning.products_and_services.pricing",
      "value": "pricing holds the charging model, free_tier, starting_price, currency, unit, plans and pricing page url, and is null unless the brand publishes prices.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "Published pricing for the offering. `null` unless the brand publishes prices; never estimated."
    },
    {
      "id": "brandfetch-brand-context-api.brand.voice",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "brand.voice",
      "value": "brand.voice has a summary, an attributes array of short adjectives, and an avoid array of tones the brand would not use.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "a `summary`, an `attributes` array of short adjectives, and an `avoid` array of tones the brand would not use."
    },
    {
      "id": "brandfetch-brand-context-api.brand.style",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "brand.style",
      "value": "brand.style is a prose summary plus attributes; logo files, color values and font names come from the Brand API instead.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "`style` describes the visual identity in prose."
    },
    {
      "id": "brandfetch-brand-context-api.competition.competitors",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "competition.competitors",
      "value": "competitors lists up to five companies with name and domain, and may add type (direct or indirect), category, positioning and overlap.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "Up to five competitors, most direct first. Each entry has a `name` and a `domain`, and may have a `type` (`direct` or `indirect`), a `category`, a `positioning` summary, and an `overlap` array naming where the two compete."
    },
    {
      "id": "brandfetch-brand-context-api.competition.empty",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "competition.empty",
      "value": "An empty competitors array means no competitor could be identified, which is common for small and local businesses.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "An empty `competitors` array means no competitor could be identified, which is common for small and local businesses."
    },
    {
      "id": "brandfetch-brand-context-api.competition.legacyNull",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "competition.legacyNull",
      "value": "competition is null for contexts generated before competitors were added; those contexts are regenerated over time.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "`null` for a context generated before competitors were added to the Brand Context API; such contexts are regenerated over time."
    },
    {
      "id": "brandfetch-brand-context-api.responses.204",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responses.204",
      "value": "With cachedOnly=true and nothing cached, the API answers 204 No Content with an empty body.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "If nothing is cached, the API responds with `204 No Content` instead of resolving the domain live."
    },
    {
      "id": "brandfetch-brand-context-api.responses.204.billing",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "responses.204.billing",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-context-api.errors.400",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.400",
      "value": "A URL whose host is not a domain name, or a malformed email address, returns 400 and is not billed.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "A URL whose host is not a domain name returns `400`. A malformed address also returns `400`. The API does not bill these requests."
    },
    {
      "id": "brandfetch-brand-context-api.errors.401",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.401",
      "value": "401 is returned when the Authorization header is present but malformed.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "Unauthorized. Returned when the `Authorization` header is present but malformed."
    },
    {
      "id": "brandfetch-brand-context-api.errors.402.rejectedPayment",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.402.rejectedPayment",
      "value": "A 402 for a payment that was not accepted or could not be settled charges nothing.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "Nothing is charged in that case."
    },
    {
      "id": "brandfetch-brand-context-api.errors.403",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.403",
      "value": "An invalid API key answers 403 on /v2/context/*, as on the other paid routes.",
      "source": "https://docs.brandfetch.com/changelog/overview",
      "checked": "2026-11-11",
      "quote": "Otherwise an invalid key still answers `403`"
    },
    {
      "id": "brandfetch-brand-context-api.errors.404",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.404",
      "value": "404 means no brand context could be generated for the domain, and it is not charged.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "Returned when no brand context could be generated for the domain, for example because the domain does not resolve or its site has no usable content. A `404` is not charged."
    },
    {
      "id": "brandfetch-brand-context-api.errors.422",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.422",
      "value": "422 means the domain's site blocks automated requests; it is not charged.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "The domain's site blocks automated requests, so no brand context can be generated for it. Retrying is unlikely to help. A `422` is not charged."
    },
    {
      "id": "brandfetch-brand-context-api.errors.429",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.429",
      "value": "429 is returned when the API key quota has been reached.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "The API will return an HTTP status code 429 when the quota has been reached."
    },
    {
      "id": "brandfetch-brand-context-api.errors.503.generationInProgress",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.503.generationInProgress",
      "value": "503 with x-bf-error: generation_in_progress means the domain is still being resolved; retry after Retry-After seconds. Not charged.",
      "source": "https://docs.brandfetch.com/reference/brand-context-api",
      "checked": "2026-11-11",
      "quote": "With `generation_in_progress`, the domain is still being resolved live: retry the request after the number of seconds in `Retry-After`."
    },
    {
      "id": "brandfetch-brand-context-api.errors.503.temporarilyUnavailable",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.503.temporarilyUnavailable",
      "value": "503 with x-bf-error: temporarily_unavailable means the API could not answer; retry shortly. Not charged.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "The Brand Context API could not answer the request."
    },
    {
      "id": "brandfetch-brand-context-api.errors.503.paymentService",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.503.paymentService",
      "value": "On a paid request, a 503 without an x-bf-error header comes from the payment service.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "A request paid with x402 or MPP can also receive a `503` without an `x-bf-error` header. That one comes from the payment service"
    },
    {
      "id": "brandfetch-brand-context-api.errors.notCharged",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "errors.notCharged",
      "value": "None of the 503, 422 or 404 error responses is charged.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "None of these responses is charged."
    },
    {
      "id": "brandfetch-brand-context-api.billing.successOnly",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "billing.successOnly",
      "value": "Only successful lookups are metered.",
      "source": "https://docs.brandfetch.com/changelog/overview",
      "checked": "2026-11-11",
      "quote": "Only successful lookups are metered, and requests for `brandfetch.com` are always free"
    },
    {
      "id": "brandfetch-brand-context-api.freshness.liveResolution",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "freshness.liveResolution",
      "value": "A domain not yet in the dataset is resolved live, which can take several seconds.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "By default, if a domain is not yet part of our dataset the Brand Context API resolves it live. This guarantees global coverage, but a live resolution can take several seconds."
    },
    {
      "id": "brandfetch-brand-context-api.freshness.liveLatencyTarget",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "freshness.liveLatencyTarget",
      "value": "A first-time live build targets 10 to 12 seconds, depending on the site.",
      "source": "https://brandfetch.com/llms.txt",
      "checked": "2026-11-11",
      "quote": "A URL built live targets **10–12 seconds** depending on the site's complexity."
    },
    {
      "id": "brandfetch-brand-context-api.freshness.populateCache",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "freshness.populateCache",
      "value": "A normal request without cachedOnly populates the cache for later cachedOnly requests.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "To populate the cache, make a standard request (without `cachedOnly`) for the domain."
    },
    {
      "id": "brandfetch-brand-context-api.freshness.determinism",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "freshness.determinism",
      "value": "Cached brands return the same stored result until refreshed; only the first live build can vary.",
      "source": "https://brandfetch.com/developers/brand-context-api.md",
      "checked": "2026-11-11",
      "quote": "Cached brands return the same stored result every time until it is refreshed. A URL built live on its first request is generated once, then cached, so only that first build can vary."
    },
    {
      "id": "brandfetch-brand-context-api.freshness.refreshInterval",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "freshness.refreshInterval",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-context-api.prefetch",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "prefetch",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-context-api.webhooks",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "webhooks",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/delivery-methods/webhooks/event-types",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-context-api.batch",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "batch",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-context-api.rateLimit",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "rateLimit",
      "value": "Throughput is limited to a sustained 100 requests per second, with a hard limit of 30,000 requests per rolling 5 minutes.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "throughput is limited to a sustained 100 requests/second with some flexibility to accommodate bursts (30,000 requests / rolling 5 minute hard limit)"
    },
    {
      "id": "brandfetch-brand-context-api.quota.headers",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "quota.headers",
      "value": "The x-api-key-quota header shows the quota and x-api-key-approximate-usage shows the current month's usage.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "To see your current month's usage, look for the `x-api-key-approximate-usage` response header."
    },
    {
      "id": "brandfetch-brand-context-api.quota.warningEmail",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "quota.warningEmail",
      "value": "Brandfetch emails a warning at 80% of the quota.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "We will also send you an email warning you upon reaching 80% of your quota."
    },
    {
      "id": "brandfetch-brand-context-api.freeRequests.brandfetchCom",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "freeRequests.brandfetchCom",
      "value": "Requests for brandfetch.com are free and do not count towards quota.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "All requests for the domain **brandfetch.com** are free and will not count towards your usage/quotas."
    },
    {
      "id": "brandfetch-brand-context-api.freeTier",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "freeTier",
      "value": "A free developer account gets 100 free requests.",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11",
      "quote": "When you sign up for a free developer account, you get 100 free requests."
    },
    {
      "id": "brandfetch-brand-context-api.mcp.tool",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "mcp.tool",
      "value": "The MCP tool for this endpoint is get_brand_context.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "Get LLM-ready brand context for a domain, website URL, or email address: voice, audience, positioning, and style."
    },
    {
      "id": "brandfetch-brand-context-api.sourcing",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "sourcing",
      "value": "Brandfetch describes Brand Context data as sourced, not guessed: every field is grounded in source data.",
      "source": "https://brandfetch.com/developers/brand-context-api.md",
      "checked": "2026-11-11",
      "quote": "Every field grounded in source data. No model-only guesses."
    },
    {
      "id": "brandfetch-brand-context-api.sourcing.ownSite",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "sourcing.ownSite",
      "value": "Brand contexts are built entirely from what a brand publishes on its own site.",
      "source": "https://docs.brandfetch.com/changelog/overview",
      "checked": "2026-11-11",
      "quote": "Brand contexts are now built entirely from what a brand publishes on its own site"
    },
    {
      "id": "brandfetch-brand-context-api.sourcing.method",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "sourcing.method",
      "value": "Output is grounded in the live site and run through an extraction process, not taken from model memory.",
      "source": "https://brandfetch.com/developers/brand-context-api.md",
      "checked": "2026-11-11",
      "quote": "Output is grounded in the live site and run through our extraction harness, not pulled from model memory or a raw prompt."
    },
    {
      "id": "brandfetch-brand-context-api.sourcing.inferredLabel",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "sourcing.inferredLabel",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/brand-context-api/overview",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-context-api.llmsTxt.positioning",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "llmsTxt.positioning",
      "value": "brandfetch.com/llms.txt lists positioning keys in camelCase (valueProposition, targetAudiences) with competitors inside positioning, unlike the API reference.",
      "source": "https://brandfetch.com/llms.txt",
      "checked": "2026-11-11",
      "quote": "**`positioning`** — `valueProposition`, `targetAudiences`, `products and services`, `competitors`."
    },
    {
      "id": "brandfetch-brand-context-api.llmsTxt.style",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "llmsTxt.style",
      "value": "brandfetch.com/llms.txt says brand.style includes colors and fonts with semantic roles, unlike the overview, which says style is prose.",
      "source": "https://brandfetch.com/llms.txt",
      "checked": "2026-11-11",
      "quote": "`style` (colors and fonts with semantic roles, plus the design system)"
    },
    {
      "id": "brandfetch-brand-context-api.launch",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "launch",
      "value": "The Brand Context API launched in May 2026.",
      "source": "https://docs.brandfetch.com/changelog/overview",
      "checked": "2026-11-11",
      "quote": "Four additions since the launch in May"
    },
    {
      "id": "brandfetch-brand-context-api.sdk",
      "about": "brandfetch-brand-context-api",
      "subject": "Brandfetch Brand Context API",
      "field": "sdk",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/delivery-methods/rest-api",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-api.endpoint",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "endpoint",
      "value": "The auto-detect endpoint is GET https://api.brandfetch.io/v2/brands/{identifier}.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "GET /v2/brands/{identifier}"
    },
    {
      "id": "brandfetch-brand-api.endpoint.typedRoutes",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "endpoint.typedRoutes",
      "value": "Typed routes /v2/brands/domain/, /ticker/, /isin/ and /crypto/ are recommended over auto-detect to avoid naming collisions.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "explicit type routes are recommended to avoid naming collisions"
    },
    {
      "id": "brandfetch-brand-api.identifiers",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "identifiers",
      "value": "It accepts a domain, website URL, email address, brand ID, ISIN, stock or ETF ticker, or crypto symbol.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Get brand data using a Domain, Website URL, Email address, Brand ID, ISIN, Stock/ETF ticker, or Crypto symbol."
    },
    {
      "id": "brandfetch-brand-api.identifiers.order",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "identifiers.order",
      "value": "Auto-detect tries the identifier as a domain, then ticker, then ISIN, then crypto symbol.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "auto-detects the identifier type (in the order: domain → ticker → ISIN → crypto)"
    },
    {
      "id": "brandfetch-brand-api.identifiers.email",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "identifiers.email",
      "value": "Email addresses work only on the shorthand /v2/brands/{identifier} route.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Email addresses work on the shorthand route only."
    },
    {
      "id": "brandfetch-brand-api.identifiers.url",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "identifiers.url",
      "value": "Website URLs work only on the shorthand /v2/brands/{identifier} route.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Website URLs work on the shorthand route only."
    },
    {
      "id": "brandfetch-brand-api.identifiers.mailboxProvider",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "identifiers.mailboxProvider",
      "value": "A mailbox provider's address resolves to that provider's brand; the API does not say whether the domain is the contact's company.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "a gmail.com address returns the brand of gmail.com. The API does not tell you whether the domain is the contact's company."
    },
    {
      "id": "brandfetch-brand-api.auth",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "auth",
      "value": "Requests authenticate with an API key sent as a Bearer token, or are paid one at a time with x402 or MPP.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Authenticate with an API key sent as `Authorization: Bearer <key>`, or pay for the single request with x402 or MPP"
    },
    {
      "id": "brandfetch-brand-api.requestOptions.allowNsfw",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "requestOptions.allowNsfw",
      "value": "The allowNsfw query parameter controls whether brands flagged as adult content are returned.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "The `allowNsfw` query parameter lets you control this behavior"
    },
    {
      "id": "brandfetch-brand-api.requestOptions.cachedOnly",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "requestOptions.cachedOnly",
      "value": "The cachedOnly query parameter, when true, answers from the store only and returns 204 for a brand not yet indexed.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "When `true`, the Brand API answers from its store alone."
    },
    {
      "id": "brandfetch-brand-api.requestOptions.palette",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "requestOptions.palette",
      "value": "The palette query parameter (true or 1) adds a palette object with the brand's full color system.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Set `true` or `1` to add a `palette` object to the response."
    },
    {
      "id": "brandfetch-brand-api.responseFormats",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseFormats",
      "value": "Responses are JSON.",
      "source": "https://docs.brandfetch.com/delivery-methods/rest-api",
      "checked": "2026-11-11",
      "quote": "Each API is a standard HTTPS endpoint that returns JSON and authenticates with your API key."
    },
    {
      "id": "brandfetch-brand-api.responseFormats.markdown",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseFormats.markdown",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.id",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.id",
      "value": "id is the brand's unique identifier.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Unique identifier for the brand"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.name",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.name",
      "value": "name is the brand name.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "description: Brand name"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.domain",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.domain",
      "value": "domain is the brand's website.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "description: Brand website URL"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.claimed",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.claimed",
      "value": "claimed is true when the brand's owner has claimed its profile on Brandfetch.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Set to true if the owner of the brand claimed its brand profile on"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.description",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.description",
      "value": "description is a short brand description.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "description: Brand description"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.longDescription",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.longDescription",
      "value": "longDescription is a longer brand description.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "description: Brand long description"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.links",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.links",
      "value": "links lists social profiles (twitter, facebook, instagram, github, youtube, linkedin, crunchbase) with name and url.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Social media links of the brand"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.logo",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.logo",
      "value": "logo is a shortcut to the best logo from logos, a WebP up to 512 px on its longer side, or null.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Shortcut field for the brand's logo: the address of the best match from `logos`. The image is a WebP up to 512 px on its longer side."
    },
    {
      "id": "brandfetch-brand-api.responseKeys.symbol",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.symbol",
      "value": "symbol is a shortcut to the best symbol from logos, a WebP up to 512 px, or null.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Shortcut field for the brand's symbol: the address of the best match from `logos`."
    },
    {
      "id": "brandfetch-brand-api.responseKeys.icon",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.icon",
      "value": "icon is a shortcut to the brand's icon, a square WebP up to 128 px, or null.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "The image is a square WebP up to 128 px."
    },
    {
      "id": "brandfetch-brand-api.responseKeys.banner",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.banner",
      "value": "banner is a shortcut to the best banner from images, a WebP up to 1500 px wide, or null.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "The image is a WebP up to 1500 px wide."
    },
    {
      "id": "brandfetch-brand-api.responseKeys.logos",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.logos",
      "value": "logos lists the brand's logos, symbols and icons, each with a theme, a type, tags and a list of file formats.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Logos, symbols & icons of the brand"
    },
    {
      "id": "brandfetch-brand-api.logos.theme",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "logos.theme",
      "value": "A dark logo is for light backgrounds and a light logo is for dark backgrounds.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "A dark logo should be displayed on a light background (e.g. #ffffff)"
    },
    {
      "id": "brandfetch-brand-api.logos.type",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "logos.type",
      "value": "A logo entry's type is icon, logo, symbol or other.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "enum: - icon - logo - symbol - other"
    },
    {
      "id": "brandfetch-brand-api.logos.formats",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "logos.formats",
      "value": "Each file format entry has src, format (svg, webp, png or jpeg), height, width, size in bytes and background.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "A list of format objects containing files in different formats"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.colors",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.colors",
      "value": "colors lists the brand's colors, each with hex, type and brightness.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Accent, dark, light & palette colors of the brand"
    },
    {
      "id": "brandfetch-brand-api.colors.type",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "colors.type",
      "value": "A color's type is accent, dark, light or brand.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "enum: - accent - dark - light - brand"
    },
    {
      "id": "brandfetch-brand-api.colors.brightness",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "colors.brightness",
      "value": "brightness is calculated as 0.2126*R + 0.7152*G + 0.0722*B.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Calculated based on the standard formula 0.2126*R + 0.7152*G + 0.0722*B"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.fonts",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.fonts",
      "value": "fonts lists title and body fonts, each with name, type, origin, originId and weights.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Title & body fonts of the brand"
    },
    {
      "id": "brandfetch-brand-api.fonts.origin",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "fonts.origin",
      "value": "A font's origin is google (hosted on Google Fonts), custom (uploaded by the brand) or system.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "enum: - google - custom - system"
    },
    {
      "id": "brandfetch-brand-api.fonts.license",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "fonts.license",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.images",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.images",
      "value": "images lists banners, pictures from the brand's own site, and other images, each with formats and tags.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Banner, picture & other images of the brand"
    },
    {
      "id": "brandfetch-brand-api.images.pictureMetadata",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "images.pictureMetadata",
      "value": "picture entries carry pictureMetadata with score, rank, natural size, alt text, source URL and image category.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Present on `picture` entries only. Lets you choose between a brand's pictures without fetching the files first."
    },
    {
      "id": "brandfetch-brand-api.responseKeys.qualityScore",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.qualityScore",
      "value": "qualityScore is a 0 to 1 score for the quality of the brand's data, read in thirds: low, medium, high.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Score between 0-1 which indicates the quality of the data for the given brand."
    },
    {
      "id": "brandfetch-brand-api.responseKeys.company",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.company",
      "value": "company holds firmographics: employees range, financial identifiers, founded year, industries, kind and location.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "The company object returns firmographic data related to the brand"
    },
    {
      "id": "brandfetch-brand-api.company.industries.score",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "company.industries.score",
      "value": "Each industry carries a score: the probability the brand belongs to it, with 1 meaning it was set rather than predicted.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Probability, between 0 and 1, that the brand belongs to this industry. A value of 1 marks an industry that was set rather than predicted"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.isNsfw",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.isNsfw",
      "value": "isNsfw is true when the brand is adult content.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "true when the brand is for adult content, e.g. is not safe for work"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.urn",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.urn",
      "value": "urn is a Uniform Resource Name for the brand.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Uniform Resource Name for the brand"
    },
    {
      "id": "brandfetch-brand-api.responseKeys.screenshot",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.screenshot",
      "value": "screenshot holds the URL of a PNG of the top of the homepage and capturedAt, or null.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "The screenshot shows the top of the homepage at a desktop viewport, as Brandfetch saw it on its last visit."
    },
    {
      "id": "brandfetch-brand-api.responseKeys.palette",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responseKeys.palette",
      "value": "palette appears only when the request sets palette=true or palette=1.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Present only when the request sets `palette=true` or `palette=1`."
    },
    {
      "id": "brandfetch-brand-api.errors.format",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.format",
      "value": "Refusals carry an error code in the x-bf-error header and repeat it as error in the JSON body, with message and docs.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "The `x-bf-error` header carries one code. The JSON body repeats that code as `error`, beside the `message` you have always received and a `docs` link to this table."
    },
    {
      "id": "brandfetch-brand-api.errors.400",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.400",
      "value": "400 means the request could not be read (bad identifier, route, lookup kind, email or URL) and uses no credit.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "A `400` consumes no API credit."
    },
    {
      "id": "brandfetch-brand-api.errors.401",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.401",
      "value": "401 (authorization_required) means the Authorization header carries no usable token.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "The `Authorization` header is present but carries no usable token (`authorization_required`)."
    },
    {
      "id": "brandfetch-brand-api.errors.403",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.403",
      "value": "403 means the key is unknown or revoked, the plan has no Brand API credits, or the key could not be checked.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "the key is unknown or revoked (`api_key_invalid`), the plan includes no Brand API credits (`no_api_credits`), or the key could not be checked just now (`auth_unavailable`, worth a retry)."
    },
    {
      "id": "brandfetch-brand-api.errors.404",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.404",
      "value": "404 means nothing can be served for the identifier, and every 404 uses one API credit.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Every `404` consumes an API credit."
    },
    {
      "id": "brandfetch-brand-api.errors.404.crawlQueued",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.404.crawlQueued",
      "value": "404 with x-bf-error: crawl_queued means Brandfetch does not hold the brand yet and has started collecting it.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "We do not hold the brand yet, and we have started collecting it."
    },
    {
      "id": "brandfetch-brand-api.errors.404.crawlQueued.payPerRequest",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.404.crawlQueued.payPerRequest",
      "value": "A crawl_queued 404 is not charged on a pay-per-request call.",
      "source": "https://docs.brandfetch.com/agents/pay-per-request",
      "checked": "2026-11-11",
      "quote": "It is not charged, and its body says so in a `payment` object with `charged: false`."
    },
    {
      "id": "brandfetch-brand-api.errors.429",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.429",
      "value": "429 (quota_exceeded) means the key's monthly quota is used up.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "The key's monthly quota is used up (`quota_exceeded`)."
    },
    {
      "id": "brandfetch-brand-api.errors.500",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.500",
      "value": "500 (internal_error) is a failure on Brandfetch's side.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "A failure on our side (`internal_error`). Retry; nothing in the request caused it."
    },
    {
      "id": "brandfetch-brand-api.errors.503",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.503",
      "value": "503 (temporarily_unavailable) means a dependency did not answer.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "A dependency did not answer. The request was fine."
    },
    {
      "id": "brandfetch-brand-api.billing.chargedOutcomes",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "billing.chargedOutcomes",
      "value": "Brandfetch charges for 200, 304, and 404 responses. It does not charge for a crawl_queued 404 on a pay-per-request call.",
      "source": "https://docs.brandfetch.com/agents/pay-per-request",
      "checked": "2026-11-11",
      "quote": "`200`, `304` and `404` responses, the same outcomes a subscription credit pays for"
    },
    {
      "id": "brandfetch-brand-api.responses.204",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responses.204",
      "value": "With cachedOnly=true, a brand not yet indexed gets 204 No Content with an empty body.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Returned when `cachedOnly=true` and the brand is not yet indexed. The response body is empty."
    },
    {
      "id": "brandfetch-brand-api.responses.204.billing",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "responses.204.billing",
      "value": "A 204 does not count towards quota.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "A `204` does not count towards your quota."
    },
    {
      "id": "brandfetch-brand-api.freshness.liveIndexing",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "freshness.liveIndexing",
      "value": "A brand not yet in the dataset is indexed live on request.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Brand API works in real-time, if a brand is not part of our dataset, it will index the information live"
    },
    {
      "id": "brandfetch-brand-api.freshness.crawlContinues",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "freshness.crawlContinues",
      "value": "A crawl that outlasts the request carries on in the background and the request gets a crawl_queued 404.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "A crawl still running when the request has to be answered carries on in the background"
    },
    {
      "id": "brandfetch-brand-api.freshness.cacheMarker",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "freshness.cacheMarker",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-api.freshness.screenshotCapturedAt",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "freshness.screenshotCapturedAt",
      "value": "screenshot.capturedAt gives when Brandfetch took the homepage screenshot.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "When Brandfetch took the screenshot."
    },
    {
      "id": "brandfetch-brand-api.prefetch",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "prefetch",
      "value": "A HEAD request on the same route checks whether Brandfetch holds the brand and queues a crawl if not.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "ask for it in advance with a `HEAD` request on the same route"
    },
    {
      "id": "brandfetch-brand-api.prefetch.billing",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "prefetch.billing",
      "value": "Prefetch HEAD requests never count towards quota.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Prefetch requests never count towards your quota."
    },
    {
      "id": "brandfetch-brand-api.prefetch.plan",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "prefetch.plan",
      "value": "Prefetching is available on paid plans only; a free plan gets 403 paid_plan_required.",
      "source": "https://docs.brandfetch.com/reference/brand-api-prefetch",
      "checked": "2026-11-11",
      "quote": "it is available on paid plans only — a free plan receives `403` with the header `x-bf-error: paid_plan_required`."
    },
    {
      "id": "brandfetch-brand-api.prefetch.throttling",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "prefetch.throttling",
      "value": "Prefetch requests may be throttled.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Prefetch requests may be throttled to prevent abuse and ensure quality of service."
    },
    {
      "id": "brandfetch-brand-api.batch",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "batch",
      "value": "POST /v2/brands/batch takes up to 100 identifiers and returns one result per identifier in order.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Send up to 100 identifiers in one request. Get one result per identifier, in the order you sent them."
    },
    {
      "id": "brandfetch-brand-api.batch.plan",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "batch.plan",
      "value": "Batch lookups are available on paid plans and with prepaid credits.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Batch lookups are available on paid plans and with prepaid credits."
    },
    {
      "id": "brandfetch-brand-api.webhooks.events",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "webhooks.events",
      "value": "Webhooks can report brand.claimed, brand.deleted, brand.updated, brand.rebranded, brand.company.updated and brand.verified events.",
      "source": "https://docs.brandfetch.com/delivery-methods/webhooks/event-types",
      "checked": "2026-11-11",
      "quote": "Triggered anytime a brand's data is updated."
    },
    {
      "id": "brandfetch-brand-api.webhooks.plan",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "webhooks.plan",
      "value": "Webhooks require an active paid subscription.",
      "source": "https://docs.brandfetch.com/delivery-methods/webhooks/overview",
      "checked": "2026-11-11",
      "quote": "Webhooks are available on every paid plan, with no contract and no sales call."
    },
    {
      "id": "brandfetch-brand-api.webhooks.cost.subscribe",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "webhooks.cost.subscribe",
      "value": "Each brand a webhook is subscribed to costs API credits; registering an endpoint is free.",
      "source": "https://docs.brandfetch.com/delivery-methods/webhooks/overview",
      "checked": "2026-11-11",
      "quote": "What consumes API credits is each brand you subscribe a webhook to."
    },
    {
      "id": "brandfetch-brand-api.webhooks.cost.deliveries",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "webhooks.cost.deliveries",
      "value": "Receiving webhook deliveries is free at any volume.",
      "source": "https://docs.brandfetch.com/delivery-methods/webhooks/overview",
      "checked": "2026-11-11",
      "quote": "Free, at any volume"
    },
    {
      "id": "brandfetch-brand-api.rateLimit",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "rateLimit",
      "value": "Throughput is limited to a sustained 100 requests per second, with a hard limit of 30,000 requests per rolling 5 minutes.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "throughput is limited to a sustained 100 requests/second with some flexibility to accommodate bursts (30,000 requests / rolling 5 minute hard limit)"
    },
    {
      "id": "brandfetch-brand-api.quota.headers",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "quota.headers",
      "value": "The x-api-key-quota header shows the quota and x-api-key-approximate-usage shows the current month's usage.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "To see your current month's usage, look for the `x-api-key-approximate-usage` response header."
    },
    {
      "id": "brandfetch-brand-api.errors.429.quota",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "errors.429.quota",
      "value": "The API returns 429 when the quota has been reached.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "The API will return an HTTP status code 429 when the quota has been reached."
    },
    {
      "id": "brandfetch-brand-api.quota.warningEmail",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "quota.warningEmail",
      "value": "Brandfetch emails a warning at 80% of the quota.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "We will also send you an email warning you upon reaching 80% of your quota."
    },
    {
      "id": "brandfetch-brand-api.freeRequests.brandfetchCom",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "freeRequests.brandfetchCom",
      "value": "Requests for brandfetch.com are free and do not count towards quota.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "All requests for the domain **brandfetch.com** are free and will not count towards your usage/quotas."
    },
    {
      "id": "brandfetch-brand-api.freeTier",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "freeTier",
      "value": "A free developer account gets 100 free requests.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "When you sign up for a free developer account, you get 100 free requests."
    },
    {
      "id": "brandfetch-brand-api.mcp.tools.get_brand",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "mcp.tools.get_brand",
      "value": "get_brand returns full brand data by domain, website URL, email, ticker, ISIN or crypto symbol, and renders a brand card on MCP Apps hosts.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "Retrieve full brand data (logos, colors, fonts, company info) by domain, website URL, email address, ticker, ISIN, or crypto symbol."
    },
    {
      "id": "brandfetch-brand-api.mcp.tools.get_brand_data",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "mcp.tools.get_brand_data",
      "value": "get_brand_data returns the same data as get_brand without the interactive card.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "The same brand data as `get_brand`, returned without the interactive card."
    },
    {
      "id": "brandfetch-brand-api.mcp.tools.get_brands",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "mcp.tools.get_brands",
      "value": "get_brands returns up to 25 brands in one call, on paid plans and with prepaid credits.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "Retrieve up to 25 brands in one call, without the interactive card."
    },
    {
      "id": "brandfetch-brand-api.mcp.quota",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "mcp.quota",
      "value": "MCP requests count against Brand API quotas.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "MCP requests count against your Brand API quotas."
    },
    {
      "id": "brandfetch-brand-api.sourcing",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "sourcing",
      "value": "Brandfetch describes Brand API data as deterministic, with no guesses and no AI.",
      "source": "https://brandfetch.com/developers/brand-api.md",
      "checked": "2026-11-11",
      "quote": "Precise and predictable brand data, deterministic fields. Built to customize visuals at scale, no guesses, no AI."
    },
    {
      "id": "brandfetch-brand-api.sourcing.firstParty",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "sourcing.firstParty",
      "value": "Brand API data comes mainly from the brand's own website and managed social profiles, cross-checked.",
      "source": "https://brandfetch.com/developers/brand-api.md",
      "checked": "2026-11-11",
      "quote": "Data comes primarily from first-party sources: the brand's own website and managed social profiles, cross-checked across them."
    },
    {
      "id": "brandfetch-brand-api.sourcing.paletteUsage",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "sourcing.paletteUsage",
      "value": "Palette usage values come from the crawl and are not inferred.",
      "source": "https://docs.brandfetch.com/reference/brand-api",
      "checked": "2026-11-11",
      "quote": "Each value comes from the crawl. Brandfetch does not infer any value."
    },
    {
      "id": "brandfetch-brand-api.sourcing.inferredLabel",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "sourcing.inferredLabel",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-api.coverage.logoCore",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "coverage.logoCore",
      "value": "On a core sample of 542 brands, 95% had a logo.",
      "source": "https://docs.brandfetch.com/accuracy/coverage-and-quality",
      "checked": "2026-11-11",
      "quote": "Logo (Any) | 95%"
    },
    {
      "id": "brandfetch-brand-api.coverage.logoLongTail",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "coverage.logoLongTail",
      "value": "On a long-tail sample of 397 micro-businesses, 85.9% had a logo.",
      "source": "https://docs.brandfetch.com/accuracy/coverage-and-quality",
      "checked": "2026-11-11",
      "quote": "Logo (Any) | 85.9%"
    },
    {
      "id": "brandfetch-brand-api.latency",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "latency",
      "value": "Brandfetch advertises sub-200ms responses for the Brand API.",
      "source": "https://brandfetch.com/developers/brand-api.md",
      "checked": "2026-11-11",
      "quote": "Global CDN, sub-200ms responses, billions of requests served."
    },
    {
      "id": "brandfetch-brand-api.assetUse.shortcutImageCaching",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "assetUse.shortcutImageCaching",
      "value": "Shortcut image addresses change when the image does, so the image can be cached for as long as you like, and fetching it does not count towards quota.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "Its `t` parameter changes when the image does, so you can cache the image for as long as you like. The image does not count towards your quota."
    },
    {
      "id": "brandfetch-brand-api.assetUse.clientId",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "assetUse.clientId",
      "value": "Image addresses carry a signed client ID in c, and a request without it is refused.",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11",
      "quote": "The client ID is required, and a request without it is refused."
    },
    {
      "id": "brandfetch-brand-api.assetUse.responseCaching",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "assetUse.responseCaching",
      "value": "Brand API responses can be cached for 30 days.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "Brand API responses can be cached for 30 days to reduce credit usage."
    },
    {
      "id": "brandfetch-brand-api.assetUse.attribution",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "assetUse.attribution",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/brand-api/overview",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch-brand-api.sdk",
      "about": "brandfetch-brand-api",
      "subject": "Brandfetch Brand API",
      "field": "sdk",
      "value": "Not published",
      "source": "https://docs.brandfetch.com/delivery-methods/rest-api",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch.freePlan.noCard",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "freePlan.noCard",
      "value": "The Free plan needs no credit card.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "No credit card required."
    },
    {
      "id": "brandfetch.freePlan.batch",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "freePlan.batch",
      "value": "On the Free plan, batch lookups need prepaid credits.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "Prepaid credits only"
    },
    {
      "id": "brandfetch.freePlan.webhooks",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "freePlan.webhooks",
      "value": "Webhooks are not available on the Free plan.",
      "source": "https://brandfetch.com/llms.txt",
      "checked": "2026-11-11",
      "quote": "Requires an active subscription; not available on the Free plan."
    },
    {
      "id": "brandfetch.cheapestPaidPlan.price",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "cheapestPaidPlan.price",
      "value": "The cheapest paid plan, Growth Starter, is $129 a month billed monthly or $99 a month billed yearly.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "$129/month billed monthly, or $99/month billed yearly."
    },
    {
      "id": "brandfetch.discount",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "discount",
      "value": "Qualified startups and nonprofits get 40% off paid plans for the first 12 months.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "Qualified startups and nonprofits get 40% off paid plans for the first 12 months."
    },
    {
      "id": "brandfetch.payPerRequest.noQuota",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "payPerRequest.noQuota",
      "value": "Pay-per-request calls are tied to the paying wallet and have no quota.",
      "source": "https://docs.brandfetch.com/agents/pay-per-request",
      "checked": "2026-11-11",
      "quote": "Paid requests are attributed to the paying wallet, not to any account, so there is no quota"
    },
    {
      "id": "brandfetch.mcp.address",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "mcp.address",
      "value": "The MCP server address is https://mcp.brandfetch.io/mcp.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "https://mcp.brandfetch.io/mcp"
    },
    {
      "id": "brandfetch.mcp.auth",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "mcp.auth",
      "value": "The MCP server signs in with OAuth.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "The Brandfetch MCP server uses OAuth."
    },
    {
      "id": "brandfetch.mcp.token",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "mcp.token",
      "value": "Clients without OAuth can send an MCP token from the developer dashboard as a bearer token.",
      "source": "https://docs.brandfetch.com/mcp/overview",
      "checked": "2026-11-11",
      "quote": "you can generate an MCP token in the"
    },
    {
      "id": "brandfetch.mcp.cost",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "mcp.cost",
      "value": "Each MCP tool maps to an API endpoint and counts against the existing quota.",
      "source": "https://brandfetch.com/developers/mcp.md",
      "checked": "2026-11-11",
      "quote": "Each MCP tool maps to a Brandfetch API endpoint and counts against your existing quota"
    },
    {
      "id": "brandfetch.mcp.openSource",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "mcp.openSource",
      "value": "The MCP server source is on GitHub under the MIT license.",
      "source": "https://docs.brandfetch.com/changelog/overview",
      "checked": "2026-11-11",
      "quote": "Its source is published at [github.com/Brandfetch/brandfetch-mcp-server](https://github.com/Brandfetch/brandfetch-mcp-server) under the MIT license."
    },
    {
      "id": "brandfetch.freshness.recrawl",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "freshness.recrawl",
      "value": "API requests trigger a background recrawl when a brand has not been refreshed in 3 months.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "API requests trigger a background recrawl if the brand hasn't been refreshed in 3 months"
    },
    {
      "id": "brandfetch.coverage",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "coverage",
      "value": "Brandfetch says it covers over 50 million brands.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "Over 50 million brands and growing"
    },
    {
      "id": "brandfetch.dataSource",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "dataSource",
      "value": "Beyond profiles that brands claim, Brandfetch gathers its data from public sources on the open web.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "Beyond that, our data is aggregated from publicly available sources on the open web."
    },
    {
      "id": "brandfetch.brandPermission",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "brandPermission",
      "value": "Brandfetch does not obtain each brand's permission, but brands can claim and manage their profile.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "No, but brands can claim and manage their profile directly on"
    },
    {
      "id": "brandfetch.terms.delivery",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "terms.delivery",
      "value": "Under the terms, content is delivered by hotlinks, or by caching and webhooks only with a specific written agreement.",
      "source": "https://brandfetch.com/terms?mode=dev",
      "checked": "2026-11-11",
      "quote": "Upon specific written agreement between the Parties, by using (i) caching mechanisms, which temporarily store data for faster retrieval"
    },
    {
      "id": "brandfetch.terms.cacheLicense",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "terms.cacheLicense",
      "value": "Where it applies, the terms allow caching retrieved content for at most 30 days.",
      "source": "https://brandfetch.com/terms?mode=dev",
      "checked": "2026-11-11",
      "quote": "for a maximum period of thirty (30) days from the date of retrieval"
    },
    {
      "id": "brandfetch.terms.refresh",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "terms.refresh",
      "value": "The terms require a new API call at least every 30 days to keep cached content.",
      "source": "https://brandfetch.com/terms?mode=dev",
      "checked": "2026-11-11",
      "quote": "The Customer is required to make a new API call at least once every thirty (30) days to refresh the Cached Content"
    },
    {
      "id": "brandfetch.terms.noAiIngestion",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "terms.noAiIngestion",
      "value": "The terms forbid using the content to train AI models or ingesting it into an AI model without Brandfetch's prior consent.",
      "source": "https://brandfetch.com/terms?mode=dev",
      "checked": "2026-11-11",
      "quote": "using any part of the Services or Content to train machine learning or AI model or otherwise ingesting the Content into a machine learning or AI model."
    },
    {
      "id": "brandfetch.terms.thirdPartyIp",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "terms.thirdPartyIp",
      "value": "The licence does not cover the logos and brand assets themselves, which stay their owners' property.",
      "source": "https://brandfetch.com/terms?mode=dev",
      "checked": "2026-11-11",
      "quote": "this license does not extend to the original logos, images, or other brand assets"
    },
    {
      "id": "brandfetch.commercialUse.internal",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "commercialUse.internal",
      "value": "Commercial use is allowed for internal use cases, such as showing a logo in your app.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "Yes, for internal use cases like displaying a logo in your app."
    },
    {
      "id": "brandfetch.commercialUse.sublicensing",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "commercialUse.sublicensing",
      "value": "Sublicensing the data or including it in your own API responses needs a separate agreement.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11",
      "quote": "Sublicensing the data to your customers or including it in your own API responses requires a specific agreement."
    },
    {
      "id": "brandfetch.logoFairUse",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "logoFairUse",
      "value": "Logo use must follow fair use: referring to a brand without endorsement, misrepresentation or alteration.",
      "source": "https://docs.brandfetch.com/guides/logo-fair-use",
      "checked": "2026-11-11",
      "quote": "Logo usage must comply with the principles of \"fair use,\" which allow referencing a brand without endorsement, misrepresentation, or alteration."
    },
    {
      "id": "brandfetch.logoFairUse.notAllowed",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "logoFairUse.notAllowed",
      "value": "Putting a third-party logo on your own products or services is not fair use.",
      "source": "https://docs.brandfetch.com/guides/logo-fair-use",
      "checked": "2026-11-11",
      "quote": "Using a third-party logo on your own products or services is not fair use."
    },
    {
      "id": "brandfetch.integrations.noCode",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "integrations.noCode",
      "value": "Brandfetch connects to Zapier, Make and n8n.",
      "source": "https://docs.brandfetch.com/integrations/overview",
      "checked": "2026-11-11",
      "quote": "Connect Brandfetch to Zapier, Make, and n8n without writing code"
    },
    {
      "id": "brandfetch.integrations.shadcn",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "integrations.shadcn",
      "value": "Brandfetch publishes a shadcn/ui registry of six React components.",
      "source": "https://docs.brandfetch.com/integrations/shadcn",
      "checked": "2026-11-11",
      "quote": "registry with six React components for logos, company search, logo walls and brand cards"
    },
    {
      "id": "context-dev-brand.endpoint",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "endpoint",
      "value": "Brand retrieval is POST https://api.context.dev/v1/brand/retrieve with a JSON body; every lookup type uses this one route.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "All lookup types use `POST /brand/retrieve` and return the same profile shape."
    },
    {
      "id": "context-dev-brand.baseUrl",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "baseUrl",
      "value": "The API base URL is https://api.context.dev/v1.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "servers:\n  - url: https://api.context.dev/v1"
    },
    {
      "id": "context-dev-brand.identifiers",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "identifiers",
      "value": "A profile can be looked up by domain, company name, work email, stock ticker, transaction descriptor, or page URL, chosen with the type field (by_domain, by_name, by_email, by_ticker, by_transaction, by_direct_url).",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Retrieve a Brand profile using a domain, company name, work email, stock ticker, transaction descriptor, or page URL."
    },
    {
      "id": "context-dev-brand.params.domain",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "params.domain",
      "value": "A domain lookup sends type \"by_domain\" and domain; a full URL is normalized to its domain, and domain has a minimum length of 3.",
      "source": "https://docs.context.dev/brand/lookup-by-domain",
      "checked": "2026-11-11",
      "quote": "A URL such as `https://www.stripe.com/pricing` is normalized to `stripe.com`."
    },
    {
      "id": "context-dev-brand.params.maxAgeMs",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "params.maxAgeMs",
      "value": "maxAgeMs sets cache freshness: it defaults to 3 months, is clamped to 0 to 1 year, and 0 forces a refresh.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Cache freshness; defaults to 3 months, clamped to 0–1 year. `0` refreshes."
    },
    {
      "id": "context-dev-brand.params.maxSpeed",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "params.maxSpeed",
      "value": "maxSpeed skips slower enrichment and returns a less detailed response; it is not accepted for page-URL lookups.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Skip slower enrichment for a less detailed response."
    },
    {
      "id": "context-dev-brand.params.force_language",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "params.force_language",
      "value": "force_language returns text in a supported language; it is not accepted for page-URL lookups.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Return text in a supported language."
    },
    {
      "id": "context-dev-brand.params.timeoutOpts",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "params.timeoutOpts",
      "value": "timeoutOpts sets a deadline of 1,000 to 300,000 ms and what to return when it passes, such as behavior \"return-partial\".",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`timeoutOpts.milliseconds` | 1,000 to 300,000 ms."
    },
    {
      "id": "context-dev-brand.params.tagsPoliciesZdr",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "params.tagsPoliciesZdr",
      "value": "All lookup types also accept tags (up to 20 usage labels), policies (access policy IDs) and zdr.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Up to 20 labels of 1 to 50 characters each."
    },
    {
      "id": "context-dev-brand.requestMode",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "requestMode",
      "value": "The call is synchronous: the request stays open until the lookup finishes.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "The request stays open until the lookup finishes."
    },
    {
      "id": "context-dev-brand.auth",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "auth",
      "value": "Authentication is a bearer API key in the Authorization header.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Send `Authorization: Bearer <API_KEY>`. Keys have full access unless restricted to scopes."
    },
    {
      "id": "context-dev-brand.response.status",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.status",
      "value": "status is always \"ok\" on success.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Always `ok` on success."
    },
    {
      "id": "context-dev-brand.response.partial",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.partial",
      "value": "partial is true when the timeout ended processing; unfinished fields are omitted and the result should not be treated as a complete profile.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "When `partial: true`, unfinished fields are omitted; do not treat the result as a complete profile."
    },
    {
      "id": "context-dev-brand.response.code",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.code",
      "value": "code is the HTTP status code repeated in the body.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "description: HTTP status code"
    },
    {
      "id": "context-dev-brand.response.request_id",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.request_id",
      "value": "request_id is a UUID for the request, also sent as the X-Request-Id header.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Unique ID of this request, also in `X-Request-Id`."
    },
    {
      "id": "context-dev-brand.response.brand.identity",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.identity",
      "value": "brand carries domain, title, description and slogan: the brand's domain, name, brief description and slogan.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "The brand’s domain, name, brief description, and slogan."
    },
    {
      "id": "context-dev-brand.response.brand.colors",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.colors",
      "value": "brand.colors is a list of hex, name and source, where source is \"site\" (the website's own theme signals) or \"logo\" (logo image pixels).",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`hex`, `name`, and `source` (`site` for the website’s own theme signals, `logo` for logo image pixels)."
    },
    {
      "id": "context-dev-brand.response.brand.logos",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.logos",
      "value": "brand.logos lists url, type (icon or logo), mode (light, dark or has_opaque_background), colors, and resolution with width, height and aspect_ratio; an SVG is returned ahead of a similarly shaped raster.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`mode` is `light` (best for light mode), `dark` (best for dark mode), or `has_opaque_background` (usable in either because the image has its own background). An SVG variant is returned ahead of a similarly shaped raster equivalent."
    },
    {
      "id": "context-dev-brand.response.brand.logos.url",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.logos.url",
      "value": "Each logo url is described only as a hosted logo URL.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "description: Hosted logo URL."
    },
    {
      "id": "context-dev-brand.response.brand.backdrops",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.backdrops",
      "value": "brand.backdrops lists backdrop images with url, colors, and resolution (width, height, aspect_ratio).",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`url`, `colors[]`, and `resolution` with `width`, `height`, and `aspect_ratio`."
    },
    {
      "id": "context-dev-brand.response.brand.socials",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.socials",
      "value": "brand.socials lists type and url for social profiles; the changelog says 31 platforms are supported.",
      "source": "https://docs.context.dev/changelog",
      "checked": "2026-11-11",
      "quote": "bringing supported platforms to 31."
    },
    {
      "id": "context-dev-brand.response.brand.address",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.address",
      "value": "brand.address has street, city, state_province, state_code, postal_code, country and country_code.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`street`, `city`, `state_province`, `state_code`, `postal_code`, `country`, and `country_code`."
    },
    {
      "id": "context-dev-brand.response.brand.industries",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.industries",
      "value": "brand.industries.eic is a list of industry and subindustry pairs from Easy Industry Classification.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Easy Industry Classification - array of industry and\n                    subindustry pairs"
    },
    {
      "id": "context-dev-brand.response.brand.links",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.links",
      "value": "brand.links gives careers, privacy, terms, contact, blog and pricing page URLs, each null when not found.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`careers`, `privacy`, `terms`, `contact`, `blog`, and `pricing` page URLs, each `null` when not found."
    },
    {
      "id": "context-dev-brand.response.brand.stock",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.stock",
      "value": "brand.stock has ticker and exchange, and is null when the company is not publicly traded.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`ticker` and `exchange`; `null` when the company is not publicly traded."
    },
    {
      "id": "context-dev-brand.response.brand.employees",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.employees",
      "value": "brand.employees has a range (such as \"11 to 50\") and an exact count, and is null when unknown.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "`range` and `exact`; `null` when unknown."
    },
    {
      "id": "context-dev-brand.response.brand.contact",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.contact",
      "value": "brand.email and brand.phone are the company email address and phone number.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Company email address and phone number."
    },
    {
      "id": "context-dev-brand.response.brand.primary_language",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.primary_language",
      "value": "brand.primary_language is the website's language, detected from the HTML lang tag, page content or social descriptions, or null.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Language of the website content, such as `english`, detected from the HTML `lang` tag, page content, or social media descriptions; `null` when undetected."
    },
    {
      "id": "context-dev-brand.response.brand.is_nsfw",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.brand.is_nsfw",
      "value": "brand.is_nsfw says whether the brand content is not safe for work.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Whether the brand content is not safe for work."
    },
    {
      "id": "context-dev-brand.response.cache_metadata",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.cache_metadata",
      "value": "cache_metadata (required) reports status hit, miss or zdr, and age_ms, the age of the cached data in milliseconds (0 for miss and zdr).",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Whether the response was served from cache, required fresh work, or\n            honored zero-data-retention cache bypass."
    },
    {
      "id": "context-dev-brand.response.key_metadata",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "response.key_metadata",
      "value": "key_metadata reports credits_consumed for this request and credits_remaining for the organization.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Credits this request used and your remaining balance."
    },
    {
      "id": "context-dev-brand.emptyCollections",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "emptyCollections",
      "value": "Collections such as logos and socials can be empty in a successful response.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Collections can be empty."
    },
    {
      "id": "context-dev-brand.errors.400.notFound",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.400.notFound",
      "value": "A Brand lookup with no match returns 400 NOT_FOUND, and it is not charged.",
      "source": "https://docs.context.dev/account/credits",
      "checked": "2026-11-11",
      "quote": "Brand `400 NOT_FOUND` and People `not_found` are not charged."
    },
    {
      "id": "context-dev-brand.errors.400.website",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.400.website",
      "value": "An inaccessible domain can return WEBSITE_NOT_FOUND, WEBSITE_ACCESS_ERROR or WEBSITE_BLOCKED; the docs do not say whether these are charged.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "An inaccessible domain can return `WEBSITE_NOT_FOUND`, `WEBSITE_ACCESS_ERROR`, or `WEBSITE_BLOCKED`."
    },
    {
      "id": "context-dev-brand.errors.401",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.401",
      "value": "401 means a missing or invalid API key.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "description: Missing or invalid API key."
    },
    {
      "id": "context-dev-brand.errors.402",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.402",
      "value": "402 USAGE_EXCEEDED means insufficient credits with valid authentication; legacy deployments may return 401 instead.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Insufficient credits (`USAGE_EXCEEDED`); authentication is valid.\n            Retry once funded. Legacy deployments may return 401."
    },
    {
      "id": "context-dev-brand.errors.403",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.403",
      "value": "403 means key permissions or organization settings do not allow the request, or an access policy blocks the website (ACCESS_POLICY_DENIED).",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "API key permissions or organization settings do not allow this\n            request."
    },
    {
      "id": "context-dev-brand.errors.408",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.408",
      "value": "408 is a request timeout and is not charged.",
      "source": "https://docs.context.dev/account/credits",
      "checked": "2026-11-11",
      "quote": "Validation, authentication, permission, 408, 429, and server errors are not."
    },
    {
      "id": "context-dev-brand.errors.422",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.422",
      "value": "422 is returned for email rejection and for short deadlines on cold (uncached) domains.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Email rejection and short cold-domain deadlines return 422."
    },
    {
      "id": "context-dev-brand.errors.422.coldDomain",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.422.coldDomain",
      "value": "An uncached domain with behavior \"fail\" and a deadline under 10,000 ms returns 422 COLD_DOMAIN_TIMEOUT_TOO_LOW.",
      "source": "https://docs.context.dev/brand/lookup-by-domain",
      "checked": "2026-11-11",
      "quote": "An uncached domain with `timeoutOpts.behavior: \"fail\"` and a deadline below 10,000 ms returns `422 COLD_DOMAIN_TIMEOUT_TOO_LOW`."
    },
    {
      "id": "context-dev-brand.errors.429",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.429",
      "value": "429 RATE_LIMITED means a rate limit was hit; follow the Retry-After header (1 to 60 seconds) before retrying.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/brand",
      "checked": "2026-11-11",
      "quote": "Rate limit exceeded. Organization concurrency rejections include\n        structured error_data and subscription settings; follow Retry-After\n        before retrying."
    },
    {
      "id": "context-dev-brand.errors.partialCharged",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.partialCharged",
      "value": "Successful and partial results are charged.",
      "source": "https://docs.context.dev/account/credits",
      "checked": "2026-11-11",
      "quote": "Successful and partial results are charged."
    },
    {
      "id": "context-dev-brand.cache.default",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "cache.default",
      "value": "Cached brand data is reused up to maxAgeMs, about 90 days by default; maxAgeMs 0 requests a fresh retrieval.",
      "source": "https://www.context.dev/pricing.md",
      "checked": "2026-11-11",
      "quote": "Brand Retrieve may reuse cached data up to its documented maxAgeMs, which defaults to about 90 days and is clamped to 0 through one year."
    },
    {
      "id": "context-dev-brand.cache.coldDomain",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "cache.coldDomain",
      "value": "For an uncached domain the docs recommend a 60,000 ms budget, partial results, or prefetching first.",
      "source": "https://docs.context.dev/brand/lookup-by-domain",
      "checked": "2026-11-11",
      "quote": "Use a 60,000 ms budget, allow partial results, or [prefetch](https://docs.context.dev/brand/prefetching.md) before the lookup."
    },
    {
      "id": "context-dev-brand.prefetch",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "prefetch",
      "value": "POST /v1/utility/prefetch with type \"brand\" or \"styleguide\" and a domain or work email queues retrieval so a later request returns sooner; it requires a paid plan and returns a status, not the profile.",
      "source": "https://docs.context.dev/brand/prefetching",
      "checked": "2026-11-11",
      "quote": "It requires a paid plan and returns a status, not the requested profile."
    },
    {
      "id": "context-dev-brand.prefetch.freePlan",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "prefetch.freePlan",
      "value": "A prefetch request from a Free-plan account returns 403 FORBIDDEN.",
      "source": "https://docs.context.dev/brand/prefetching",
      "checked": "2026-11-11",
      "quote": "A Free-plan request returns `403 FORBIDDEN`."
    },
    {
      "id": "context-dev-brand.webhooksForChanges",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "webhooksForChanges",
      "value": "Not published: Context.dev webhooks cover batch and monitor deliveries only, with no event for brand profile changes.",
      "source": "https://docs.context.dev/webhooks",
      "checked": "2026-11-11",
      "quote": "Batches send a final-status event. Monitors send `change.detected` by default and can also send `run.completed`."
    },
    {
      "id": "context-dev-brand.corrections",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "corrections",
      "value": "Corrections or rebrands are requested through https://www.context.dev/update.",
      "source": "https://www.context.dev/pricing.md",
      "checked": "2026-11-11",
      "quote": "For a specific correction or rebrand, use [https://www.context.dev/update](https://www.context.dev/update)"
    },
    {
      "id": "context-dev-brand.assetUrls.expiry",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "assetUrls.expiry",
      "value": "Not published: the docs do not say whether hosted logo or backdrop URLs expire or are signed; they say to treat returned media URLs as external resources and handle them defensively.",
      "source": "https://www.context.dev/pricing.md",
      "checked": "2026-11-11",
      "quote": "treat returned media URLs as external resources that your application should handle defensively."
    },
    {
      "id": "context-dev-brand.assetUrls.fallback",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "assetUrls.fallback",
      "value": "The docs say to use the returned logo URLs with missing-image fallbacks.",
      "source": "https://docs.context.dev/agent-quickstart",
      "checked": "2026-11-11",
      "quote": "For logos from the Brand API, use the returned logo URLs with missing-image fallbacks."
    },
    {
      "id": "context-dev-brand.reviewBeforeUse",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "reviewBeforeUse",
      "value": "The docs say to let users correct uncertain company details and to verify discovered addresses and contact information when accuracy matters.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "Store the canonical `brand.domain` alongside your input, and let users correct uncertain company details. Treat discovered addresses and contact information as data to verify when accuracy matters."
    },
    {
      "id": "context-dev-brand.dataRetention.zdr",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "dataRetention.zdr",
      "value": "With ZDR access, zdr \"enabled\" in the JSON body suppresses application logs, request-log entries and exported traces; brand records, shared caches and hosted assets can still be read and saved.",
      "source": "https://docs.context.dev/optimization/zero-data-retention",
      "checked": "2026-11-11",
      "quote": "This mode does not make brand data ephemeral."
    },
    {
      "id": "context-dev-brand.dataRetention.zdrConfirm",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "dataRetention.zdrConfirm",
      "value": "A request that honored ZDR returns the header X-Context-ZDR: true; cache metadata can still report hit or miss.",
      "source": "https://docs.context.dev/optimization/zero-data-retention",
      "checked": "2026-11-11",
      "quote": "Both require the organization's ZDR entitlement and confirm acceptance with `X-Context-ZDR: true`. Cache metadata can still report `hit` or `miss`."
    },
    {
      "id": "context-dev-brand.dataRetention.zdrLaunched",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "dataRetention.zdrLaunched",
      "value": "ZDR for Brand retrieval was added in the changelog entry dated October 28, 2026.",
      "source": "https://docs.context.dev/changelog",
      "checked": "2026-11-11",
      "quote": "[Brand retrieval](https://docs.context.dev/brand/overview) now supports `zdr: \"enabled\"`."
    },
    {
      "id": "context-dev-brand.mcp.toolName",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "mcp.toolName",
      "value": "The Smithery integration page lists get-brand or brand-retrieve-unified as the MCP tool for retrieving company data.",
      "source": "https://docs.context.dev/integrations/smithery",
      "checked": "2026-11-11",
      "quote": "| Retrieve company data | `get-brand` or `brand-retrieve-unified` |"
    },
    {
      "id": "context-dev-brand.sdk.method",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "sdk.method",
      "value": "In the TypeScript SDK the call is client.brand.retrieve({ type: \"by_domain\", domain }); in Go it is client.Brand.Get; PHP sends the request directly.",
      "source": "https://docs.context.dev/brand/overview",
      "checked": "2026-11-11",
      "quote": "const response = await client.brand.retrieve({"
    },
    {
      "id": "context-dev-styleguide.endpoint",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "endpoint",
      "value": "Styleguide extraction is GET https://api.context.dev/v1/web/styleguide with query parameters.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "curl --get https://api.context.dev/v1/web/styleguide"
    },
    {
      "id": "context-dev-styleguide.identifiers",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "identifiers",
      "value": "Send exactly one of domain or directUrl; directUrl inspects a specific page.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "Send exactly one of `domain` or `directUrl`."
    },
    {
      "id": "context-dev-styleguide.params.colorScheme",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "params.colorScheme",
      "value": "colorScheme is light or dark; dark emulates dark mode, and light and dark results are cached separately.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "`colorScheme=dark` emulates dark mode; light and dark results are cached separately."
    },
    {
      "id": "context-dev-styleguide.params.maxAgeMs",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "params.maxAgeMs",
      "value": "maxAgeMs defaults to three months (90 days, 7,776,000,000 ms), is clamped to 0 to 1 year, and 0 refreshes.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "`maxAgeMs` defaults to three months (90 days, 7,776,000,000 ms), is clamped to 0–1 year, and `0` refreshes."
    },
    {
      "id": "context-dev-styleguide.params.other",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "params.other",
      "value": "timeoutOpts, tags, policies (comma-separated access policy IDs) and zdr are also accepted as query parameters.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "Pass `policies` as comma-separated [access policy](https://docs.context.dev/optimization/access-policies.md) IDs; a URL must pass every policy."
    },
    {
      "id": "context-dev-styleguide.auth",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "auth",
      "value": "Authentication is a bearer API key in the Authorization header.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "Send `Authorization: Bearer <API_KEY>`. Keys have full access unless\n        restricted to scopes."
    },
    {
      "id": "context-dev-styleguide.response.status",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.status",
      "value": "status is always \"ok\" on success; domain is the normalized domain that was processed.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "description: The normalized domain that was processed"
    },
    {
      "id": "context-dev-styleguide.response.finalDOMState",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.finalDOMState",
      "value": "finalDOMState is \"loaded\", or \"still-loading\" when capture ended before the page finished loading.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "The response’s `finalDOMState` is `loaded`, or `still-loading` when capture ended before the page finished loading."
    },
    {
      "id": "context-dev-styleguide.response.styleguide.mode",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.styleguide.mode",
      "value": "styleguide.mode is the primary color mode of the site, light or dark.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "description: The primary color mode of the website design"
    },
    {
      "id": "context-dev-styleguide.response.styleguide.colors",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.styleguide.colors",
      "value": "styleguide.colors has three hex values: accent, background and text.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "description: Primary colors used on the website"
    },
    {
      "id": "context-dev-styleguide.response.styleguide.typography",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.styleguide.typography",
      "value": "styleguide.typography gives headings h1 to h4 and p, each with fontFamily, fontFallbacks, fontSize, fontWeight, lineHeight and letterSpacing.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "description: Typography styles used on the website"
    },
    {
      "id": "context-dev-styleguide.response.styleguide.elementSpacing",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.styleguide.elementSpacing",
      "value": "styleguide.elementSpacing is the site's spacing scale with xs, sm, md, lg and xl.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "description: Spacing system used on the website"
    },
    {
      "id": "context-dev-styleguide.response.styleguide.shadows",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.styleguide.shadows",
      "value": "styleguide.shadows gives sm, md, lg, xl and inner shadow values.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "description: Shadow styles used on the website"
    },
    {
      "id": "context-dev-styleguide.response.styleguide.components",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.styleguide.components",
      "value": "styleguide.components gives button styles (primary, secondary, link) and card styles, such as colors, border, radius, padding and a css field.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "description: UI component styles"
    },
    {
      "id": "context-dev-styleguide.response.styleguide.fontLinks",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.styleguide.fontLinks",
      "value": "styleguide.fontLinks maps each non-generic font family to its type (google or custom), faces with file url, style, weight, width and unicodeRange, a category and a displayName; the older files map is deprecated.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "Font assets keyed by family name as it appears in\n                          fontFamily/fontFallbacks (non-generic names only)."
    },
    {
      "id": "context-dev-styleguide.response.cache_metadata",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "response.cache_metadata",
      "value": "cache_metadata (required) reports status hit, miss or zdr and age_ms; key_metadata reports credits used and remaining.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "required:\n                  - cache_metadata\n                  - request_id"
    },
    {
      "id": "context-dev-styleguide.assetUrls.fonts",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "assetUrls.fonts",
      "value": "Captured font files are returned through stable CDN URLs in fontLinks so downloads work outside the source website (changelog, September 3, 2026).",
      "source": "https://docs.context.dev/changelog",
      "checked": "2026-11-11",
      "quote": "Styleguide now returns captured font files through stable CDN URLs in `fontLinks`, so downloads work outside the source website."
    },
    {
      "id": "context-dev-styleguide.assetUrls.missingFont",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "assetUrls.missingFont",
      "value": "A missing file URL can mean the font could not be resolved.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "A missing file URL can mean the font could not be resolved."
    },
    {
      "id": "context-dev-styleguide.reviewBeforeUse",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "reviewBeforeUse",
      "value": "The docs say extracted values need review for contrast, responsive typography and interactive states before being used as a design system.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "Extracted values need review: check contrast, responsive typography, and interactive states before using them as a design system."
    },
    {
      "id": "context-dev-styleguide.fontLicence",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "fontLicence",
      "value": "The docs say to verify a font's license before shipping its files in your application.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "Verify its license before shipping font files in your application."
    },
    {
      "id": "context-dev-styleguide.errors",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "errors",
      "value": "Documented responses are 400 (such as WEBSITE_BLOCKED or WEBSITE_NOT_FOUND), 401, 402 USAGE_EXCEEDED, 403 ACCESS_POLICY_DENIED, 408 REQUEST_TIMEOUT, 429 and 500.",
      "source": "https://docs.context.dev/api-reference/brand-intelligence/styleguide",
      "checked": "2026-11-11",
      "quote": "Machine-readable error code, such as `WEBSITE_BLOCKED` or\n                      `WEBSITE_NOT_FOUND`."
    },
    {
      "id": "context-dev-styleguide.errors.403",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "errors.403",
      "value": "A 403 can mean missing key permissions or a missing ZDR entitlement.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "A 403 can indicate missing key permissions or ZDR entitlement."
    },
    {
      "id": "context-dev-styleguide.prefetch",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "prefetch",
      "value": "Styleguides can be prefetched with type \"styleguide\" on the Prefetch route, which requires a paid plan.",
      "source": "https://docs.context.dev/brand/prefetching",
      "checked": "2026-11-11",
      "quote": "Set `type` to `brand` or `styleguide`."
    },
    {
      "id": "context-dev-styleguide.dataRetention.zdr",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "dataRetention.zdr",
      "value": "With ZDR access, zdr=enabled in the query string suppresses logs and traces; cached styleguides and hosted assets can still be read and saved.",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "Cached styleguides and hosted assets can still be read and saved."
    },
    {
      "id": "context-dev-styleguide.mcp.toolName",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "mcp.toolName",
      "value": "Not published. The MCP setup page names no Styleguide tool. The Composio integration page lists CONTEXT_DEV_GET_WEBSITE_STYLEGUIDE as a Composio tool.",
      "source": "https://docs.context.dev/integrations/composio",
      "checked": "2026-11-11",
      "quote": "| `CONTEXT_DEV_GET_WEBSITE_STYLEGUIDE` | Extract a website's design styles. |"
    },
    {
      "id": "context-dev-styleguide.sdk.method",
      "about": "context-dev-styleguide",
      "subject": "Context.dev Styleguide",
      "field": "sdk.method",
      "value": "In the TypeScript SDK the call is client.web.extractStyleguide({ domain, colorScheme }).",
      "source": "https://docs.context.dev/brand/styleguide",
      "checked": "2026-11-11",
      "quote": "const response = await client.web.extractStyleguide({"
    },
    {
      "id": "context-dev.rename",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "rename",
      "value": "Brand.dev became Context.dev on March 21, 2026, and existing integrations stay compatible without code changes.",
      "source": "https://docs.context.dev/changelog",
      "checked": "2026-11-11",
      "quote": "Brand.dev is now Context.dev, reflecting the expansion from brand data into web scraping and extraction."
    },
    {
      "id": "context-dev.auth.keyFormat",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "auth.keyFormat",
      "value": "API keys look like ctxt_secret_... and SDKs read them from CONTEXT_DEV_API_KEY.",
      "source": "https://docs.context.dev/sdks",
      "checked": "2026-11-11",
      "quote": "export CONTEXT_DEV_API_KEY=\"ctxt_secret_...\""
    },
    {
      "id": "context-dev.billing.notCharged",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "billing.notCharged",
      "value": "Context.dev does not charge for validation, authentication, permission, 408, 429, and server errors. It charges for processed 404s on priced data APIs.",
      "source": "https://docs.context.dev/account/credits",
      "checked": "2026-11-11",
      "quote": "Processed 404s on priced data APIs are charged at their applicable price. Validation, authentication, permission, 408, 429, and server errors are not."
    },
    {
      "id": "context-dev.pricingFaq.notFoundBilled",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "pricingFaq.notFoundBilled",
      "value": "The pricing FAQ says not-found responses (404) are billed at the request's base price.",
      "source": "https://www.context.dev/pricing.md",
      "checked": "2026-11-11",
      "quote": "Not-found responses (404) are billed at the request’s base price."
    },
    {
      "id": "context-dev.plans",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "plans",
      "value": "Paid plans are Developer ($20/mo), Pro ($90/mo), Growth ($300/mo), Scale ($500/mo) and Scale 2.5M ($950/mo), plus Enterprise; annual billing saves two months.",
      "source": "https://www.context.dev/pricing.md",
      "checked": "2026-11-11",
      "quote": "Context.dev offers Developer ($20/mo), Pro ($90/mo), Growth ($300/mo), Scale ($500/mo), and Scale 2.5M ($950/mo)"
    },
    {
      "id": "context-dev.rollover",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "rollover",
      "value": "Paid balances reset to the monthly allowance at refill; unused credits normally do not roll over.",
      "source": "https://docs.context.dev/account/credits",
      "checked": "2026-11-11",
      "quote": "unused credits normally do not roll over."
    },
    {
      "id": "context-dev.rateLimits",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "rateLimits",
      "value": "Core data API limits cap concurrent requests per organization at the plan's concurrency; new Free organizations also have 10 requests per minute.",
      "source": "https://docs.context.dev/optimization/rate-limits",
      "checked": "2026-11-11",
      "quote": "New Free organizations also have a limit of 10 requests per minute across the organization."
    },
    {
      "id": "context-dev.rateLimits.planTable",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "rateLimits.planTable",
      "value": "Plan limits table: Free 2 concurrent requests, Developer 10, Pro 100, Growth 250, Scale 500, Scale 2.5M 500.",
      "source": "https://docs.context.dev/account/billing",
      "checked": "2026-11-11",
      "quote": "| Free | 1,000/month | 2 | 1 | 10 | 2 |"
    },
    {
      "id": "context-dev.rateLimits.legacy",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "rateLimits.legacy",
      "value": "Organizations created before concurrency limits keep per-minute limits per API key: 30 on Free with a work email, 10 on Free with a personal email, 60 on Developer, 200 on Pro, 600 on Growth and 700 on Scale.",
      "source": "https://docs.context.dev/account/billing",
      "checked": "2026-11-11",
      "quote": "Organizations created before concurrency limits keep per-minute limits per API key"
    },
    {
      "id": "context-dev.mcp.address",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "mcp.address",
      "value": "The hosted MCP server is at https://mcp.context.dev/mcp and clients sign in with OAuth.",
      "source": "https://docs.context.dev/install-mcp",
      "checked": "2026-11-11",
      "quote": "**Server URL:** `https://mcp.context.dev/mcp`"
    },
    {
      "id": "context-dev.mcp.auth",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "mcp.auth",
      "value": "Clients that cannot run OAuth can send an API key as Authorization: Bearer or X-API-Key; sign-in creates a key named \"Context.dev MCP\" and tool calls use its credits.",
      "source": "https://docs.context.dev/install-mcp",
      "checked": "2026-11-11",
      "quote": "Clients that can't run OAuth can send an API key as `Authorization: Bearer <key>` or `X-API-Key: <key>`."
    },
    {
      "id": "context-dev.mcp.billing",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "mcp.billing",
      "value": "Each MCP tool call runs the matching API request and is charged like it; the get-usage tool is free.",
      "source": "https://docs.context.dev/install-mcp",
      "checked": "2026-11-11",
      "quote": "Each tool call runs the matching API request; see [credits](https://docs.context.dev/account/credits.md) for what each operation costs."
    },
    {
      "id": "context-dev.mcp.responseCap",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "mcp.responseCap",
      "value": "MCP tool responses are capped at 80,000 characters.",
      "source": "https://docs.context.dev/install-mcp",
      "checked": "2026-11-11",
      "quote": "Tool responses are capped at 80,000 characters"
    },
    {
      "id": "context-dev.mcp.toolNames",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "mcp.toolNames",
      "value": "Not published on the MCP setup page: it says clients may prefix tool names and gives no list of tool names.",
      "source": "https://docs.context.dev/install-mcp",
      "checked": "2026-11-11",
      "quote": "Clients may prefix tool names with the server name, so check the server and operation rather than one exact display name."
    },
    {
      "id": "context-dev.sdks",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "sdks",
      "value": "Official SDKs exist for TypeScript (context.dev on npm), Python (context.dev on PyPI), Ruby (context.dev gem), Go (context-go-sdk/v2) and PHP (context-dev/context-dev-php).",
      "source": "https://docs.context.dev/sdks",
      "checked": "2026-11-11",
      "quote": "Install an official Context.dev SDK for TypeScript, Python, Ruby, Go, or PHP"
    },
    {
      "id": "context-dev.sdks.retries",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "sdks.retries",
      "value": "All five SDKs retry twice with exponential backoff after connection errors and 408, 409, 429 or 5xx responses.",
      "source": "https://docs.context.dev/sdks",
      "checked": "2026-11-11",
      "quote": "All five SDKs retry twice, with exponential backoff, after connection errors and `408`, `409`, `429`, or `5xx` responses."
    },
    {
      "id": "context-dev.dataRetention.zdrEntitlement",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "dataRetention.zdrEntitlement",
      "value": "Zero data retention is an organization entitlement requested per call; contact support@context.dev to enable it, otherwise requests return 403 ZDR_NOT_ENABLED.",
      "source": "https://docs.context.dev/optimization/zero-data-retention",
      "checked": "2026-11-11",
      "quote": "Zero data retention (ZDR) is an organization entitlement requested per call."
    },
    {
      "id": "context-dev.dataRetention.usageHistory",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "dataRetention.usageHistory",
      "value": "Usage history (credits and requests over time) is kept for one year.",
      "source": "https://docs.context.dev/llms.txt",
      "checked": "2026-11-11",
      "quote": "History is kept for one year."
    },
    {
      "id": "context-dev.apiVersioning",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "apiVersioning",
      "value": "Deprecated surfaces remain available for at least 90 days after announcement in the changelog.",
      "source": "https://docs.context.dev/optimization/trust",
      "checked": "2026-11-11",
      "quote": "Deprecated surfaces remain available for at least 90 days after announcement, subject to contractual support windows."
    },
    {
      "id": "logo-dev-brand-api.endpoint",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "endpoint",
      "value": "Brand lookup is GET https://api.logo.dev/v2/brands with exactly one identifier in the query string, for example ?domain=apple.com.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "Send your [secret key](https://www.logo.dev/docs/platform/api-keys.md) and exactly one identifier to `GET /v2/brands`"
    },
    {
      "id": "logo-dev-brand-api.identifiers",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "identifiers",
      "value": "Accepted identifiers are domain, ticker, isin, crypto and name; merchant is listed but not enabled for any account and returns 403.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "The API reference also lists `merchant`, for card-statement descriptors. It is not enabled for any account yet and returns `403`."
    },
    {
      "id": "logo-dev-brand-api.params.domain",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "params.domain",
      "value": "The domain is lowercased and reduced to its registrable domain, so www.stripe.com looks up stripe.com; the returned domain can differ from the one sent.",
      "source": "https://www.logo.dev/docs/brand/domain.md",
      "checked": "2026-11-11",
      "quote": "Logo.dev lowercases the domain and reduces it to the registrable domain, so `www.stripe.com` looks up `stripe.com`."
    },
    {
      "id": "logo-dev-brand-api.params.nosubscribe",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "params.nosubscribe",
      "value": "nosubscribe=true skips the automatic webhook subscription that a lookup makes when webhooks are on for the account.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "Add `nosubscribe=true` to skip that."
    },
    {
      "id": "logo-dev-brand-api.singleResult",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "singleResult",
      "value": "GET /v2/brands returns at most one brand, and only a 200 carries one.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "`GET /v2/brands` returns at most one brand, and only a `200` carries one."
    },
    {
      "id": "logo-dev-brand-api.auth",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "auth",
      "value": "Authentication is a secret key (sk_...) sent as a bearer token, called from a server.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "Brand takes your [secret key](https://www.logo.dev/docs/platform/api-keys.md) (`sk_...`) as a bearer token."
    },
    {
      "id": "logo-dev-brand-api.auth.noTestKeys",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "auth.noTestKeys",
      "value": "Logo.dev has no test or sandbox keys.",
      "source": "https://www.logo.dev/docs/platform/api-keys.md",
      "checked": "2026-11-11",
      "quote": "Logo.dev has no test or sandbox keys."
    },
    {
      "id": "logo-dev-brand-api.timeout",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "timeout",
      "value": "The docs say to set the HTTP client timeout to at least 15 seconds because assets can be prepared at request time.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "Set your HTTP client timeout to at least 15 seconds, because Logo.dev can prepare a brand's assets at request time."
    },
    {
      "id": "logo-dev-brand-api.response.envelope",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.envelope",
      "value": "Every successful response has data (the result) and metadata (about the request).",
      "source": "https://www.logo.dev/docs/platform/conventions.md",
      "checked": "2026-11-11",
      "quote": "`data` holds the result, and `metadata` describes the request."
    },
    {
      "id": "logo-dev-brand-api.response.data.id",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.id",
      "value": "data.id is the brand's stable id (brand_...), kept when its domain changes; the docs say to key records on it.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "Key your records on `data.id`, not on the domain."
    },
    {
      "id": "logo-dev-brand-api.response.data.slug",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.slug",
      "value": "data.slug is a readable label that can change and is not accepted for lookups.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "Readable label for display. It can change and is not accepted for\n            lookups; use `id`."
    },
    {
      "id": "logo-dev-brand-api.response.data.domain",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.domain",
      "value": "data.domain is the brand's own domain, which can differ from the one sent, and is null for brands with no website.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "The brand's own domain, which can differ from the one you sent."
    },
    {
      "id": "logo-dev-brand-api.response.data.status",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.status",
      "value": "data.status is \"ready\" on 200, \"not_indexed\" on 202 and \"not_found\" on 404.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "| `200` | The brand, with `status: \"ready\"` | Use it. A single image can still be `null`. |"
    },
    {
      "id": "logo-dev-brand-api.response.data.name",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.name",
      "value": "data.name and data.description are the company name and a description.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "turns one identifier into a brand's full public identity: its name, description, colors, social profiles, logo, brandmark, and banners."
    },
    {
      "id": "logo-dev-brand-api.response.data.indexed_at",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.indexed_at",
      "value": "data.indexed_at is when the record was last refreshed.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "description: When the record was last refreshed."
    },
    {
      "id": "logo-dev-brand-api.response.data.is_profane",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.is_profane",
      "value": "data.is_profane is true when the brand may carry NSFW imagery.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "'`true` when the brand may carry NSFW imagery.'"
    },
    {
      "id": "logo-dev-brand-api.response.data.socials",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.socials",
      "value": "data.socials maps network to profile URL, omitting networks with no profile; the schema enumerates 14 networks: facebook, github, instagram, linkedin, pinterest, reddit, snapchat, telegram, tumblr, twitter, wechat, whatsapp, wikipedia, youtube.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "Profile URLs keyed by network. Networks with no profile are omitted."
    },
    {
      "id": "logo-dev-brand-api.response.data.colors",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.colors",
      "value": "data.colors lists brand colors, most dominant first, each with r, g, b, hex and oklch (l lightness 0 to 1, c chroma, h hue 0 to 360).",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "description: Brand colors, most dominant first."
    },
    {
      "id": "logo-dev-brand-api.response.data.logo",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.logo",
      "value": "data.logo is the primary logo image object, or null when the brand has none.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "description: The primary logo. `null` when the brand has none."
    },
    {
      "id": "logo-dev-brand-api.response.data.brandmark",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.brandmark",
      "value": "data.brandmark is the wide logo lockup (symbol and wordmark, or wordmark alone), or null.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "The wide logo lockup: the symbol and wordmark together for most\n            brands, or the wordmark alone for pure-type brands."
    },
    {
      "id": "logo-dev-brand-api.response.data.social_banners",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.data.social_banners",
      "value": "data.social_banners is a list of banner image objects, empty when there are none.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "description: Banner images. Empty when there are none."
    },
    {
      "id": "logo-dev-brand-api.response.image.url",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.image.url",
      "value": "Each image url is a temporary signed download URL that stops working at expires_at, about 24 hours later; the signature is the credential, so no key is sent.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "A temporary signed download URL. It stops working at `expires_at`, about 24 hours later."
    },
    {
      "id": "logo-dev-brand-api.response.image.downloadParams",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.image.downloadParams",
      "value": "Download URLs take size (default 128, maximum 800), format (jpg default, png, webp) and theme (light or dark); a bare url downloads a 128-pixel JPG.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "A `url` with no parameters downloads a 128-pixel JPG, not the source file."
    },
    {
      "id": "logo-dev-brand-api.response.image.etag",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.image.etag",
      "value": "etag identifies the version of the source image and is the same on every route; download again only when it changes.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "Identifies this version of the source image. It is the same on every route."
    },
    {
      "id": "logo-dev-brand-api.response.image.blurhash",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.image.blurhash",
      "value": "blurhash is a compact placeholder to show while the image loads.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "A compact placeholder to show while the image loads."
    },
    {
      "id": "logo-dev-brand-api.response.image.source",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.image.source",
      "value": "source describes the original file: width, height, format, has_transparency and is_vector.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "The original file: `width`, `height`, `format` (such as `png`, `svg`, or `webp`), `has_transparency`, and `is_vector`"
    },
    {
      "id": "logo-dev-brand-api.response.image.last_updated_at",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.image.last_updated_at",
      "value": "last_updated_at is when the image last changed, or null if unchanged since indexing.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "When the image last changed. `null` if it has not changed since the brand was indexed."
    },
    {
      "id": "logo-dev-brand-api.response.image.expires_at",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.image.expires_at",
      "value": "expires_at is when the image url stops working, about 24 hours after the request.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "When `url` stops working, about 24 hours after the request."
    },
    {
      "id": "logo-dev-brand-api.response.metadata",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "response.metadata",
      "value": "metadata carries request_id, resolution (how the identifier reached the brand), pending (202 only) and subscription (when automatic subscribe ran).",
      "source": "https://www.logo.dev/docs/platform/conventions.md",
      "checked": "2026-11-11",
      "quote": "| `metadata.resolution` | Brand and image lookups | The identifier you sent, its normalized value, and how it reached the brand."
    },
    {
      "id": "logo-dev-brand-api.errors.202",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.202",
      "value": "202 means the brand is still being indexed; it has Retry-After: 30, is usually ready within a minute, polling should stop after 5 minutes, and retries are not billed.",
      "source": "https://www.logo.dev/docs/platform/errors.md",
      "checked": "2026-11-11",
      "quote": "Retry the same request after `retry_after_seconds`. Retries are not billed. Stop after `expires_in_seconds`, which is 5 minutes."
    },
    {
      "id": "logo-dev-brand-api.errors.202.since",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.202.since",
      "value": "Since November 6, 2026, GET /v2/brands returns 200 only for a complete brand and 202 until then.",
      "source": "https://www.logo.dev/docs/changelog.md",
      "checked": "2026-11-11",
      "quote": "`GET /v2/brands` now returns `200` only for a complete brand. Until then, it returns `202`."
    },
    {
      "id": "logo-dev-brand-api.errors.404",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.404",
      "value": "404 with data.status \"not_found\" means no brand matches; it is not an error and is free.",
      "source": "https://www.logo.dev/docs/platform/errors.md",
      "checked": "2026-11-11",
      "quote": "A lookup that finds no brand is not an error. It returns `404` inside the normal envelope, with `data.status` set to `not_found`, and it is free."
    },
    {
      "id": "logo-dev-brand-api.errors.402",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.402",
      "value": "402 with code insufficient_credits is returned when the credit balance is below the request's cost; retrying does not help.",
      "source": "https://www.logo.dev/docs/platform/errors.md",
      "checked": "2026-11-11",
      "quote": "An API request returns `402` with the code `insufficient_credits` when your API credit balance is below the request's cost."
    },
    {
      "id": "logo-dev-brand-api.errors.400",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.400",
      "value": "400 invalid_request means a missing or malformed parameter; whether it is billed is not stated.",
      "source": "https://www.logo.dev/docs/platform/errors.md",
      "checked": "2026-11-11",
      "quote": "| `invalid_request` | `400` | A parameter is missing or malformed |"
    },
    {
      "id": "logo-dev-brand-api.errors.401",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.401",
      "value": "401 means the secret key is missing, malformed, unknown or disabled, or a publishable key was used; the body has a msg field.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "The secret key is missing, malformed, unknown, or disabled. A\n        publishable key (`pk_`) is refused."
    },
    {
      "id": "logo-dev-brand-api.errors.403",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.403",
      "value": "403 forbidden covers an identifier type not yet enabled (merchant), a suspended account, or personal keys turned off by team membership; it is not billed.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "description: >-\n        The request is refused. Not billed."
    },
    {
      "id": "logo-dev-brand-api.errors.429",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.429",
      "value": "429 rate_limited means too many brand requests per minute or too many open at once; wait RateLimit-Reset seconds. Whether a rate-limited brand lookup is billed is not stated.",
      "source": "https://www.logo.dev/docs/api-reference/brands/look-up-a-brand.md",
      "checked": "2026-11-11",
      "quote": "Too many brand requests per minute, or too many open at once. Wait for\n        `RateLimit-Reset` seconds."
    },
    {
      "id": "logo-dev-brand-api.errors.500",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.500",
      "value": "500 internal means a server-side failure; retry and contact support with the Request-Id if it persists.",
      "source": "https://www.logo.dev/docs/platform/errors.md",
      "checked": "2026-11-11",
      "quote": "| `internal` | `500` | Retry. If it persists, contact support with the `Request-Id` header. |"
    },
    {
      "id": "logo-dev-brand-api.billing.window",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "billing.window",
      "value": "Logo.dev bills brand, brandmark, and logo requests once per brand domain, per route, per 24 hours. Repeats in that window are free.",
      "source": "https://www.logo.dev/docs/platform/credits.md",
      "checked": "2026-11-11",
      "quote": "Brand, brandmark, and logo requests are billed once per brand domain, per route, per 24 hours."
    },
    {
      "id": "logo-dev-brand-api.billing.perRoute",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "billing.perRoute",
      "value": "A logo request and a brand request for the same company are billed separately because they are different routes.",
      "source": "https://www.logo.dev/docs/platform/credits.md",
      "checked": "2026-11-11",
      "quote": "Yes. They are different routes, and each route is billed once per brand domain per 24 hours."
    },
    {
      "id": "logo-dev-brand-api.billing.creditsChargedHeader",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "billing.creditsChargedHeader",
      "value": "The Credits-Charged header is 1 when a request spent credits and 0 when it was free; it is not the amount. Credits-Remaining gives the balance when known.",
      "source": "https://www.logo.dev/docs/platform/conventions.md",
      "checked": "2026-11-11",
      "quote": "`1` when this request spent API credits, `0` when it was free under the [billing rules](https://www.logo.dev/docs/platform/credits.md#what-is-billed). It is not the amount."
    },
    {
      "id": "logo-dev-brand-api.billing.downloadsFree",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "billing.downloadsFree",
      "value": "Downloads from the temporary image URLs are not billed and do not count as CDN requests.",
      "source": "https://www.logo.dev/docs/platform/credits.md",
      "checked": "2026-11-11",
      "quote": "downloads from the temporary image URLs in API responses are not billed."
    },
    {
      "id": "logo-dev-brand-api.caching.storeFiles",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "caching.storeFiles",
      "value": "The download URL expires, so the docs say to store the file, not the URL, and to save each image's etag.",
      "source": "https://www.logo.dev/docs/platform/self-hosting.md",
      "checked": "2026-11-11",
      "quote": "The download URL expires, so store the file, not the URL."
    },
    {
      "id": "logo-dev-brand-api.caching.allowed",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "caching.allowed",
      "value": "On every plan you may store anything the API returns, logo files included, and serve it from your own servers or CDN.",
      "source": "https://www.logo.dev/pricing",
      "checked": "2026-11-11",
      "quote": "On every plan, you can store anything the Logo.dev API returns, logo files included, and serve it from your own servers or CDN."
    },
    {
      "id": "logo-dev-brand-api.caching.newUrlNotChange",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "caching.newUrlNotChange",
      "value": "A new url or expires_at alone does not mean the image changed; compare etag.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "A new `url` or `expires_at` alone does not mean the image changed."
    },
    {
      "id": "logo-dev-brand-api.freshness",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "freshness",
      "value": "Not published: the docs do not state how often an indexed brand is re-crawled or a maximum data age; indexed_at shows the last refresh and brand.updated webhooks report changes.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "One request replaces the crawler, parsers, and image processing you would otherwise run and re-run to catch rebrands."
    },
    {
      "id": "logo-dev-brand-api.webhooks",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "webhooks",
      "value": "Webhooks send brand.updated when a subscribed brand changes and brand.indexed when a lookup that returned 202 finishes; they are on all paid plans and not on the free plan.",
      "source": "https://www.logo.dev/docs/webhooks.md",
      "checked": "2026-11-11",
      "quote": "Webhooks are available on all paid plans."
    },
    {
      "id": "logo-dev-brand-api.webhooks.changedAttributes",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "webhooks.changedAttributes",
      "value": "brand.updated lists changed field names and paths in changed_attributes, never old or new values; fetch the brand again for current data.",
      "source": "https://www.logo.dev/docs/webhooks.md",
      "checked": "2026-11-11",
      "quote": "It holds names and paths, never old or new values."
    },
    {
      "id": "logo-dev-brand-api.webhooks.autoSubscribe",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "webhooks.autoSubscribe",
      "value": "With webhooks on, a GET /v2/brands lookup subscribes the account to the brand automatically, up to the plan's subscription cap.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "If webhooks are on for your account, a lookup also subscribes the account to the brand's [update webhooks](https://www.logo.dev/docs/webhooks.md#subscriptions)."
    },
    {
      "id": "logo-dev-brand-api.webhooks.signing",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "webhooks.signing",
      "value": "Deliveries are signed and sent through Svix.",
      "source": "https://www.logo.dev/docs/webhooks.md",
      "checked": "2026-11-11",
      "quote": "Logo.dev signs deliveries and sends them through Svix."
    },
    {
      "id": "logo-dev-brand-api.webhooks.cost",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "webhooks.cost",
      "value": "Webhook endpoints, subscriptions and events are not billed; only the follow-up request spends credits.",
      "source": "https://www.logo.dev/docs/platform/credits.md",
      "checked": "2026-11-11",
      "quote": "Webhook endpoints, subscriptions, events, account reads (`GET /v2/account`), flags (`POST /v2/flag`), and downloads from the temporary image URLs in API responses are not billed."
    },
    {
      "id": "logo-dev-brand-api.mcp.toolName",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "mcp.toolName",
      "value": "The MCP tool for this route is brand, which mirrors GET /v2/brands and GET /v2/brands/{id}. The logo and brandmark tools are separate.",
      "source": "https://www.logo.dev/docs/mcp/tools.md",
      "checked": "2026-11-11",
      "quote": "| `brand` | `GET /v2/brands` and `GET /v2/brands/{id}` | Looks a brand up by one identifier, or gets it by id |"
    },
    {
      "id": "logo-dev-brand-api.reviewBeforeUse",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "reviewBeforeUse",
      "value": "The brand-kit use case says a color the customer picks comes before any lookup result.",
      "source": "https://www.logo.dev/docs/use-cases/brand-kit-import.md",
      "checked": "2026-11-11",
      "quote": "A color that the customer picks comes before any lookup result."
    },
    {
      "id": "logo-dev-brand-api.trademarks",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "trademarks",
      "value": "The fair-use page says logos remain the property of their trademark owners and should identify a brand, not imply endorsement.",
      "source": "https://www.logo.dev/docs/platform/fair-use.md",
      "checked": "2026-11-11",
      "quote": "Logos remain the property of their trademark owners."
    },
    {
      "id": "logo-dev-brand-api.fonts",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "fonts",
      "value": "The Brand profile has no fonts, company size or industry; no font-licence guidance is published.",
      "source": "https://www.logo.dev/docs/migrations/brandfetch.md",
      "checked": "2026-11-11",
      "quote": "It does not have fonts, company size, or industry."
    },
    {
      "id": "logo-dev.freeTier.attribution",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "freeTier.attribution",
      "value": "A commercial project on the free Community plan must show a visible \"Logos provided by Logo.dev\" link; personal projects and paid plans need none.",
      "source": "https://www.logo.dev/docs/llms.txt",
      "checked": "2026-11-11",
      "quote": "a commercial project on the free Community plan must show a visible link"
    },
    {
      "id": "logo-dev.cheapestPaidPlan.monthly",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "cheapestPaidPlan.monthly",
      "value": "The page's plan data gives Startup a monthly price of $50 and a yearly price of $400 (Pro: $180 monthly, $1,800 yearly).",
      "source": "https://www.logo.dev/pricing",
      "checked": "2026-11-11",
      "quote": "\"monthlyPrice\":\"$50\",\"yearlyPrice\":\"$400\""
    },
    {
      "id": "logo-dev.includedCredits",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "includedCredits",
      "value": "Included API credits renew on the billing date and do not roll over.",
      "source": "https://www.logo.dev/docs/platform/credits.md",
      "checked": "2026-11-11",
      "quote": "Included credits renew on your billing date and don't roll over."
    },
    {
      "id": "logo-dev.buyCredits.llmsTxt",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "buyCredits.llmsTxt",
      "value": "The site's llms.txt says Pro, Enterprise and custom-contract accounts can buy more credits, without naming Startup.",
      "source": "https://www.logo.dev/llms.txt",
      "checked": "2026-11-11",
      "quote": "API credits come from a monthly grant, and Pro, Enterprise, and custom-contract accounts can buy more."
    },
    {
      "id": "logo-dev.socials.llmsTxt",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "socials.llmsTxt",
      "value": "The site's llms.txt says the Brand API returns social links across 13 platforms.",
      "source": "https://www.logo.dev/llms.txt",
      "checked": "2026-11-11",
      "quote": "social links across 13 platforms"
    },
    {
      "id": "logo-dev.rateLimits",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "rateLimits",
      "value": "API requests per minute: Community 100, Startup 100, Pro 500; concurrent API requests: 5, 5, 15; Enterprise custom.",
      "source": "https://www.logo.dev/pricing",
      "checked": "2026-11-11",
      "quote": "API requests per minute 100 100 500 Custom"
    },
    {
      "id": "logo-dev.rateLimits.shared",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "rateLimits.shared",
      "value": "Brand and image lookups share a per-minute limit and an open-request limit across all identifier types and all keys; MCP calls use the same limits.",
      "source": "https://www.logo.dev/docs/platform/rate-limits.md",
      "checked": "2026-11-11",
      "quote": "Brand and image lookups share two limits: requests per minute, and requests open at the same time."
    },
    {
      "id": "logo-dev.rateLimits.headers",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "rateLimits.headers",
      "value": "Lookup responses carry RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds until reset).",
      "source": "https://www.logo.dev/docs/platform/conventions.md",
      "checked": "2026-11-11",
      "quote": "| `RateLimit-Reset` | Brand, image, and search requests | Seconds until the window resets |"
    },
    {
      "id": "logo-dev.webhookLimits",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "webhookLimits",
      "value": "Webhook caps: Startup 1 endpoint and 5,000 subscriptions; Pro and Enterprise 10 endpoints and 50,000 subscriptions; Community none.",
      "source": "https://www.logo.dev/pricing",
      "checked": "2026-11-11",
      "quote": "Startup can follow up to 5,000 brands on 1 endpoint, and Pro up to 50,000 brands on 10 endpoints."
    },
    {
      "id": "logo-dev.mcp.address",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "mcp.address",
      "value": "The MCP server is at https://mcp.logo.dev/mcp, uses streamable HTTP and OAuth sign-in, and needs no secret key in the client.",
      "source": "https://www.logo.dev/docs/mcp/introduction.md",
      "checked": "2026-11-11",
      "quote": "The server uses the streamable HTTP transport and signs you in with OAuth."
    },
    {
      "id": "logo-dev.mcp.billing",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "mcp.billing",
      "value": "MCP tool calls spend API credits at the same rates as REST requests; tools return no credit or rate-limit headers.",
      "source": "https://www.logo.dev/docs/platform/credits.md",
      "checked": "2026-11-11",
      "quote": "MCP tools return no credit headers, so check the dashboard."
    },
    {
      "id": "logo-dev.mcp.outOfCredits",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "mcp.outOfCredits",
      "value": "An account out of credits gets an MCP tool error instead of a 402.",
      "source": "https://www.logo.dev/docs/mcp/tools.md",
      "checked": "2026-11-11",
      "quote": "An account that is out of API credits gets a tool error instead of a `402`."
    },
    {
      "id": "logo-dev.sdks",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "sdks",
      "value": "Not published: the docs index lists no SDK; code samples use curl, JavaScript fetch and Python requests, and there are shadcn/ui React components for the CDN.",
      "source": "https://www.logo.dev/docs/llms.txt",
      "checked": "2026-11-11",
      "quote": "[Add Logo.dev components with shadcn/ui](https://www.logo.dev/docs/integrations/shadcn.md)"
    },
    {
      "id": "logo-dev.dataRetention.zdr",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "dataRetention.zdr",
      "value": "Not published: no zero-data-retention or per-request retention option is documented.",
      "source": "https://www.logo.dev/docs/support/security.md",
      "checked": "2026-11-11",
      "quote": "Logo.dev serves publicly available company logos and brand metadata."
    },
    {
      "id": "logo-dev.dataRetention.periods",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "dataRetention.periods",
      "value": "API request logs (IP, lookup, timestamp) are deleted within 120 days and brand lookup records (account, team, plan, lookup, response) within 90 days.",
      "source": "https://www.logo.dev/docs/support/security.md",
      "checked": "2026-11-11",
      "quote": "| Brand lookup records (account, team, plan, lookup, response) | Deleted within 90 days |"
    },
    {
      "id": "logo-dev.soc2",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "soc2",
      "value": "Logo.dev has a SOC 2 Type I report for the Security criteria as of August 16, 2026.",
      "source": "https://www.logo.dev/docs/support/security.md",
      "checked": "2026-11-11",
      "quote": "Logo.dev has a SOC 2 Type I report for the Security criteria, as of August 16, 2026."
    },
    {
      "id": "logo-dev.v2Launch",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "v2Launch",
      "value": "API v2 (GET /v2/brands), webhooks and the MCP server shipped in September 2026; v1 routes keep working and are deprecated.",
      "source": "https://www.logo.dev/docs/changelog.md",
      "checked": "2026-11-11",
      "quote": "The v1 routes keep working and are marked deprecated."
    },
    {
      "id": "logo-dev.otherRoutes.cost",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "otherRoutes.cost",
      "value": "GET /v2/brands/logo and GET /v2/brands/brandmark return one image without the rest of the brand; a ready brand with no image of that kind returns 404 and is still billed.",
      "source": "https://www.logo.dev/docs/brand/introduction.md",
      "checked": "2026-11-11",
      "quote": "A brand that is ready but has no image of that kind returns `404`, and the request is still billed."
    },
    {
      "id": "context-dev-brand.errors.402.charged",
      "about": "context-dev-brand",
      "subject": "Context.dev Brand",
      "field": "errors.402.charged",
      "value": "When credits are insufficient, the rejected operation is not executed or charged.",
      "source": "https://docs.context.dev/account/billing",
      "checked": "2026-11-11",
      "quote": "The rejected operation is not executed or charged."
    },
    {
      "id": "context-dev.rateLimits.perMinute",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "rateLimits.perMinute",
      "value": "Plans have no per-minute cap by default; existing accounts keep their allowances until they change plans.",
      "source": "https://www.context.dev/pricing.md",
      "checked": "2026-11-11",
      "quote": "Plans have no per-minute cap by default."
    },
    {
      "id": "logo-dev-brand-api.indexed_at.change",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "indexed_at.change",
      "value": "Since November 6, 2026, indexed_at updates each time a brand's record changes.",
      "source": "https://www.logo.dev/docs/changelog.md",
      "checked": "2026-11-11",
      "quote": "now updates each time a brand's record changes."
    },
    {
      "id": "logo-dev-brand-api.errors.202.charged",
      "about": "logo-dev-brand-api",
      "subject": "Logo.dev Brand API",
      "field": "errors.202.charged",
      "value": "A 202 (still indexing) or 404 (not found) response is not billed, and neither are retries.",
      "source": "https://www.logo.dev/docs/platform/credits.md",
      "checked": "2026-11-11",
      "quote": "A brand that isn't found (`404`) or is still being indexed (`202`) is not billed, and neither are retries."
    },
    {
      "id": "logo-dev.includedCredits.amounts",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "includedCredits.amounts",
      "value": "Included monthly API credits are listed in dollars: Community $5, Startup $15, Pro $150, Enterprise Custom.",
      "source": "https://www.logo.dev/pricing",
      "checked": "2026-11-11",
      "quote": "Included monthly API credits $5 $15 $150 Custom"
    },
    {
      "id": "firecrawl-branding.endpoint.method",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "endpoint.method",
      "value": "Branding is requested on POST https://api.firecrawl.dev/v2/scrape.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "curl -s -X POST \"https://api.firecrawl.dev/v2/scrape\""
    },
    {
      "id": "firecrawl-branding.endpoint.openapi",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "endpoint.openapi",
      "value": "The OpenAPI spec defines the server https://api.firecrawl.dev/v2 and POST /scrape with operationId scrapeAndExtractFromUrl.",
      "source": "https://docs.firecrawl.dev/api-reference/endpoint/scrape",
      "checked": "2026-11-11",
      "quote": "operationId: scrapeAndExtractFromUrl"
    },
    {
      "id": "firecrawl-branding.endpoint.request",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "endpoint.request",
      "value": "To get brand data, send the page URL and include \"branding\" in the formats array, for example {\"url\": \"https://firecrawl.dev\", \"formats\": [\"branding\"]}.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "\"formats\": [\"branding\"]"
    },
    {
      "id": "firecrawl-branding.endpoint.request.url",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "endpoint.request.url",
      "value": "The url field is required and is the URL to scrape.",
      "source": "https://docs.firecrawl.dev/api-reference/endpoint/scrape",
      "checked": "2026-11-11",
      "quote": "description: The URL to scrape"
    },
    {
      "id": "firecrawl-branding.endpoint.request.formatsSchema",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "endpoint.request.formatsSchema",
      "value": "The OpenAPI Formats schema lists each format as an object with a type field (the Branding variant is {\"type\": \"branding\"}), while the feature page examples pass the plain string \"branding\".",
      "source": "https://docs.firecrawl.dev/api-reference/endpoint/scrape",
      "checked": "2026-11-11",
      "quote": "title: Branding"
    },
    {
      "id": "firecrawl-branding.endpoint.request.combine",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "endpoint.request.combine",
      "value": "The branding format can be combined with other formats such as markdown and screenshot in the same request.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "You can combine the branding format with other formats to get comprehensive page data"
    },
    {
      "id": "firecrawl-branding.description",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "description",
      "value": "The branding format extracts brand identity information from a web page, including colors, fonts, typography, spacing and UI components.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "The branding format extracts comprehensive brand identity information from a webpage, including colors, fonts, typography, spacing, UI components, and more."
    },
    {
      "id": "firecrawl-branding.response.object",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.object",
      "value": "The result is a BrandingProfile object returned at data.branding.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "The branding format returns a comprehensive `BrandingProfile` object"
    },
    {
      "id": "firecrawl-branding.response.branding",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.branding",
      "value": "data.branding is a nullable object that is present when branding is in formats.",
      "source": "https://docs.firecrawl.dev/api-reference/endpoint/scrape",
      "checked": "2026-11-11",
      "quote": "Branding information extracted from the page if `branding` is in `formats`."
    },
    {
      "id": "firecrawl-branding.response.colorScheme",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.colorScheme",
      "value": "colorScheme is the detected color scheme of the page, either \"light\" or \"dark\".",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "The detected color scheme (`\"light\"` or `\"dark\"`)"
    },
    {
      "id": "firecrawl-branding.response.logo",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.logo",
      "value": "logo is the URL of the primary logo.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "URL of the primary logo"
    },
    {
      "id": "firecrawl-branding.response.colors",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.colors",
      "value": "colors is an object of brand colors: primary, secondary, accent, background, textPrimary, textSecondary, link, success, warning and error.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Object containing brand colors"
    },
    {
      "id": "firecrawl-branding.response.colors.format",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.colors.format",
      "value": "Each color in the colors object is a hex string.",
      "source": "https://docs.firecrawl.dev/api-reference/endpoint/scrape",
      "checked": "2026-11-11",
      "quote": "Primary brand color (hex)."
    },
    {
      "id": "firecrawl-branding.response.fonts",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.fonts",
      "value": "fonts is an array of font families used on the page, each an object with a family name.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Array of font families used on the page"
    },
    {
      "id": "firecrawl-branding.response.typography",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.typography",
      "value": "typography holds fontFamilies (primary, heading, code), fontSizes (h1, h2, h3, body), fontWeights (light, regular, medium, bold) and lineHeights.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Detailed typography information"
    },
    {
      "id": "firecrawl-branding.response.spacing",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.spacing",
      "value": "spacing holds baseUnit (base spacing unit in pixels), borderRadius, padding and margins.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Spacing and layout information"
    },
    {
      "id": "firecrawl-branding.response.components",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.components",
      "value": "components holds UI component styles: buttonPrimary, buttonSecondary and input.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "UI component styles"
    },
    {
      "id": "firecrawl-branding.response.icons",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.icons",
      "value": "icons holds icon style information.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Icon style information"
    },
    {
      "id": "firecrawl-branding.response.images",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.images",
      "value": "images holds brand image URLs: logo, favicon and ogImage.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Brand images (logo, favicon, og:image)"
    },
    {
      "id": "firecrawl-branding.response.animations",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.animations",
      "value": "animations holds animation and transition settings.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Animation and transition settings"
    },
    {
      "id": "firecrawl-branding.response.layout",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.layout",
      "value": "layout holds layout configuration such as grid and header and footer heights.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Layout configuration (grid, header/footer heights)"
    },
    {
      "id": "firecrawl-branding.response.personality",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.personality",
      "value": "personality holds brand personality traits: tone, energy and target audience.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Brand personality traits (tone, energy, target audience)"
    },
    {
      "id": "firecrawl-branding.response.confidence",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.confidence",
      "value": "Not published",
      "source": "https://docs.firecrawl.dev/api-reference/endpoint/scrape",
      "checked": "2026-11-11",
      "quote": "Includes colors, fonts, typography, spacing, components, and more."
    },
    {
      "id": "firecrawl-branding.response.guidance",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "response.guidance",
      "value": "Not published",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "The `branding` object contains the following properties:"
    },
    {
      "id": "firecrawl-branding.errors.400.providerRoutedUrl",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "errors.400.providerRoutedUrl",
      "value": "For URLs that only a third-party data provider may serve (such as a LinkedIn profile), a request with the branding format is rejected with 400 THIRD_PARTY_DATA_UNSUPPORTED_OPTION.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "or an unsupported format such as `screenshot` or `branding`"
    },
    {
      "id": "firecrawl-branding.mcp.brandingFormat",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "mcp.brandingFormat",
      "value": "Not published",
      "source": "https://docs.firecrawl.dev/mcp-server/tools",
      "checked": "2026-11-11",
      "quote": "Your MCP client receives the exact input schema for every available tool when it connects."
    },
    {
      "id": "firecrawl-branding.sdk.python",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "sdk.python",
      "value": "In the Python SDK, call firecrawl.scrape(url=..., formats=['branding']) and read result['branding'].",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "formats=['branding']"
    },
    {
      "id": "firecrawl-branding.sdk.node",
      "about": "firecrawl-branding",
      "subject": "Firecrawl branding",
      "field": "sdk.node",
      "value": "In the Node SDK, call firecrawl.scrape(url, { formats: ['branding'] }) and read result.branding.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "console.log(result.branding);"
    },
    {
      "id": "firecrawl.baseUrl",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "baseUrl",
      "value": "All Firecrawl API requests use the base URL https://api.firecrawl.dev.",
      "source": "https://docs.firecrawl.dev/api-reference/v2-introduction",
      "checked": "2026-11-11",
      "quote": "All requests use the following base URL:"
    },
    {
      "id": "firecrawl.auth",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "auth",
      "value": "Send an API key on every request as Authorization: Bearer fc-YOUR-API-KEY.",
      "source": "https://docs.firecrawl.dev/authentication",
      "checked": "2026-11-11",
      "quote": "send it on every request as `Authorization: Bearer fc-YOUR-API-KEY`"
    },
    {
      "id": "firecrawl.auth.keyless",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "auth.keyless",
      "value": "/v2/scrape works without an API key if the Authorization header is left out entirely.",
      "source": "https://docs.firecrawl.dev/authentication",
      "checked": "2026-11-11",
      "quote": "`/v2/scrape`, `/v2/search` and `/v2/parse`"
    },
    {
      "id": "firecrawl.auth.keylessLimits",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "auth.keylessLimits",
      "value": "Not published",
      "source": "https://docs.firecrawl.dev/authentication",
      "checked": "2026-11-11",
      "quote": "Keyless usage is free and limited per IP address. The limits vary with demand"
    },
    {
      "id": "firecrawl.auth.emptyBearer",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "auth.emptyBearer",
      "value": "A header with an empty token is rejected with 401 Unauthorized: Token missing.",
      "source": "https://docs.firecrawl.dev/authentication",
      "checked": "2026-11-11",
      "quote": "is rejected with `401 Unauthorized: Token missing`"
    },
    {
      "id": "firecrawl.auth.oauthForApps",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "auth.oauthForApps",
      "value": "For apps where each user connects their own Firecrawl account, OAuth gives an fco_ access token used as a Bearer token on the REST API, plus an fcr_ refresh token.",
      "source": "https://docs.firecrawl.dev/authentication",
      "checked": "2026-11-11",
      "quote": "Your app gets an `fco_` access token that works on the REST API in place of an API key, plus an `fcr_` refresh token."
    },
    {
      "id": "firecrawl.response.envelope",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "response.envelope",
      "value": "The REST response is a JSON object with success (boolean) and data (the scraped content); the SDKs return the data object directly.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "SDKs will return the data object directly. cURL will return the payload exactly as shown below."
    },
    {
      "id": "firecrawl.response.httpStatus",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "response.httpStatus",
      "value": "A processed request returns HTTP 200 with success: true even when the target page returned a non-2xx code; the page's own status is in data.metadata.statusCode.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "An accepted and processed request returns HTTP `200` with `success: true`, even if the target page underneath returned a non-2xx code."
    },
    {
      "id": "firecrawl.errors.shape",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.shape",
      "value": "Every non-2xx response is JSON with success: false, a string error, and on some errors details or code.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "All non-2xx responses return JSON with a top-level `success: false` and a string `error`."
    },
    {
      "id": "firecrawl.errors.400",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.400",
      "value": "400 Bad Request means the request body failed schema validation; not retryable.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Request body failed schema validation (missing or invalid fields)."
    },
    {
      "id": "firecrawl.errors.400.invalidUrl",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.400.invalidUrl",
      "value": "400 Invalid URL means the url field is missing, malformed or uses an unsupported scheme.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "The `url` field is missing, malformed, or uses an unsupported scheme."
    },
    {
      "id": "firecrawl.errors.401",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.401",
      "value": "401 Unauthorized: Invalid token means the API key is missing, malformed or revoked.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "API key is missing, malformed, or revoked."
    },
    {
      "id": "firecrawl.errors.402",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.402",
      "value": "402 Payment Required: Insufficient credits means plan credits are exhausted or billing is not configured.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Plan credits are exhausted or billing is not configured."
    },
    {
      "id": "firecrawl.errors.403",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.403",
      "value": "403 Forbidden means the key lacks permission for the endpoint or feature.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Key lacks permission for this endpoint or feature."
    },
    {
      "id": "firecrawl.errors.404",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.404",
      "value": "404 Not Found means the job ID, resource or endpoint path does not exist.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "The job ID, resource, or endpoint path does not exist."
    },
    {
      "id": "firecrawl.errors.408",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.408",
      "value": "408 Request Timeout means the page took longer than the request timeout to load; retryable with backoff.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "The page took longer than the request `timeout` to load."
    },
    {
      "id": "firecrawl.errors.429",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.429",
      "value": "429 Rate limit exceeded means too many requests for the plan's per-minute limit; retry after the Retry-After header's seconds.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Back off and retry after `Retry-After` seconds."
    },
    {
      "id": "firecrawl.errors.429.concurrency",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.429.concurrency",
      "value": "429 Concurrency limit reached means the plan's concurrent browser limit was reached.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Concurrent browser limit for your plan reached."
    },
    {
      "id": "firecrawl.errors.500",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.500",
      "value": "500 Internal Server Error is an unhandled server-side failure; retry with exponential backoff.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Unhandled server-side failure."
    },
    {
      "id": "firecrawl.errors.502",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.502",
      "value": "502 Bad Gateway means an upstream proxy or worker returned an invalid response; retry with backoff.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Upstream proxy or worker returned an invalid response."
    },
    {
      "id": "firecrawl.errors.503",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.503",
      "value": "503 Service Unavailable means the service is temporarily unable to handle the request; retry with backoff.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Service temporarily unable to handle the request."
    },
    {
      "id": "firecrawl.errors.504",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "errors.504",
      "value": "504 Gateway Timeout means the request exceeded the gateway's timeout.",
      "source": "https://docs.firecrawl.dev/api-reference/errors",
      "checked": "2026-11-11",
      "quote": "Request exceeded the gateway's timeout (typically long crawls)."
    },
    {
      "id": "firecrawl.caching.maxAge",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "caching.maxAge",
      "value": "Scrapes are served from cache by default when a copy younger than maxAge exists; the default maxAge is 172800000 ms (2 days).",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "`maxAge = 172800000` ms (2 days)"
    },
    {
      "id": "firecrawl.caching.fresh",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "caching.fresh",
      "value": "Setting maxAge to 0 bypasses the cache and always scrapes the page fresh.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "**Always fetch fresh**: Set `maxAge` to `0`."
    },
    {
      "id": "firecrawl.caching.storeInCache",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "caching.storeInCache",
      "value": "Setting storeInCache to false stops Firecrawl from caching the result of that request.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "Set `storeInCache` to `false` if you don’t want Firecrawl to cache/store results for this request."
    },
    {
      "id": "firecrawl.caching.minAge",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "caching.minAge",
      "value": "Setting minAge makes a cache-only lookup; if no cached data is found the API returns 404 with code SCRAPE_NO_CACHED_DATA.",
      "source": "https://docs.firecrawl.dev/features/scrape",
      "checked": "2026-11-11",
      "quote": "a `404` with error code `SCRAPE_NO_CACHED_DATA` is returned"
    },
    {
      "id": "firecrawl.plans.free.concurrency",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "plans.free.concurrency",
      "value": "The free plan has 2 concurrent browsers.",
      "source": "https://docs.firecrawl.dev/billing",
      "checked": "2026-11-11",
      "quote": "2 concurrent browsers"
    },
    {
      "id": "firecrawl.plans.free.rateLimit",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "plans.free.rateLimit",
      "value": "The free plan allows 10 requests per minute on /scrape.",
      "source": "https://docs.firecrawl.dev/billing",
      "checked": "2026-11-11",
      "quote": "**Rate limits of 10 requests per minute** on `/scrape`"
    },
    {
      "id": "firecrawl.plans.hobby.concurrency",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "plans.hobby.concurrency",
      "value": "The Hobby plan has 5 concurrent browsers.",
      "source": "https://docs.firecrawl.dev/billing",
      "checked": "2026-11-11",
      "quote": "| **Hobby** | 5,000 | 5 |"
    },
    {
      "id": "firecrawl.plans.pricesEffective",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "plans.pricesEffective",
      "value": "The pricing page states its prices, in USD, are effective September 4, 2026.",
      "source": "https://www.firecrawl.dev/pricing",
      "checked": "2026-11-11",
      "quote": "September 4, 2026"
    },
    {
      "id": "firecrawl.rateLimits.scrape",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "rateLimits.scrape",
      "value": "Per-minute /scrape limits are Free 10, Hobby 100, Standard 500, Growth 5000 and Scale 10000, applied per team across all its API keys.",
      "source": "https://docs.firecrawl.dev/rate-limits",
      "checked": "2026-11-11",
      "quote": "Rate limits are applied per team, so all API keys on the same team share the same rate limit counters."
    },
    {
      "id": "firecrawl.rateLimits.exceeded",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "rateLimits.exceeded",
      "value": "Exceeding either the rate limit or the concurrency limit returns 429.",
      "source": "https://docs.firecrawl.dev/rate-limits",
      "checked": "2026-11-11",
      "quote": "exceeding either returns a `429` response"
    },
    {
      "id": "firecrawl.rateLimits.batchScrape.ratePage",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "rateLimits.batchScrape.ratePage",
      "value": "The rate limits page says batch scrape endpoints share the /crawl rate limits.",
      "source": "https://docs.firecrawl.dev/rate-limits",
      "checked": "2026-11-11",
      "quote": "The batch scrape endpoints share limits with the corresponding /crawl rate limits."
    },
    {
      "id": "firecrawl.rateLimits.batchScrape.billingPage",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "rateLimits.batchScrape.billingPage",
      "value": "The billing page says batch scrape shares the scrape limit, which contradicts the rate limits page and the pricing page.",
      "source": "https://docs.firecrawl.dev/billing",
      "checked": "2026-11-11",
      "quote": "Batch scrape shares the scrape limit and extract shares the agent limit."
    },
    {
      "id": "firecrawl.mcp.endpoint",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "mcp.endpoint",
      "value": "The hosted MCP server is https://mcp.firecrawl.dev/v2/mcp, used keyless or with an API key as a Bearer header.",
      "source": "https://docs.firecrawl.dev/mcp-server/keyless",
      "checked": "2026-11-11",
      "quote": "Keyless server URL (Streamable HTTP, no credential): `https://mcp.firecrawl.dev/v2/mcp`"
    },
    {
      "id": "firecrawl.mcp.oauthEndpoint",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "mcp.oauthEndpoint",
      "value": "MCP clients that sign in through a browser use https://mcp.firecrawl.dev/v2/mcp-oauth.",
      "source": "https://docs.firecrawl.dev/authentication",
      "checked": "2026-11-11",
      "quote": "Point your MCP client at `https://mcp.firecrawl.dev/v2/mcp-oauth`."
    },
    {
      "id": "firecrawl.mcp.tools.scrape",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "mcp.tools.scrape",
      "value": "The MCP tool for reading one page is firecrawl_scrape.",
      "source": "https://docs.firecrawl.dev/mcp-server/tools",
      "checked": "2026-11-11",
      "quote": "| Read one page | `firecrawl_scrape` |"
    },
    {
      "id": "firecrawl.mcp.tools.keyless",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "mcp.tools.keyless",
      "value": "A keyless MCP connection exposes only firecrawl_search, firecrawl_scrape and firecrawl_parse.",
      "source": "https://docs.firecrawl.dev/mcp-server/keyless",
      "checked": "2026-11-11",
      "quote": "A keyless connection shows `firecrawl_search`, `firecrawl_scrape`, and `firecrawl_parse`"
    },
    {
      "id": "firecrawl.sdks",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "sdks",
      "value": "Official SDKs are Python, Node, Go, Java, Ruby, Rust, .NET, PHP and Elixir, plus a CLI.",
      "source": "https://docs.firecrawl.dev/sdks/overview",
      "checked": "2026-11-11",
      "quote": "Firecrawl SDKs are wrappers around the Firecrawl API"
    },
    {
      "id": "rainbrand.baseUrl",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "baseUrl",
      "value": "The REST API base URL is https://www.rainbrand.com/api/v1.",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"servers\":[{\"url\":\"https://www.rainbrand.com/api/v1\"}]"
    },
    {
      "id": "rainbrand.auth.apiKey",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "auth.apiKey",
      "value": "Send the API key in the x-api-key header.",
      "source": "https://docs.rainbrand.com/api/authentication",
      "checked": "2026-11-11",
      "quote": "Keys start with `bloom_sk_`."
    },
    {
      "id": "rainbrand.auth.bearer",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "auth.bearer",
      "value": "The same API key can be sent as Authorization: Bearer; if both headers are present, x-api-key wins.",
      "source": "https://docs.rainbrand.com/api/authentication",
      "checked": "2026-11-11",
      "quote": "If both headers are present, `x-api-key` takes precedence."
    },
    {
      "id": "rainbrand.auth.oauth",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "auth.oauth",
      "value": "Use OAuth when people connect their own Rainbrand accounts to your product, sending the access token as Authorization: Bearer.",
      "source": "https://docs.rainbrand.com/api/authentication",
      "checked": "2026-11-11",
      "quote": "Use OAuth when people connect their Rainbrand accounts to your product."
    },
    {
      "id": "rainbrand.auth.oauthFlow",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "auth.oauthFlow",
      "value": "OAuth uses Authorization Code with PKCE S256, and public clients register without a client secret.",
      "source": "https://docs.rainbrand.com/api/authentication",
      "checked": "2026-11-11",
      "quote": "Use Authorization Code with PKCE S256. Public clients register without a client secret"
    },
    {
      "id": "rainbrand.auth.oauthScopes",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "auth.oauthScopes",
      "value": "The OAuth scopes are openid and offline_access.",
      "source": "https://docs.rainbrand.com/api/authentication",
      "checked": "2026-11-11",
      "quote": "| `offline_access` | Request a refresh token. |"
    },
    {
      "id": "rainbrand.auth.oauthTokenUrl",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "auth.oauthTokenUrl",
      "value": "The OAuth token URL is https://www.rainbrand.com/api/auth/oauth2/token and the authorization URL is https://www.rainbrand.com/api/auth/oauth2/authorize.",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"tokenUrl\":\"https://www.rainbrand.com/api/auth/oauth2/token\""
    },
    {
      "id": "rainbrand.errors.shape",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "errors.shape",
      "value": "Failed requests return an error object with code, status, message and optional data.",
      "source": "https://docs.rainbrand.com/api/errors",
      "checked": "2026-11-11",
      "quote": "Failed API requests return an `error` object."
    },
    {
      "id": "rainbrand.errors.useCode",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "errors.useCode",
      "value": "Clients should branch on error.code, not on the HTTP status alone.",
      "source": "https://docs.rainbrand.com/api/errors",
      "checked": "2026-11-11",
      "quote": "Use `code` to decide how your application responds."
    },
    {
      "id": "rainbrand.errors.403.featureNotAvailable",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "errors.403.featureNotAvailable",
      "value": "403 FEATURE_NOT_AVAILABLE means a feature is not enabled for the integration; data.feature names it (for example briefs or brand_exports).",
      "source": "https://docs.rainbrand.com/api/errors",
      "checked": "2026-11-11",
      "quote": "The API returns `403 FEATURE_NOT_AVAILABLE` when a feature isn't enabled for"
    },
    {
      "id": "rainbrand.rateLimits.apiKey",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "rateLimits.apiKey",
      "value": "Each API key has a default limit of 120 accepted requests.",
      "source": "https://docs.rainbrand.com/api/usage-limits",
      "checked": "2026-11-11",
      "quote": "Each API key has a default limit of **120 accepted requests**."
    },
    {
      "id": "rainbrand.rateLimits.reset",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "rateLimits.reset",
      "value": "The API-key request count resets 60 seconds after the last accepted request.",
      "source": "https://docs.rainbrand.com/api/usage-limits",
      "checked": "2026-11-11",
      "quote": "The count resets **60 seconds after the last accepted request**."
    },
    {
      "id": "rainbrand.rateLimits.oauth",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "rateLimits.oauth",
      "value": "REST and MCP requests with the same key share the limit; OAuth tokens are not subject to it.",
      "source": "https://docs.rainbrand.com/api/usage-limits",
      "checked": "2026-11-11",
      "quote": "OAuth tokens are not subject to this API-key limit."
    },
    {
      "id": "rainbrand.rateLimits.429",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "rateLimits.429",
      "value": "At the limit the API returns 429 with Retry-After (wait 60 seconds if missing); REST uses code TOO_MANY_REQUESTS and MCP uses rate_limit_exceeded.",
      "source": "https://docs.rainbrand.com/api/usage-limits",
      "checked": "2026-11-11",
      "quote": "REST uses code `TOO_MANY_REQUESTS`; MCP uses `rate_limit_exceeded`."
    },
    {
      "id": "rainbrand.rateLimits.policyHeader",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "rateLimits.policyHeader",
      "value": "REST responses to API-key requests carry the header RateLimit-Policy: \"api-key\";q=120;w=60.",
      "source": "https://docs.rainbrand.com/api/usage-limits",
      "checked": "2026-11-11",
      "quote": "RateLimit-Policy: \"api-key\";q=120;w=60"
    },
    {
      "id": "rainbrand.rateLimits.onboarding",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "rateLimits.onboarding",
      "value": "Each personal account or team can start 5 new brand onboardings in a rolling 60-second window.",
      "source": "https://docs.rainbrand.com/api/usage-limits",
      "checked": "2026-11-11",
      "quote": "**5 new brand onboardings in a rolling 60-second window**"
    },
    {
      "id": "rainbrand.plans.cheapestPaid",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "plans.cheapestPaid",
      "value": "The cheapest paid plan is Plus at $20 a month, billed monthly.",
      "source": "https://www.rainbrand.com/pricing.md",
      "checked": "2026-11-11",
      "quote": "Plus from $20/month."
    },
    {
      "id": "rainbrand.plans.apiMcp",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "plans.apiMcp",
      "value": "API and MCP access are included in every plan.",
      "source": "https://www.rainbrand.com/pricing.md",
      "checked": "2026-11-11",
      "quote": "API and MCP included in every plan."
    },
    {
      "id": "rainbrand.mcp.endpoint",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "mcp.endpoint",
      "value": "The MCP server address is https://mcp.rainbrand.com/mcp.",
      "source": "https://docs.rainbrand.com/mcp/getting-started",
      "checked": "2026-11-11",
      "quote": "Or add the server URL directly: `https://mcp.rainbrand.com/mcp`."
    },
    {
      "id": "rainbrand.mcp.auth",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "mcp.auth",
      "value": "MCP clients connect by signing in to Rainbrand from the agent.",
      "source": "https://docs.rainbrand.com/mcp/getting-started",
      "checked": "2026-11-11",
      "quote": "Follow the setup for each of your agents and sign in to Rainbrand."
    },
    {
      "id": "rainbrand.mcp.auth.apiKey",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "mcp.auth.apiKey",
      "value": "The MCP troubleshooting page also refers to API-key connections.",
      "source": "https://docs.rainbrand.com/mcp/troubleshooting",
      "checked": "2026-11-11",
      "quote": "For API-key connections, check that the key is complete and has not been revoked."
    },
    {
      "id": "rainbrand.mcp.tools.listBrands",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "mcp.tools.listBrands",
      "value": "The MCP tool list_brands lists accessible brands and their teams.",
      "source": "https://docs.rainbrand.com/mcp/tools",
      "checked": "2026-11-11",
      "quote": "| `list_brands` | List accessible brands and their teams. |"
    },
    {
      "id": "rainbrand.versioning.api",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "versioning.api",
      "value": "REST breaking changes are handled per endpoint, with Deprecation and Sunset headers announcing them.",
      "source": "https://docs.rainbrand.com/api/versioning",
      "checked": "2026-11-11",
      "quote": "Breaking changes are handled per endpoint."
    },
    {
      "id": "rainbrand-brief.definition",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "definition",
      "value": "A Brief is the subset of a brand's guidance and assets relevant to a specific task.",
      "source": "https://docs.rainbrand.com/guides/request-brief",
      "checked": "2026-11-11",
      "quote": "A Brief is the subset of your brand's guidance and assets relevant to a specific task."
    },
    {
      "id": "rainbrand-brief.endpoint.request",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "endpoint.request",
      "value": "Request a Brief is POST /briefs (operationId briefs.create).",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"operationId\":\"briefs.create\""
    },
    {
      "id": "rainbrand-brief.endpoint.get",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "endpoint.get",
      "value": "Get a Brief is GET /briefs/{id} (operationId briefs.get).",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"operationId\":\"briefs.get\""
    },
    {
      "id": "rainbrand-brief.request.brandSessionId",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "request.brandSessionId",
      "value": "brandSessionId (required, UUID) is the brand to prepare the Brief from; the quickstart passes the brand's data.id here.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "description: Brand to prepare the brief from."
    },
    {
      "id": "rainbrand-brief.request.task",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "request.task",
      "value": "task (required, 1 to 4000 characters) describes in plain language what you are about to make.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "What you are about to make, in plain language."
    },
    {
      "id": "rainbrand-brief.request.idempotencyKey",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "request.idempotencyKey",
      "value": "An optional idempotency-key header (1 to 255 characters) makes retries safe when reused with the same body.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "Optional key for safely retrying this request. Reuse it only with the same body."
    },
    {
      "id": "rainbrand-brief.request.versionPinning",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "request.versionPinning",
      "value": "Not published",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "additionalProperties: false"
    },
    {
      "id": "rainbrand-brief.response.create",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.create",
      "value": "Request a Brief returns HTTP 202 with data.id (the Brief ID) and data.status.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "'202': description: OK"
    },
    {
      "id": "rainbrand-brief.response.id",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.id",
      "value": "data.id is the Brief ID.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "description: Brief ID."
    },
    {
      "id": "rainbrand-brief.response.status",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.status",
      "value": "data.status is one of pending, processing, completed or failed.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "description: Current status of the brief."
    },
    {
      "id": "rainbrand-brief.response.skillId",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.skillId",
      "value": "data.skillId is the Brand Skill version used to prepare the Brief, or null if that version was deleted.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Brand Skill version used to prepare the brief, or null if that version was deleted."
    },
    {
      "id": "rainbrand-brief.response.createdAt",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.createdAt",
      "value": "data.createdAt is when the Brief was requested.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "description: When the brief was requested."
    },
    {
      "id": "rainbrand-brief.response.completedAt",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.completedAt",
      "value": "data.completedAt is when the Brief completed.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "description: When the brief completed."
    },
    {
      "id": "rainbrand-brief.response.guidance",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.guidance",
      "value": "data.guidance is the brand guidance for the task in Markdown, available when completed.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Brand guidance for the task, in Markdown. Available when completed."
    },
    {
      "id": "rainbrand-brief.response.assets",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.assets",
      "value": "data.assets lists the files selected for the task, available when completed.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "description: Files selected for the task. Available when completed."
    },
    {
      "id": "rainbrand-brief.response.assets.kind",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.assets.kind",
      "value": "Each asset's kind is logo, image, font or font_render; a font render is an image preview of a font.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Asset type. A font render is an image preview of a font."
    },
    {
      "id": "rainbrand-brief.response.assets.mediaType",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.assets.mediaType",
      "value": "Each asset's mediaType is the MIME type of the image or font file, such as image/png, image/svg+xml or font/woff2.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "description: MIME type of the image or font file."
    },
    {
      "id": "rainbrand-brief.response.assets.url",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.assets.url",
      "value": "Each asset's url is a stable Rainbrand URL with no scheduled expiry.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Stable Rainbrand asset URL with no scheduled expiry."
    },
    {
      "id": "rainbrand-brief.response.assets.urlAccess",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.assets.urlAccess",
      "value": "Anyone with an asset URL can open the asset without signing in.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Anyone with this link can access the asset without signing in."
    },
    {
      "id": "rainbrand-brief.response.assets.mediaId",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.assets.mediaId",
      "value": "mediaId is present when the asset is a Brand Library file and absent for files inside the Brand Skill, such as fonts.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Media ID when the asset is a Library file."
    },
    {
      "id": "rainbrand-brief.response.error",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.error",
      "value": "A failed Brief has data.error with code, message and retryable, plus data.failedAt.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Whether you can retry by creating a new brief with a new idempotency key."
    },
    {
      "id": "rainbrand-brief.response.guideExample.fields",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.guideExample.fields",
      "value": "The Request a Brief guide's example response uses top-level snake_case fields (brief_id, status, skill_id, created_at, completed_at, guidance, assets, message_for_assistant), unlike the REST spec's data-wrapped camelCase fields.",
      "source": "https://docs.rainbrand.com/guides/request-brief",
      "checked": "2026-11-11",
      "quote": "\"brief_id\": \"38483b58-5b8c-47cf-b582-cee4cabc240f\""
    },
    {
      "id": "rainbrand-brief.response.guideExample.assetFields",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.guideExample.assetFields",
      "value": "In the guide's example, each asset has kind, media_type, url and inline.",
      "source": "https://docs.rainbrand.com/guides/request-brief",
      "checked": "2026-11-11",
      "quote": "\"media_type\": \"image/svg+xml\""
    },
    {
      "id": "rainbrand-brief.response.guideExample.inline",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.guideExample.inline",
      "value": "In the guide's example, inline has status included, or status omitted with reason not_supported (used for WOFF2 fonts).",
      "source": "https://docs.rainbrand.com/guides/request-brief",
      "checked": "2026-11-11",
      "quote": "\"reason\": \"not_supported\""
    },
    {
      "id": "rainbrand-brief.response.inline.definition",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.inline.definition",
      "value": "Not published",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "- kind - mediaType - url additionalProperties: false"
    },
    {
      "id": "rainbrand-brief.response.guideExample.messageForAssistant",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "response.guideExample.messageForAssistant",
      "value": "The guide's example ends with message_for_assistant telling the agent to call create_brief again if the guidance and assets do not match the request.",
      "source": "https://docs.rainbrand.com/guides/request-brief",
      "checked": "2026-11-11",
      "quote": "If they do not match the request, call create_brief again with a corrected task."
    },
    {
      "id": "rainbrand-brief.wait",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "wait",
      "value": "GET /briefs/{id}?wait=true holds the connection until the Brief reaches a terminal status.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Hold the connection until the resource reaches a terminal status"
    },
    {
      "id": "rainbrand-brief.wait.timeout",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "wait.timeout",
      "value": "The timeout query parameter sets the maximum wait in seconds: default 120, maximum 295.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "Max seconds to wait (default 120, max 295)"
    },
    {
      "id": "rainbrand-brief.poll",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "poll",
      "value": "Repeat the read while status is pending or processing; when completed, guidance and assets are present.",
      "source": "https://docs.rainbrand.com/api/quickstart",
      "checked": "2026-11-11",
      "quote": "Repeat the read while `data.status` is `pending` or `processing`."
    },
    {
      "id": "rainbrand-brief.duration",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "duration",
      "value": "Not published",
      "source": "https://docs.rainbrand.com/guides/request-brief",
      "checked": "2026-11-11",
      "quote": "Wait for the Brief, then show me its guidance and selected assets."
    },
    {
      "id": "rainbrand-brief.duration.guideExample",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "duration.guideExample",
      "value": "The guide's example Brief has created_at 2026-10-21T23:47:49.946Z and completed_at 2026-10-21T23:49:29.604Z.",
      "source": "https://docs.rainbrand.com/guides/request-brief",
      "checked": "2026-11-11",
      "quote": "\"completed_at\": \"2026-10-21T23:49:29.604Z\""
    },
    {
      "id": "rainbrand-brief.duration.specExample",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "duration.specExample",
      "value": "The spec's example Brief has createdAt 2026-10-24T09:00:00.000Z and completedAt 2026-10-24T09:00:30.000Z.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "completedAt: '2026-10-24T09:00:30.000Z'"
    },
    {
      "id": "rainbrand-brief.mcp.progress",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "mcp.progress",
      "value": "Over MCP, check a Brief's progress with get_brief; a wait can time out while work continues, and starting again can create a duplicate.",
      "source": "https://docs.rainbrand.com/mcp/troubleshooting",
      "checked": "2026-11-11",
      "quote": "A wait can time out while work continues; starting the task again can create a duplicate."
    },
    {
      "id": "rainbrand-brief.versions.afterEdit",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "versions.afterEdit",
      "value": "After a brand edit is applied, request a new Brief so agents use the revised guidance.",
      "source": "https://docs.rainbrand.com/guides/edit-brand",
      "checked": "2026-11-11",
      "quote": "After applying the update, request a new Brief so your agents use the revised guidance."
    },
    {
      "id": "rainbrand-brief.limits.activeBriefs",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "limits.activeBriefs",
      "value": "Too many running Briefs returns 429 ACTIVE_BRIEF_LIMIT_REACHED.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: Too many briefs are already running"
    },
    {
      "id": "rainbrand-brief.limits.activeBriefs.number",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "limits.activeBriefs.number",
      "value": "Not published",
      "source": "https://docs.rainbrand.com/api/usage-limits",
      "checked": "2026-11-11",
      "quote": "Limits apply at different levels: API-key requests, brand onboarding, and unfinished AI Gateway generations."
    },
    {
      "id": "rainbrand-brief.errors.401",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.401",
      "value": "401 UNAUTHORIZED: invalid or missing API credentials.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: Invalid or missing API credentials"
    },
    {
      "id": "rainbrand-brief.errors.402.insufficientCredits",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.402.insufficientCredits",
      "value": "402 INSUFFICIENT_CREDITS: not enough credits to create a Brief; data carries action_url, credits_required, balance and pricing_version.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: Not enough credits to create a brief"
    },
    {
      "id": "rainbrand-brief.errors.402.paymentRequired",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.402.paymentRequired",
      "value": "402 PAYMENT_REQUIRED: the subscription is paused; data.action_url links to completing payment.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "Subscription paused — complete payment to resume"
    },
    {
      "id": "rainbrand-brief.errors.403.forbidden",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.403.forbidden",
      "value": "403 FORBIDDEN: plan upgrade required.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: Plan upgrade required"
    },
    {
      "id": "rainbrand-brief.errors.403.accountBanned",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.403.accountBanned",
      "value": "403 ACCOUNT_BANNED: the account has been suspended.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: This account has been suspended."
    },
    {
      "id": "rainbrand-brief.errors.403.featureNotAvailable",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.403.featureNotAvailable",
      "value": "403 FEATURE_NOT_AVAILABLE: the operation is not available for this integration.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: This operation isn't available for this integration."
    },
    {
      "id": "rainbrand-brief.errors.404.brand",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.404.brand",
      "value": "404 BRAND_NOT_FOUND on Request a Brief: brand not found.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "const: BRAND_NOT_FOUND"
    },
    {
      "id": "rainbrand-brief.errors.404.brief",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.404.brief",
      "value": "404 BRIEF_NOT_FOUND on Get a Brief: Brief not found.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/get-a-brief",
      "checked": "2026-11-11",
      "quote": "default: Brief not found"
    },
    {
      "id": "rainbrand-brief.errors.409.brandSkillUnavailable",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.409.brandSkillUnavailable",
      "value": "409 BRAND_SKILL_UNAVAILABLE: the brand is not ready for Briefs yet.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: This brand is not ready for briefs yet"
    },
    {
      "id": "rainbrand-brief.errors.409.idempotencyConflict",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.409.idempotencyConflict",
      "value": "409 IDEMPOTENCY_CONFLICT: the idempotency key was already used with a different request.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "const: IDEMPOTENCY_CONFLICT"
    },
    {
      "id": "rainbrand-brief.errors.429",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.429",
      "value": "429 TOO_MANY_REQUESTS: rate limit exceeded, with a Retry-After header in seconds when it can be calculated.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "Seconds until the applicable request or operation limit resets."
    },
    {
      "id": "rainbrand-brief.errors.500",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "errors.500",
      "value": "500 INTERNAL_ERROR: failed to create the Brief.",
      "source": "https://docs.rainbrand.com/api-reference/briefs/request-a-brief",
      "checked": "2026-11-11",
      "quote": "default: Failed to create brief"
    },
    {
      "id": "rainbrand-brief.mcp.tools.createBrief",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "mcp.tools.createBrief",
      "value": "The MCP tool create_brief prepares brand guidance and assets for a task.",
      "source": "https://docs.rainbrand.com/mcp/tools",
      "checked": "2026-11-11",
      "quote": "| `create_brief` | Prepare brand guidance and assets for a task. |"
    },
    {
      "id": "rainbrand-brief.mcp.tools.getBrief",
      "about": "rainbrand-brief",
      "subject": "Rainbrand Brief",
      "field": "mcp.tools.getBrief",
      "value": "The MCP tool get_brief reads a Brief's status, guidance and assets.",
      "source": "https://docs.rainbrand.com/mcp/tools",
      "checked": "2026-11-11",
      "quote": "| `get_brief` | Read a Brief's status, guidance, and assets. |"
    },
    {
      "id": "rainbrand-brand-skill.definition",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "definition",
      "value": "A Brand Skill is a complete, versioned snapshot of a brand's identity, guidance and asset references.",
      "source": "https://docs.rainbrand.com/guides/use-brand-skill",
      "checked": "2026-11-11",
      "quote": "A Brand Skill is a complete, versioned snapshot of a brand's identity, guidance, and asset references."
    },
    {
      "id": "rainbrand-brand-skill.contents",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "contents",
      "value": "A Brand Skill has a Profile (colors, logos, typography), Guidance (Markdown files on how to use the brand) and Assets (references to the brand's files).",
      "source": "https://docs.rainbrand.com/guides/use-brand-skill",
      "checked": "2026-11-11",
      "quote": "Markdown files describing how to use the brand."
    },
    {
      "id": "rainbrand-brand-skill.notNeededForBriefs",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "notNeededForBriefs",
      "value": "Briefs and Reviews already use the brand's guidance and assets, so a Brand Skill does not need to be retrieved or exported first.",
      "source": "https://docs.rainbrand.com/guides/use-brand-skill",
      "checked": "2026-11-11",
      "quote": "you do not need to retrieve or export a Brand Skill first."
    },
    {
      "id": "rainbrand-brand-skill.endpoint.inspect",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "endpoint.inspect",
      "value": "Inspect a Brand Skill is GET /brands/{id}/skill (operationId brands.inspect), where id is the Brand ID.",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"operationId\":\"brands.inspect\""
    },
    {
      "id": "rainbrand-brand-skill.endpoint.inspect.scope",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "endpoint.inspect.scope",
      "value": "Inspect returns the complete active Brand Skill as an immutable snapshot of the profile, guidance and assets.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Retrieve the complete active Brand Skill as an immutable snapshot of the brand's profile, guidance, and assets."
    },
    {
      "id": "rainbrand-brand-skill.endpoint.getBrand",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "endpoint.getBrand",
      "value": "Get a brand is GET /brands/{id} (operationId brands.get).",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"operationId\":\"brands.get\""
    },
    {
      "id": "rainbrand-brand-skill.endpoint.getBrand.scope",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "endpoint.getBrand.scope",
      "value": "Get a brand reads the brand's current profile and active Brand Skill version, or its progress while it is being prepared.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand",
      "checked": "2026-11-11",
      "quote": "Read the brand's current profile and active Brand Skill version, or check progress while it is being prepared."
    },
    {
      "id": "rainbrand-brand-skill.endpoint.export",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "endpoint.export",
      "value": "Export a Brand Skill is POST /brands/{id}/exports (operationId brands.createExport) and prepares a ZIP of the active Brand Skill.",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"operationId\":\"brands.createExport\""
    },
    {
      "id": "rainbrand-brand-skill.endpoint.getExport",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "endpoint.getExport",
      "value": "Get a Brand Skill export is GET /brands/{id}/exports/{skillId} (operationId brands.getExport).",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "\"operationId\":\"brands.getExport\""
    },
    {
      "id": "rainbrand-brand-skill.response.schemaVersion",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.schemaVersion",
      "value": "schemaVersion is the response schema version, currently the constant 7.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "const: 7 description: Response schema version"
    },
    {
      "id": "rainbrand-brand-skill.response.id",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.id",
      "value": "id is the Brand ID.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "description: Brand ID"
    },
    {
      "id": "rainbrand-brand-skill.response.skillId",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.skillId",
      "value": "skillId is the canonical identity of this immutable Brand Skill, meant for caching and versioning.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Canonical identity of this complete immutable Brand Skill; use it for caching and versioning"
    },
    {
      "id": "rainbrand-brand-skill.response.basedOnSkillId",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.basedOnSkillId",
      "value": "basedOnSkillId is the Skill ID this Skill was derived from, when available, or null.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Base Skill ID this Skill was derived from, when available"
    },
    {
      "id": "rainbrand-brand-skill.response.createdAt",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.createdAt",
      "value": "createdAt is when this immutable Skill was created.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "description: Time this immutable Skill was created"
    },
    {
      "id": "rainbrand-brand-skill.response.profile",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.profile",
      "value": "profile is the structured brand profile (name, primaryLogo, colors, gradients, typography, logoCatalog), including temporary signed URLs for custom font files.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Structured brand profile, including temporary signed URLs for custom font files"
    },
    {
      "id": "rainbrand-brand-skill.response.profile.colors",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.profile.colors",
      "value": "Each profile color has a required hex value and optional name, group and usage guidance.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Source-supported guidance on when and how to use this color."
    },
    {
      "id": "rainbrand-brand-skill.response.profile.gradients",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.profile.gradients",
      "value": "profile.gradients lists the brand's linear gradients in source order with angles, stops and usage guidance.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "The Brand's evidenced linear gradients in source order, including exact angles, stops, and usage guidance."
    },
    {
      "id": "rainbrand-brand-skill.response.profile.typography",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.profile.typography",
      "value": "profile.typography.roles lists the brand's typography roles, most prominent first; the heading and body fields are deprecated.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "The brand's typography roles, most prominent first."
    },
    {
      "id": "rainbrand-brand-skill.response.profile.logoCatalog",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.profile.logoCatalog",
      "value": "profile.logoCatalog lists supported logos saved with the Brand Skill version; null means no catalog was published.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Supported logos saved with this Brand Skill version. Null means no catalog was published"
    },
    {
      "id": "rainbrand-brand-skill.response.files",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.files",
      "value": "files lists every file in the Skill: Markdown guidance files in order with their contents, then images, fonts and font specimens with download URLs.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Every file in this Skill: Markdown files in order with their contents, then images, fonts, and font specimens with download URLs"
    },
    {
      "id": "rainbrand-brand-skill.response.files.guidance",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.files.guidance",
      "value": "Each Markdown file has path, mediaType text/markdown, kind text, byteLength, content (the full file) and libraryAssetIds.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "description: Complete Markdown file contents"
    },
    {
      "id": "rainbrand-brand-skill.response.files.libraryAssetIds",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.files.libraryAssetIds",
      "value": "libraryAssetIds lists the Brand Library asset IDs a guidance file references.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Brand Library asset IDs referenced by this file"
    },
    {
      "id": "rainbrand-brand-skill.response.files.assetUrl",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.files.assetUrl",
      "value": "Image, font and other files have path, mediaType, kind (image, font or other), byteLength, description and a temporary signed url.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Temporary signed download URL; retrieve the Skill again if the URL expires"
    },
    {
      "id": "rainbrand-brand-skill.response.version",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "response.version",
      "value": "The Inspect response has no field named version; skillId identifies the version and basedOnSkillId its base.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "use it for caching and versioning"
    },
    {
      "id": "rainbrand-brand-skill.versions.readEarlier",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "versions.readEarlier",
      "value": "Not published",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Retrieve the complete active Brand Skill"
    },
    {
      "id": "rainbrand-brand-skill.versions.libraryRemoval",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "versions.libraryRemoval",
      "value": "Removing a file from a Brand Library stops future Briefs, Brand Edits and Brand Skill versions using it; published Brand Skills keep working.",
      "source": "https://docs.rainbrand.com/llms.txt",
      "checked": "2026-11-11",
      "quote": "Future Briefs, Brand Edits, and Brand Skill versions stop using it; published Brand Skills keep working."
    },
    {
      "id": "rainbrand-brand-skill.versions.edits",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "versions.edits",
      "value": "A brand edit is prepared for review before it changes the brand, then applied or discarded.",
      "source": "https://docs.rainbrand.com/guides/edit-brand",
      "checked": "2026-11-11",
      "quote": "Rainbrand prepares an update for you to review before it changes the brand."
    },
    {
      "id": "rainbrand-brand-skill.getBrand.status",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "getBrand.status",
      "value": "Get a brand returns status analyzing, ready, logo_required or failed.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand",
      "checked": "2026-11-11",
      "quote": "- logo_required"
    },
    {
      "id": "rainbrand-brand-skill.getBrand.activeSkill",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "getBrand.activeSkill",
      "value": "activeSkill holds the current immutable Brand Skill's id and createdAt, or null when none is active.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand",
      "checked": "2026-11-11",
      "quote": "Current immutable Brand Skill, when one is active."
    },
    {
      "id": "rainbrand-brand-skill.getBrand.profile",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "getBrand.profile",
      "value": "Get a brand's profile is read from the active immutable Brand Skill and includes palette, gradients, typography, favicon, primaryLogo and logoCatalog.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand",
      "checked": "2026-11-11",
      "quote": "Brands with an active Brand Skill read this from that immutable Skill"
    },
    {
      "id": "rainbrand-brand-skill.getBrand.wait",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "getBrand.wait",
      "value": "Get a brand accepts wait=true with a timeout of default 120 and maximum 295 seconds.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand",
      "checked": "2026-11-11",
      "quote": "Max seconds to wait (default 120, max 295)"
    },
    {
      "id": "rainbrand-brand-skill.export.response",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "export.response",
      "value": "Starting an export returns HTTP 202 with data.id, data.skillId and data.status (preparing or ready).",
      "source": "https://docs.rainbrand.com/api-reference/brands/export-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "Prepare a downloadable ZIP of the active Brand Skill."
    },
    {
      "id": "rainbrand-brand-skill.export.pinned",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "export.pinned",
      "value": "An export stays tied to the Brand Skill selected when it was requested.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand-skill-export",
      "checked": "2026-11-11",
      "quote": "The export stays tied to the Brand Skill selected when it was requested."
    },
    {
      "id": "rainbrand-brand-skill.export.ready",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "export.ready",
      "value": "When ready, Get a Brand Skill export returns download.url, download.filename and download.byteLength.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand-skill-export",
      "checked": "2026-11-11",
      "quote": "Check an export and download its ZIP when ready."
    },
    {
      "id": "rainbrand-brand-skill.export.failed",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "export.failed",
      "value": "A failed export returns status failed with failure.code export_failed, a message and retryable.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand-skill-export",
      "checked": "2026-11-11",
      "quote": "const: export_failed"
    },
    {
      "id": "rainbrand-brand-skill.export.folder",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "export.folder",
      "value": "Extract the ZIP and keep its folder structure so relative links work.",
      "source": "https://docs.rainbrand.com/guides/use-brand-skill",
      "checked": "2026-11-11",
      "quote": "Extract it and keep the folder structure together so its relative links work."
    },
    {
      "id": "rainbrand-brand-skill.export.skillMd",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "export.skillMd",
      "value": "The guide's example prompt tells agents to start with SKILL.md in the exported folder.",
      "source": "https://docs.rainbrand.com/guides/use-brand-skill",
      "checked": "2026-11-11",
      "quote": "Start with SKILL.md and read the guidance for this task."
    },
    {
      "id": "rainbrand-brand-skill.errors.404",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "errors.404",
      "value": "404 BRAND_NOT_FOUND: brand not found (Inspect, Get a brand, export).",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "const: BRAND_NOT_FOUND"
    },
    {
      "id": "rainbrand-brand-skill.errors.409.inspect",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "errors.409.inspect",
      "value": "409 BRAND_SKILL_UNAVAILABLE on Inspect: the brand has no inspectable Skill.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "default: Brand has no inspectable Skill"
    },
    {
      "id": "rainbrand-brand-skill.errors.409.export",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "errors.409.export",
      "value": "409 BRAND_SKILL_UNAVAILABLE on export: the brand has no exportable Skill.",
      "source": "https://docs.rainbrand.com/api-reference/brands/export-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "default: Brand has no exportable Skill"
    },
    {
      "id": "rainbrand-brand-skill.errors.404.export",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "errors.404.export",
      "value": "404 BRAND_EXPORT_NOT_FOUND on Get a Brand Skill export: export not found.",
      "source": "https://docs.rainbrand.com/api-reference/brands/get-a-brand-skill-export",
      "checked": "2026-11-11",
      "quote": "default: Brand export not found"
    },
    {
      "id": "rainbrand-brand-skill.errors.500.inspect",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "errors.500.inspect",
      "value": "500 INTERNAL_ERROR on Inspect: failed to inspect the brand.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "default: Failed to inspect Brand"
    },
    {
      "id": "rainbrand-brand-skill.errors.429",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "errors.429",
      "value": "429 TOO_MANY_REQUESTS: rate limit exceeded.",
      "source": "https://docs.rainbrand.com/api-reference/brands/inspect-a-brand-skill",
      "checked": "2026-11-11",
      "quote": "default: Rate limit exceeded"
    },
    {
      "id": "rainbrand-brand-skill.mcp.tools.getBrand",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "mcp.tools.getBrand",
      "value": "The MCP tool get_brand reads a brand's status, profile, guidance and files.",
      "source": "https://docs.rainbrand.com/mcp/tools",
      "checked": "2026-11-11",
      "quote": "| `get_brand` | Read a brand's status, profile, guidance, and files. |"
    },
    {
      "id": "rainbrand-brand-skill.mcp.tools.viewFiles",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "mcp.tools.viewFiles",
      "value": "The MCP tool view_files views brand text, images, fonts and font specimens.",
      "source": "https://docs.rainbrand.com/mcp/tools",
      "checked": "2026-11-11",
      "quote": "| `view_files` | View brand text, images, fonts, and font specimens. |"
    },
    {
      "id": "rainbrand-brand-skill.mcp.tools.listBrandVersions",
      "about": "rainbrand-brand-skill",
      "subject": "Rainbrand Brand Skill",
      "field": "mcp.tools.listBrandVersions",
      "value": "The MCP tool list_brand_versions lists saved versions of a brand.",
      "source": "https://docs.rainbrand.com/mcp/tools",
      "checked": "2026-11-11",
      "quote": "| `list_brand_versions` | List saved versions of a brand. |"
    },
    {
      "id": "linear.homepage",
      "about": "linear",
      "subject": "Linear",
      "field": "homepage",
      "value": "On 11 November 2026 Linear's homepage title was \"Linear – The system for product development\" and its description \"Purpose-built for planning and building products with AI agents.\"",
      "source": "https://linear.app",
      "checked": "2026-11-11"
    },
    {
      "id": "brandfetch.plans.summary",
      "about": "brandfetch",
      "subject": "Brandfetch",
      "field": "plans.summary",
      "value": "As of 11 November 2026, Brandfetch has a Free plan that needs no card, and its cheapest paid plan, Growth Starter, is $129 a month billed monthly or $99 a month billed yearly. Webhooks need a paid plan.",
      "source": "https://brandfetch.com/developers/pricing",
      "checked": "2026-11-11"
    },
    {
      "id": "context-dev.plans.summary",
      "about": "context-dev",
      "subject": "Context.dev",
      "field": "plans.summary",
      "value": "As of 11 November 2026, Context.dev has a Free plan at $0 a month, and its cheapest paid plan, Developer, is $20 a month. Prefetching is not available on the Free plan.",
      "source": "https://www.context.dev/pricing",
      "checked": "2026-11-11"
    },
    {
      "id": "firecrawl.plans.summary",
      "about": "firecrawl",
      "subject": "Firecrawl",
      "field": "plans.summary",
      "value": "As of 11 November 2026, Firecrawl has a free plan that needs no card, and its cheapest paid plan, Hobby, is $19 a month billed monthly or $16 a month billed annually.",
      "source": "https://www.firecrawl.dev/pricing",
      "checked": "2026-11-11"
    },
    {
      "id": "logo-dev.plans.summary",
      "about": "logo-dev",
      "subject": "Logo.dev",
      "field": "plans.summary",
      "value": "As of 11 November 2026, Logo.dev has a free Community plan, which needs a visible \"Logos provided by Logo.dev\" link in commercial projects, and its cheapest paid plan, Startup, is $50 a month billed monthly or $400 a year.",
      "source": "https://www.logo.dev/pricing",
      "checked": "2026-11-11"
    },
    {
      "id": "rainbrand.plans.summary",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "plans.summary",
      "value": "As of 11 November 2026, new Rainbrand accounts get a one-time free grant that includes one brand, and the cheapest paid plan, Plus, is $20 a month billed monthly. API and MCP access are included in every plan.",
      "source": "https://www.rainbrand.com/pricing",
      "checked": "2026-11-11"
    },
    {
      "id": "linear.brandPage",
      "about": "linear",
      "subject": "Linear",
      "field": "brandPage",
      "value": "Linear's brand guidelines page names Mercury White (#F4F5F8) and Nordic Gray (#222326) as the preferred accents for monochrome wordmark use, says the primary brand color is a subtle desaturated blue reserved for backgrounds, and asks that its graphics not be altered or shown in a way that implies endorsement.",
      "source": "https://linear.app/brand",
      "checked": "2026-11-11",
      "quote": "The following light and dark accents are preferred for monochrome wordmark usage, while the brand color is typically reserved for backgrounds."
    },
    {
      "id": "rainbrand.endpoint.createBrand",
      "about": "rainbrand",
      "subject": "Rainbrand",
      "field": "endpoint.createBrand",
      "value": "Create a brand is POST /brands with a sources list: a public website, an Instagram account or files.",
      "source": "https://www.rainbrand.com/api/v1/spec.json",
      "checked": "2026-11-11",
      "quote": "Public website URL to turn into a Brand Skill"
    }
  ]
}
