Skip to main content
Glama

postedly_products

Read-onlyIdempotent

Returns the configured products for a service, currently handwritten cards, with identifiers, descriptions, images and per-item availability. A listed product is not necessarily open for ordering. Does not create a quote, order or payment.

Input Schema

NameRequiredDescriptionDefault
serviceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "https://json-schema.org/draft/2020-12/schema",
      -  "anyOf": [
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "data": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "available": {
      -                "type": "boolean"
      -              },
      -              "currency": {
      -                "const": "USD"
      -              },
      -              "description": {
      -                "type": "string"
      -              },
      -              "id": {
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "imageUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "name": {
      -                "type": "string"
      -              },
      -              "options": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "combinedCharacterLimit": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "handwritingStyles": {
      -                    "items": {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "id": {
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "imageUrl": {
      -                          "format": "uri",
      -                          "type": "string"
      -                        },
      -                        "label": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "id",
      -                        "label",
      -                        "imageUrl"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "maxMessageLength": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "maxWishesLength": {
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "previewKind": {
      -                    "const": "design_and_style_samples"
      -                  },
      -                  "size": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "handwritingStyles",
      -                  "maxMessageLength",
      -                  "maxWishesLength",
      -                  "combinedCharacterLimit",
      -                  "size",
      -                  "previewKind"
      -                ],
      -                "type": "object"
      -              },
      -              "provider": {
      -                "const": "handwrytten"
      -              },
      -              "requiresDocument": {
      -                "const": false
      -              },
      -              "service": {
      -                "const": "handwritten"
      -              }
      -            },
      -            "required": [
      -              "id",
      -              "name",
      -              "description",
      -              "provider",
      -              "service",
      -              "imageUrl",
      -              "currency",
      -              "available",
      -              "requiresDocument",
      -              "options"
      -            ],
      -            "type": "object"
      -          },
      -          "type": "array"
      -        }
      -      },
      -      "required": [
      -        "data"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "error": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "code": {
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "details": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "addressRole": {
      -                  "enum": [
      -                    "recipient",
      -                    "sender"
      -                  ]
      -                },
      -                "canSendAsEntered": {
      -                  "type": "boolean"
      -                }
      -              },
      -              "required": [
      -                "addressRole",
      -                "canSendAsEntered"
      -              ],
      -              "type": "object"
      -            },
      -            "message": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "code",
      -            "message"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "error"
      -      ],
      -      "type": "object"
      -    }
      -  ],
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "data": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "available": {
      +                "type": "boolean"
      +              },
      +              "currency": {
      +                "const": "USD"
      +              },
      +              "description": {
      +                "type": "string"
      +              },
      +              "id": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "imageUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "options": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "combinedCharacterLimit": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "handwritingStyles": {
      +                    "items": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "id": {
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "imageUrl": {
      +                          "format": "uri",
      +                          "type": "string"
      +                        },
      +                        "label": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "id",
      +                        "label",
      +                        "imageUrl"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "maxMessageLength": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "maxWishesLength": {
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "previewKind": {
      +                    "const": "design_and_style_samples"
      +                  },
      +                  "size": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "handwritingStyles",
      +                  "maxMessageLength",
      +                  "maxWishesLength",
      +                  "combinedCharacterLimit",
      +                  "size",
      +                  "previewKind"
      +                ],
      +                "type": "object"
      +              },
      +              "provider": {
      +                "const": "handwrytten"
      +              },
      +              "requiresDocument": {
      +                "const": false
      +              },
      +              "service": {
      +                "const": "handwritten"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "name",
      +              "description",
      +              "provider",
      +              "service",
      +              "imageUrl",
      +              "currency",
      +              "available",
      +              "requiresDocument",
      +              "options"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "data"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "error": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "code": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "details": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "addressRole": {
      +                  "enum": [
      +                    "recipient",
      +                    "sender"
      +                  ]
      +                },
      +                "canSendAsEntered": {
      +                  "type": "boolean"
      +                }
      +              },
      +              "required": [
      +                "addressRole",
      +                "canSendAsEntered"
      +              ],
      +              "type": "object"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "code",
      +            "message"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "error"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the bar is lower. The description nonetheless adds a valuable behavioral caveat — presence in the list does not mean the product can be ordered — and discloses the shape of the returned data (identifiers, descriptions, images, per-item availability). No auth or rate-limit context, hence not a 5.

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?

Three short sentences, front-loaded with the return contract, then the availability caveat, then the negative boundary. Every sentence earns its place and there is no filler.

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?

With no output schema, the description compensates by enumerating the returned fields, and with only one low-coverage parameter it explains the service value. For a read-only browse tool, nothing an agent needs to call it correctly 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?

The single 'service' parameter has 0% schema description coverage and only an enum of ['handwritten'], so the description must carry the load — and it does, clarifying that the service currently resolves to handwritten cards. It stops short of naming the parameter or stating that 'handwritten' is the only accepted value, so the mapping is inferable rather than explicit.

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 (returns configured products for a service) and names the concrete scope ('currently handwritten cards') plus the fields returned. The closing 'Does not create a quote, order or payment' explicitly draws the boundary against postedly_quote, postedly_orders and postedly_checkout, so an agent can select it without opening a sibling schema.

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?

Gives clear usage context via the negative boundary — it does not create a quote, order or payment — which implicitly routes transactional intents to the sibling tools. It also warns that a listed product is not necessarily orderable, a real selection condition, but it never states positively when to prefer this over postedly_services or postedly_quote.

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