Skip to main content
Glama

Get a PCF control

get_component
Read-onlyIdempotent

Everything about one control by its slug: what it does, its control type, license and repository, the current release's properties, and download links for its solutions. Use it once search or list_components has given you a slug; use get_doc_page for installation and configuration instructions, which this does not return. An unknown slug, or a version the control never released, returns an error naming the tool to call instead. include_versions and include_related each cost an extra query, so leave them off unless you need the release history or similar controls.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYesThe control's slug, e.g. "pcf-tag-list".
versionNoA specific release. Defaults to the latest stable one.
include_relatedNoAlso return similar controls. Costs an extra query; leave off unless needed.
include_versionsNoAlso return every release. Costs an extra query; leave off unless needed.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute URL of the control's page, for citing.
nameYes
slugYes
tagsNo
tierNofree, or a paid tier.
hostsYesWhere this control runs: canvas apps, model-driven apps, or both.
authorNo
relatedNoEmpty unless include_related was set.
taglineNo
categoryNo
versionsNoEmpty unless include_versions was set.
downloadsYesEmpty where the control has no published release.
summaryMdNoThe author's longer description, as Markdown.
isArchivedYesTrue when the control is no longer maintained.
supportUrlNoWhere to report a problem with the control.
controlTypeYes
homepageUrlNo
licenseSpdxNoSPDX identifier, e.g. "MIT".
publishedAtNoISO 8601.
downloadCountNo
repositoryUrlNo
currentVersionNoThe release described, or null where nothing has been published yet.
controlTypeDescriptionNoWhat that control type means, in a sentence.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / hosts
      Added value: +{
      +  "description": "Where this control runs: canvas apps, model-driven apps, or both.",
      +  "items": {
      +    "enum": [
      +      "canvas",
      +      "model-driven"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "slug",
      -  "name",
      -  "controlType",
      -  "isArchived",
      -  "downloads",
      -  "url"
      -]New value: +[
      +  "slug",
      +  "name",
      +  "controlType",
      +  "hosts",
      +  "isArchived",
      +  "downloads",
      +  "url"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "author": {
      +      "properties": {
      +        "githubLogin": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "isVerified": {
      +          "type": "boolean"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "slug": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "slug",
      +        "name"
      +      ],
      +      "type": "object"
      +    },
      +    "category": {
      +      "properties": {
      +        "name": {
      +          "type": "string"
      +        },
      +        "slug": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "slug",
      +        "name"
      +      ],
      +      "type": "object"
      +    },
      +    "controlType": {
      +      "type": "string"
      +    },
      +    "controlTypeDescription": {
      +      "description": "What that control type means, in a sentence.",
      +      "type": "string"
      +    },
      +    "currentVersion": {
      +      "description": "The release described, or null where nothing has been published yet.",
      +      "properties": {
      +        "framework": {
      +          "description": "How the control is built, e.g. \"react_virtual\".",
      +          "type": "string"
      +        },
      +        "isLatest": {
      +          "type": "boolean"
      +        },
      +        "isPrerelease": {
      +          "type": "boolean"
      +        },
      +        "minPlatformVersion": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "properties": {
      +          "description": "Every property the control exposes, including the columns a dataset control binds.",
      +          "items": {
      +            "properties": {
      +              "defaultValue": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "description": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "displayName": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "isRequired": {
      +                "type": "boolean"
      +              },
      +              "kind": {
      +                "description": "input, output, dataset, dataset_column or feature.",
      +                "type": "string"
      +              },
      +              "name": {
      +                "description": "The property's logical name, as bound in the maker.",
      +                "type": "string"
      +              },
      +              "type": {
      +                "description": "The Power Platform type, e.g. \"SingleLine.Text\", \"TwoOptions\", \"DataSet\".",
      +                "type": "string"
      +              },
      +              "usage": {
      +                "description": "input, output or bound. Null on a feature.",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "type",
      +              "isRequired"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "releaseNotesMd": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "releasedAt": {
      +          "description": "ISO 8601.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "version": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "version",
      +        "isPrerelease"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "downloadCount": {
      +      "type": "integer"
      +    },
      +    "downloads": {
      +      "description": "Empty where the control has no published release.",
      +      "items": {
      +        "properties": {
      +          "fileName": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "description": "managed_solution or unmanaged_solution.",
      +            "type": "string"
      +          },
      +          "label": {
      +            "type": "string"
      +          },
      +          "requiresEntitlement": {
      +            "description": "True where the file is paid for and the download needs an entitlement.",
      +            "type": "boolean"
      +          },
      +          "size": {
      +            "description": "Human-readable, e.g. \"14.8 KB\".",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "description": "Absolute URL of the counted download route. Use this rather than any storage URL.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "label",
      +          "fileName",
      +          "requiresEntitlement",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "homepageUrl": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "isArchived": {
      +      "description": "True when the control is no longer maintained.",
      +      "type": "boolean"
      +    },
      +    "licenseSpdx": {
      +      "description": "SPDX identifier, e.g. \"MIT\".",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "publishedAt": {
      +      "description": "ISO 8601.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "related": {
      +      "description": "Empty unless include_related was set.",
      +      "type": "array"
      +    },
      +    "repositoryUrl": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "slug": {
      +      "type": "string"
      +    },
      +    "summaryMd": {
      +      "description": "The author's longer description, as Markdown.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "supportUrl": {
      +      "description": "Where to report a problem with the control.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "tagline": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "tags": {
      +      "items": {
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "tier": {
      +      "description": "free, or a paid tier.",
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "Absolute URL of the control's page, for citing.",
      +      "type": "string"
      +    },
      +    "versions": {
      +      "description": "Empty unless include_versions was set.",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "slug",
      +    "name",
      +    "controlType",
      +    "isArchived",
      +    "downloads",
      +    "url"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent. The description adds meaningful behavior beyond that: unknown slugs or unreleased versions produce an error that names the tool to call instead, and include_versions/include_related incur extra query costs. No annotation contradiction exists.

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

Conciseness5/5

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

Four sentences, all information-dense and front-loaded: the core purpose comes first, sibling routing second, error behavior third, and parameter cost guidance last. There is no filler or repetition beyond what the schema needs reinforced.

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?

For a read-only lookup tool with an output schema, the description covers what is returned, when to use it, when not to use it, what happens on invalid input, and the cost trade-offs of optional parameters. Nothing an agent needs to select or invoke the tool correctly is left out.

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 coverage is 100%, and both optional parameters already carry descriptions including the extra-query warning. The description reinforces those warnings and ties include_versions to 'release history' and include_related to 'similar controls,' but it does not substantially expand on what the schema already states.

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?

The description opens with a specific verb ('Get') and resource ('one control by its slug'), then enumerates what is returned: behavior, control type, license, repository, current release properties, and solution download links. It distinguishes itself from search/list_components and get_doc_page, so an agent can disambiguate immediately.

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

Usage Guidelines5/5

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

It gives explicit sequencing guidance: use it only after search or list_components provides a slug. It also names the alternative for installation/configuration instructions (get_doc_page) and clarifies that this tool intentionally does not return them, plus warns about optional parameters costing extra queries.

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