Skip to main content
Glama

Get a relationship

get_relationship
Read-only

Get a brand's relationship: where to apply, each fact with its source quote, and whether Linty read the brand's terms. The facts include the form fields and the documents that the brand asks for. A fact has its quote in source only when LintyBot read it on the brand's page. Read terms before you apply: it says whether Linty read the agreement that the form asks you to accept. The default relationship is wholesale. The result is the JSON twin at /brands/{slug}/{relationship}.json.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "brand": "<brand>"
    },
    "name": "get_relationship"
  }
}

Input Schema

NameRequiredDescriptionDefault
brandYesA slug: lower-case letters, digits and hyphens, for example `acme-foods`.
relationshipNoThe relationship slug. The default is `wholesale`.wholesale

Output Schema

NameRequiredDescriptionDefault
brandYes
notesYes
termsYes
routesYes
contactYes
sourcesYes
evidenceYes
page_kindYes
confidenceYes
next_stepsYes
updated_atYes
availabilityYes
open_accountYes
requirementsYes
evidence_quoteYes
applicant_typesYes
last_checked_atYes
last_verified_atYes
relationship_codeYes
relationship_nameYes
relationship_slugYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / evidence_quote
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "brand",
      -  "relationship_slug",
      -  "relationship_name",
      -  "relationship_code",
      -  "availability",
      -  "confidence",
      -  "last_verified_at",
      -  "applicant_types",
      -  "routes",
      -  "requirements",
      -  "sources",
      -  "updated_at",
      -  "page_kind",
      -  "last_checked_at",
      -  "contact",
      -  "next_steps",
      -  "notes",
      -  "terms",
      -  "evidence",
      -  "open_account"
      -]New value: +[
      +  "brand",
      +  "relationship_slug",
      +  "relationship_name",
      +  "relationship_code",
      +  "availability",
      +  "confidence",
      +  "last_verified_at",
      +  "applicant_types",
      +  "routes",
      +  "requirements",
      +  "sources",
      +  "updated_at",
      +  "page_kind",
      +  "last_checked_at",
      +  "contact",
      +  "next_steps",
      +  "notes",
      +  "terms",
      +  "evidence",
      +  "open_account",
      +  "evidence_quote"
      +]
  2. Changed3 schema fields changed
    • addedOutput schema / properties / evidence
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "kind": {
      +      "enum": [
      +        "direct",
      +        "marketplace",
      +        "none"
      +      ],
      +      "type": "string"
      +    },
      +    "marketplace": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "faire",
      +            "epallet",
      +            "rangeme",
      +            "abound",
      +            "other"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "page_kind": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "application_form",
      +            "inquiry_form",
      +            "sign_in",
      +            "marketplace_listing",
      +            "document",
      +            "info_only",
      +            "not_wholesale",
      +            "dead"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "marketplace",
      +    "page_kind"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / open_account
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "brand",
      -  "relationship_slug",
      -  "relationship_name",
      -  "relationship_code",
      -  "availability",
      -  "confidence",
      -  "last_verified_at",
      -  "applicant_types",
      -  "routes",
      -  "requirements",
      -  "sources",
      -  "updated_at",
      -  "page_kind",
      -  "last_checked_at",
      -  "contact",
      -  "next_steps",
      -  "notes",
      -  "terms"
      -]New value: +[
      +  "brand",
      +  "relationship_slug",
      +  "relationship_name",
      +  "relationship_code",
      +  "availability",
      +  "confidence",
      +  "last_verified_at",
      +  "applicant_types",
      +  "routes",
      +  "requirements",
      +  "sources",
      +  "updated_at",
      +  "page_kind",
      +  "last_checked_at",
      +  "contact",
      +  "next_steps",
      +  "notes",
      +  "terms",
      +  "evidence",
      +  "open_account"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / properties / routes / items / properties / flags / items / enum
      Previous value: -[
      -  "bot_wall_observed",
      -  "login_required",
      -  "no_form_at_url",
      -  "captcha_on_submit",
      -  "blocked_for_lintybot",
      -  "frame_refused"
      -]New value: +[
      +  "bot_wall_observed",
      +  "login_required",
      +  "no_form_at_url",
      +  "captcha_on_submit",
      +  "blocked_for_lintybot",
      +  "frame_refused",
      +  "robots_refused"
      +]
  4. Changed20 schema fields changed
    • addedOutput schema / properties / contact
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "email": {
      +          "type": "string"
      +        },
      +        "marketplace": {
      +          "enum": [
      +            "faire",
      +            "epallet",
      +            "rangeme",
      +            "abound",
      +            "other"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / last_checked_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date-time",
      +      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / next_steps
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / notes
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / page_kind
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "application_form",
      +        "inquiry_form",
      +        "sign_in",
      +        "marketplace_listing",
      +        "document",
      +        "info_only",
      +        "not_wholesale",
      +        "dead"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / agreement
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / agreement_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / amount
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / currency
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / items
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / requirements / items / properties / options
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / requirements / items / properties / related
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / requirements / items / properties / seen
      Added value: +{
      +  "anyOf": [
      +    {
      +      "oneOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "date": {
      +              "format": "date-time",
      +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +              "type": "string"
      +            },
      +            "kind": {
      +              "const": "page",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "date"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "date": {
      +              "format": "date-time",
      +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +              "type": "string"
      +            },
      +            "kind": {
      +              "const": "application",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "date"
      +          ],
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / source
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "captured_at": {
      +          "format": "date-time",
      +          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +          "type": "string"
      +        },
      +        "quote": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "format": "uri",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "url",
      +        "quote",
      +        "captured_at"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / timing
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "at_application",
      +        "before_first_order",
      +        "on_request",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / unit
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / requirements / items / properties / value_type
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / requirements / items / required
      Previous value: -[
      -  "key",
      -  "label",
      -  "requirement_type",
      -  "required",
      -  "description"
      -]New value: +[
      +  "key",
      +  "label",
      +  "requirement_type",
      +  "required",
      +  "description",
      +  "value_type",
      +  "options",
      +  "timing",
      +  "amount",
      +  "currency",
      +  "unit",
      +  "items",
      +  "agreement",
      +  "agreement_url",
      +  "related",
      +  "source",
      +  "seen"
      +]
    • addedOutput schema / properties / terms
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "agreement_url": {
      +      "anyOf": [
      +        {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "read",
      +        "link_not_read",
      +        "agreement_not_shown",
      +        "not_readable",
      +        "none_seen",
      +        "not_checked"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "agreement_url",
      +    "note"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "brand",
      -  "relationship_slug",
      -  "relationship_name",
      -  "relationship_code",
      -  "availability",
      -  "confidence",
      -  "last_verified_at",
      -  "applicant_types",
      -  "routes",
      -  "requirements",
      -  "sources",
      -  "updated_at"
      -]New value: +[
      +  "brand",
      +  "relationship_slug",
      +  "relationship_name",
      +  "relationship_code",
      +  "availability",
      +  "confidence",
      +  "last_verified_at",
      +  "applicant_types",
      +  "routes",
      +  "requirements",
      +  "sources",
      +  "updated_at",
      +  "page_kind",
      +  "last_checked_at",
      +  "contact",
      +  "next_steps",
      +  "notes",
      +  "terms"
      +]
  5. Changed1 schema field changed
    • changedOutput schema / properties / routes / items / properties / flags / items / enum
      Previous value: -[
      -  "bot_wall_observed",
      -  "login_required",
      -  "no_form_at_url",
      -  "captcha_on_submit",
      -  "blocked_for_lintybot"
      -]New value: +[
      +  "bot_wall_observed",
      +  "login_required",
      +  "no_form_at_url",
      +  "captcha_on_submit",
      +  "blocked_for_lintybot",
      +  "frame_refused"
      +]
  6. Changed3 schema fields changed
    • changedOutput schema / properties / requirements / items / properties / requirement_type / enum
      Previous value: -[
      -  "field",
      -  "document",
      -  "certification",
      -  "threshold",
      -  "operational",
      -  "attestation"
      -]New value: +[
      +  "field",
      +  "document",
      +  "certification",
      +  "threshold",
      +  "operational",
      +  "attestation",
      +  "term"
      +]
    • changedOutput schema / properties / routes / items / properties / flags / items / enum
      Previous value: -[
      -  "bot_wall_observed",
      -  "login_required",
      -  "no_form_at_url"
      -]New value: +[
      +  "bot_wall_observed",
      +  "login_required",
      +  "no_form_at_url",
      +  "captcha_on_submit",
      +  "blocked_for_lintybot"
      +]
    • changedOutput schema / properties / routes / items / properties / route_type / enum
      Previous value: -[
      -  "web_form",
      -  "portal",
      -  "email",
      -  "phone",
      -  "pdf",
      -  "rep_contact",
      -  "broker",
      -  "distributor",
      -  "other"
      -]New value: +[
      +  "web_form",
      +  "portal",
      +  "email",
      +  "phone",
      +  "pdf",
      +  "rep_contact",
      +  "broker",
      +  "distributor",
      +  "other",
      +  "marketplace"
      +]
  7. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly, closed-world, non-destructive behavior, so the bar is lower. The description still adds real value by explaining data provenance — `source` is populated only when LintyBot read the brand's page, and `terms` reports whether the agreement was actually read — which is not derivable from the annotations.

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?

Purpose is front-loaded and the whole thing is one compact paragraph with no padding. There is mild redundancy — terms-read status is stated twice ("whether Linty read the brand's terms" / "whether Linty read the agreement") — but it does not seriously impede scanability.

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

Completeness4/5

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

With an output schema present, the description need not explain return shapes, yet it does sketch the payload (facts, form fields, documents, source quotes) usefully. It covers provenance caveats and the default parameter; only error/not-found behavior is unaddressed, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both `brand` and `relationship`, including the default. The description restates the `wholesale` default and mentions the result path, but adds no new syntax or semantics (e.g., valid relationship values beyond the slug pattern). Baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb+resource ("Get a brand's relationship") and enumerates the payload: application facts, source quotes, and terms-read status. It is clearly distinct from find_brands or list_categories, though it never explicitly contrasts itself with the closer sibling get_brand, which also targets a single brand.

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

Usage Guidelines3/5

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

It gives one actionable directive — "Read `terms` before you apply" — and notes the default relationship, which is genuinely useful context. However, it offers no when/when-not guidance relative to get_brand or find_brands, so tool selection against siblings is left to inference.

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.