Skip to main content
Glama

Search brands

get_brands
Read-onlyIdempotent

Search brands (manufacturers) registered on authorized.by, or list them all. Read-only. 'search' matches the brand name, alias or website domain (partial match). Returns for each brand: id, name, slug, logo and the number of retailers it has authorized. Omit 'search' to retrieve the full index; use 'page' and 'size' to paginate. Data scope: results only cover relationships registered and confirmed on authorized.by. An empty result or a not-found error does NOT prove that no authorization exists outside authorized.by. Distinguish outcomes: an empty list means no matching record on authorized.by; an error result whose text starts with 'Brand not found' or 'Retailer not found' means the given id/alias is unknown; an error result whose text starts with 'Tool execution failed' is a technical error and says nothing about the data.

Input Schema

NameRequiredDescriptionDefault
pageNoZero-based page number (default 0).
sizeNoPage size (default 500).
searchNoFilter by brand name, alias or website domain/URL, e.g. 'deuter' or 'deuter.com'. Optional.

Output Schema

NameRequiredDescriptionDefault
metaYesNetwork-wide totals.
brandsYes
paginationYesPagination of this response.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / search / description
      Previous value: -"Filter by brand name or alias. Optional."New value: +"Filter by brand name, alias or website domain/URL, e.g. 'deuter' or 'deuter.com'. Optional."
  2. Changed2 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "description": "A page of brands plus network-wide totals and pagination.",
      +  "properties": {
      +    "brands": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "description": "Numeric authorized.by ID. Accepted by the id_or_alias argument of the detail tools.",
      +            "type": "integer"
      +          },
      +          "logo": {
      +            "description": "Logo image URL, or null.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "description": "Display name.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "retailer_count": {
      +            "description": "Number of retailers currently authorized by this brand on authorized.by.",
      +            "type": "integer"
      +          },
      +          "slug": {
      +            "description": "URL-safe identifier. Accepted by the id_or_alias argument of the detail tools.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "slug",
      +          "logo",
      +          "retailer_count"
      +        ],
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "meta": {
      +      "additionalProperties": false,
      +      "description": "Network-wide totals.",
      +      "properties": {
      +        "generated_at": {
      +          "description": "Timestamp (ISO 8601) the index was generated.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "total_brands": {
      +          "description": "Total number of public brands on authorized.by.",
      +          "type": "integer"
      +        },
      +        "total_connections": {
      +          "description": "Total number of active brand-retailer authorizations on authorized.by.",
      +          "type": "integer"
      +        },
      +        "total_retailers": {
      +          "description": "Total number of public retailers on authorized.by.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "total_brands",
      +        "total_retailers",
      +        "total_connections",
      +        "generated_at"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "pagination": {
      +      "additionalProperties": false,
      +      "description": "Pagination of this response.",
      +      "properties": {
      +        "page": {
      +          "description": "Zero-based page number of this response.",
      +          "type": "integer"
      +        },
      +        "size": {
      +          "description": "Page size used for this response.",
      +          "type": "integer"
      +        },
      +        "total_items": {
      +          "description": "Total number of matching entries across all pages.",
      +          "type": "integer"
      +        },
      +        "total_pages": {
      +          "description": "Total number of pages.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "page",
      +        "size",
      +        "total_items",
      +        "total_pages"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "brands",
      +    "meta",
      +    "pagination"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (which already declare readOnly/idempotent/openWorld): it discloses the data scope (only confirmed relationships on authorized.by) and warns that an empty or error result does not disprove authorization elsewhere, plus an explicit error taxonomy ('Brand not found' vs 'Tool execution failed'). That is exactly the behavioral context an agent needs to avoid misinterpreting results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and mode split, then constraints and error semantics; every sentence carries information. The enumerated return-field list partially duplicates the output schema and adds a little length, but no sentence is idle padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations carry the safety profile and an output schema exists, so the description only needed to add scope and interpretation guidance — which it does thoroughly, including the critical caveat about absence of proof outside authorized.by.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so baseline is 3; the description adds that 'search' is a partial match against name, alias or website domain, and that omitting it returns the full index rather than an empty set. Pagination behavior is left to the schema's own defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search/list) and resource (brands/manufacturers) plus the source registry (authorized.by), and the dual mode 'search or list them all' makes clear it is the multi-item retrieval tool, distinct from the singular get_brand sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to omit 'search' (to get the full index) and how to paginate with page/size, and gives outcome-distinguishing rules for empty vs not-found vs technical errors. It stops short of naming alternatives such as get_brand for single-id lookups, so routing between siblings is still inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources