Skip to main content
Glama

Bicycle.LLC product descriptions through the stable PeopleAnalyst feed

get_product_description
Read-only

Bicycle.LLC product descriptions through the stable PeopleAnalyst feed. Versioned, CORS-open descriptions of every product in the portfolio — general positioning plus structured personas, goals, problems, journeys, and associated BrandScripts where the product has that canon. Bicycle.LLC owns the company feed; this stable PA route and MCP tool proxy its validated v1 responses. Pass ?product to filter; live nested journeys are the default and ?status=draft|all opts into authoring records.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_product_description"
  }
}

Input Schema

NameRequiredDescriptionDefault
statusNoNested journey editorial status: live (default) | draft | all.
productNoFilter to one product id (e.g. performix, anycomp, compensation-toolbox).

Output Schema

NameRequiredDescriptionDefault
countNo
filterYes
contractYes
productsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / properties / status
      Added value: +{
      +  "description": "Nested journey editorial status: live (default) | draft | all.",
      +  "enum": [
      +    "live",
      +    "draft",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / filter / properties / status
      Added value: +{
      +  "enum": [
      +    "live",
      +    "draft",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / filter / required
      Previous value: -[
      -  "product"
      -]New value: +[
      +  "product",
      +  "status"
      +]
    • addedOutput schema / properties / products / items / properties / associatedScripts
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "editorialStatus": {
      +        "enum": [
      +          "live",
      +          "draft"
      +        ],
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "journeyId": {
      +        "type": "string"
      +      },
      +      "persona": {
      +        "type": "string"
      +      },
      +      "primary": {
      +        "type": "boolean"
      +      },
      +      "variant": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "persona",
      +      "variant",
      +      "primary",
      +      "editorialStatus",
      +      "journeyId"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / products / items / properties / goals
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "capabilityReadiness": {
      +        "enum": [
      +          "available",
      +          "partial",
      +          "in-development",
      +          "planned",
      +          "future",
      +          "design-only"
      +        ],
      +        "type": "string"
      +      },
      +      "editorialStatus": {
      +        "enum": [
      +          "live",
      +          "draft"
      +        ],
      +        "type": "string"
      +      },
      +      "goal": {
      +        "type": "string"
      +      },
      +      "goalProvenance": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "personaLibraryGoalValidated": {
      +            "const": false,
      +            "type": "boolean"
      +          },
      +          "source": {
      +            "const": "mike-approved-jobframe-intent",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "source",
      +          "personaLibraryGoalValidated"
      +        ],
      +        "type": "object"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "intent": {
      +        "type": "string"
      +      },
      +      "persona": {
      +        "type": "string"
      +      },
      +      "scriptId": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "scriptId",
      +      "persona",
      +      "intent",
      +      "goal",
      +      "goalProvenance",
      +      "editorialStatus",
      +      "capabilityReadiness"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / products / items / properties / journeys
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "availability": {
      +                "const": "available",
      +                "type": "string"
      +              },
      +              "href": {
      +                "type": "string"
      +              },
      +              "label": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "availability",
      +              "label",
      +              "href"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "availability": {
      +                "const": "intended",
      +                "type": "string"
      +              },
      +              "label": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "availability",
      +              "label"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "capabilityReadiness": {
      +        "enum": [
      +          "available",
      +          "partial",
      +          "in-development",
      +          "planned",
      +          "future",
      +          "design-only"
      +        ],
      +        "type": "string"
      +      },
      +      "editorialStatus": {
      +        "enum": [
      +          "live",
      +          "draft"
      +        ],
      +        "type": "string"
      +      },
      +      "facet": {
      +        "type": "string"
      +      },
      +      "goal": {
      +        "type": "string"
      +      },
      +      "goalProvenance": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "personaLibraryGoalValidated": {
      +            "const": false,
      +            "type": "boolean"
      +          },
      +          "source": {
      +            "const": "mike-approved-jobframe-intent",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "source",
      +          "personaLibraryGoalValidated"
      +        ],
      +        "type": "object"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "intent": {
      +        "type": "string"
      +      },
      +      "persona": {
      +        "type": "string"
      +      },
      +      "scriptId": {
      +        "type": "string"
      +      },
      +      "steps": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "scriptId",
      +      "persona",
      +      "facet",
      +      "intent",
      +      "goal",
      +      "goalProvenance",
      +      "steps",
      +      "editorialStatus",
      +      "capabilityReadiness",
      +      "action"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / products / items / properties / personas
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "persona": {
      +        "type": "string"
      +      },
      +      "personaLabel": {
      +        "type": "string"
      +      },
      +      "reference": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "canonicalPersonaId": {
      +                "type": "string"
      +              },
      +              "jobRefs": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "libraryId": {
      +                "type": "string"
      +              },
      +              "observedAt": {
      +                "type": "string"
      +              },
      +              "personframeAddress": {
      +                "type": "string"
      +              },
      +              "roleIdentityEvidence": {
      +                "const": "matched-public-persona-record",
      +                "type": "string"
      +              },
      +              "slug": {
      +                "type": "string"
      +              },
      +              "sourceContract": {
      +                "type": "string"
      +              },
      +              "sourcePersonaLabel": {
      +                "type": "string"
      +              },
      +              "sourcePersonaScope": {
      +                "type": "string"
      +              },
      +              "status": {
      +                "const": "resolved",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "status",
      +              "slug",
      +              "libraryId",
      +              "canonicalPersonaId",
      +              "sourcePersonaLabel",
      +              "sourcePersonaScope",
      +              "roleIdentityEvidence",
      +              "jobRefs",
      +              "sourceContract",
      +              "observedAt"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "observedAt": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "type": "string"
      +              },
      +              "reconciliation": {
      +                "type": "string"
      +              },
      +              "requestedRole": {
      +                "type": "string"
      +              },
      +              "sourceContract": {
      +                "type": "string"
      +              },
      +              "status": {
      +                "const": "unresolved",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "status",
      +              "requestedRole",
      +              "reason",
      +              "reconciliation",
      +              "sourceContract",
      +              "observedAt"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "scriptIds": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "persona",
      +      "personaLabel",
      +      "reference",
      +      "scriptIds"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / products / items / properties / problems
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "external": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "internal": {
      +        "type": "string"
      +      },
      +      "persona": {
      +        "type": "string"
      +      },
      +      "philosophical": {
      +        "type": "string"
      +      },
      +      "refStatus": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "status": {
      +                "const": "resolved",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "reason": {
      +                "type": "string"
      +              },
      +              "reconciliation": {
      +                "type": "string"
      +              },
      +              "status": {
      +                "const": "unresolved",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "status",
      +              "reason",
      +              "reconciliation"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "refs": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "address": {
      +              "type": "string"
      +            },
      +            "edition": {
      +              "const": "v1",
      +              "type": "string"
      +            },
      +            "slot": {
      +              "enum": [
      +                "villain",
      +                "external",
      +                "internal",
      +                "philosophical"
      +              ],
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "address",
      +            "edition"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "scriptId": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "scriptId",
      +      "persona",
      +      "external",
      +      "internal",
      +      "philosophical",
      +      "refs",
      +      "refStatus"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / products / items / required
      Previous value: -[
      -  "product",
      -  "name",
      -  "category",
      -  "oneLiner",
      -  "problemFrames",
      -  "capabilities",
      -  "beachheads",
      -  "whenNotToUse",
      -  "canonicalUrls",
      -  "relatedProducts",
      -  "status"
      -]New value: +[
      +  "product",
      +  "name",
      +  "category",
      +  "oneLiner",
      +  "problemFrames",
      +  "capabilities",
      +  "beachheads",
      +  "whenNotToUse",
      +  "canonicalUrls",
      +  "relatedProducts",
      +  "personas",
      +  "goals",
      +  "problems",
      +  "journeys",
      +  "associatedScripts",
      +  "status"
      +]
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description adds real context beyond that: the feed is versioned, CORS-open, and proxies validated v1 responses, and it discloses the live-vs-authoring record distinction. No permissions or rate limits mentioned, but solid added value.

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 and scope are front-loaded, and the filtering behavior comes last. Slightly redundant opening (restates the title almost verbatim) and dense clauses, but no wasted sentences.

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?

An output schema exists, so return values needn't be explained, and the description still summarizes the payload shape well. It omits pagination or result-size expectations, a minor gap for a feed-backed list tool.

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 params and the enum. The description's note about live being the default and draft|all opting into authoring records echoes the schema without adding format or syntax detail, so 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?

States a specific verb+resource (product descriptions from the PeopleAnalyst feed) and enumerates the payload (positioning, personas, goals, problems, journeys, BrandScripts). It does not explicitly differentiate itself from the sibling get_brandscripts, leaving overlap ambiguous.

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?

Gives filtering guidance ('Pass ?product to filter') and the default status behavior, but never says when to reach for this tool over get_brandscripts, get_canonical_forms, or list_peopleanalyst_feeds. Usage is implied rather than routed.

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