Skip to main content
Glama

style_get

Read-onlyIdempotent

Read a .docx style by id or name to inspect its type, usage, parent chain, links, and direct versus inherited formatting before updating styles or diagnosing text appearance.

Instructions

Read one style by id or name ("Heading1" or "heading 1"): its type, parent chain, next and linked styles, how often it is used, heading level, the formatting it sets itself and its effective formatting after inheritance. Use it before style.update, or to see why text looks as it does; style.list lists all styles, para.get a paragraph's direct formatting. Read-only; STYLE_NOT_FOUND for an unknown style.

Input Schema

NameRequiredDescriptionDefault
docYesPath to the .docx.
styleYesStyle id or name.

Output Schema

NameRequiredDescriptionDefault
okYesAlways true on success.
opYesThe operation that ran.
apiYesAPI version (1.0).
docNoThe document read or written: path, sha256 and paragraph count.
nextYesCursor for the next page (pass as cursor), or null.
resultYesWhat the operation returns.
warningsYesThings to know about the result.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.7.2
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "api": {
      +      "description": "API version (1.0).",
      +      "type": "string"
      +    },
      +    "doc": {
      +      "description": "The document read or written: path, sha256 and paragraph count.",
      +      "properties": {
      +        "characters": {
      +          "description": "text.normalize of a text string: its length.",
      +          "type": "integer"
      +        },
      +        "paragraphs": {
      +          "description": "Body paragraphs.",
      +          "type": "integer"
      +        },
      +        "path": {
      +          "description": "Path of the document.",
      +          "type": "string"
      +        },
      +        "sha256": {
      +          "description": "sha256 of the file (pass as expect.sha256 to a write).",
      +          "type": "string"
      +        },
      +        "source": {
      +          "description": "A .txt/.md/.odt source's format, encoding and split mode; \"text\" for a text string (text.normalize).",
      +          "type": [
      +            "object",
      +            "string"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "next": {
      +      "description": "Cursor for the next page (pass as cursor), or null.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "ok": {
      +      "description": "Always true on success.",
      +      "type": "boolean"
      +    },
      +    "op": {
      +      "description": "The operation that ran.",
      +      "type": "string"
      +    },
      +    "result": {
      +      "description": "What the operation returns.",
      +      "properties": {
      +        "based_on": {
      +          "description": "Parent style id.",
      +          "type": "string"
      +        },
      +        "chain": {
      +          "description": "The style and its ancestors, nearest first.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "custom": {
      +          "description": "True for a user-defined style.",
      +          "type": "boolean"
      +        },
      +        "default": {
      +          "description": "True for the default style of its type.",
      +          "type": "boolean"
      +        },
      +        "effective": {
      +          "description": "Formatting after inheritance.",
      +          "properties": {
      +            "paragraph": {
      +              "description": "Paragraph properties.",
      +              "type": "object"
      +            },
      +            "run": {
      +              "description": "Run (character) properties.",
      +              "type": "object"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "heading_level": {
      +          "description": "1-9 for a heading style, else null.",
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "description": "Style id (w:styleId).",
      +          "type": "string"
      +        },
      +        "link": {
      +          "description": "Linked paragraph/character style.",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Display name.",
      +          "type": "string"
      +        },
      +        "next": {
      +          "description": "Style of the paragraph after this one.",
      +          "type": "string"
      +        },
      +        "own": {
      +          "description": "Formatting the style sets itself.",
      +          "properties": {
      +            "paragraph": {
      +              "description": "Paragraph properties.",
      +              "type": "object"
      +            },
      +            "run": {
      +              "description": "Run (character) properties.",
      +              "type": "object"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "quick": {
      +          "description": "Shown in the quick style gallery.",
      +          "type": "boolean"
      +        },
      +        "type": {
      +          "description": "paragraph, character, table or numbering.",
      +          "type": "string"
      +        },
      +        "used": {
      +          "description": "Uses in the body.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "name",
      +        "type",
      +        "used",
      +        "quick",
      +        "heading_level",
      +        "chain",
      +        "own",
      +        "effective"
      +      ],
      +      "type": "object"
      +    },
      +    "warnings": {
      +      "description": "Things to know about the result.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "api",
      +    "ok",
      +    "op",
      +    "result",
      +    "warnings",
      +    "next"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/openWorld=false, so safety is covered; the description still adds value by naming the failure mode ('STYLE_NOT_FOUND for an unknown style'), which annotations cannot convey. It does not discuss doc-open prerequisites or error behavior for a bad doc path.

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 operation and its return shape, then routing cues. It is dense but nearly every clause carries information; the long enumeration is justified by the multi-part return value.

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?

An output schema exists, yet the description still summarizes the return contents and adds the not-found error code and mutation-preparation use case. For a two-parameter read tool with full annotation coverage, nothing material is missing.

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 the baseline is 3, but the description adds real semantics beyond the schema by showing that style accepts flexible identifiers ('Heading1' or 'heading 1'), implying case/space-insensitive lookup. The doc parameter gains nothing extra.

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 and resource ('Read one style by id or name') and enumerates the exact payload: type, parent chain, next/linked styles, usage count, heading level, direct vs effective formatting. This is clearly distinguishable from style.list (all styles) and para.get (paragraph direct formatting).

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?

Gives explicit trigger conditions ('before style.update', 'to see why text looks as it does') and names both alternatives with the condition that selects each. Nothing 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.