Skip to main content
Glama

Read a Graunt packet

fetch
Read-only

Read one Graunt catalog packet by id. Returns its title, description, price and whether an account is needed, its seller-declared rights, and its public URL. A free packet that needs no account also returns its files: small text files (CSV, JSON, Markdown, text and similar) in the text, and a short-lived download link for each listed file in metadata.files (at most 100 per fetch; files_not_listed counts the rest). Images, audio and video carry no link and download from the packet's public URL. A video listing also returns metadata.video: its subjects, measured hours, per-hour price with volume tiers, and the seller's declarations.

Input Schema

NameRequiredDescriptionDefault
idYesThe packet listing id.

Output Schema

NameRequiredDescriptionDefault
idYes
urlYes
textYes
titleYes
metadataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / metadata / properties / samples
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "What anyone may look at before buying, with the sentence shown beside every sample. files: sample files Graunt holds, each with the API path that answers with a link of at most 5 minutes. detail_fields: the listing detail's other sample fields, by name. Absent when the listing has no samples.",
      +  "properties": {
      +    "detail_fields": {
      +      "items": {
      +        "enum": [
      +          "preview",
      +          "content_excerpt",
      +          "preview_clips"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "files": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "bytes": {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "content_path": {
      +            "type": "string"
      +          },
      +          "content_type": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "format": "uuid",
      +            "type": "string"
      +          },
      +          "kind": {
      +            "enum": [
      +              "IMAGE",
      +              "VIDEO",
      +              "AUDIO",
      +              "TEXT",
      +              "FILE"
      +            ],
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "bytes",
      +          "content_type",
      +          "kind",
      +          "content_path"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "notice": {
      +      "enum": [
      +        "Samples are for evaluating this listing. The license to use the data comes with the purchase."
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "notice",
      +    "files",
      +    "detail_fields"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / metadata / properties / video / properties / per_hour / properties / categories
      Added value: +{
      +  "description": "Present when the listing can be bought by category: each category's measured hours and its price bought on its own, at the listing's rate with the tier its own hours reach. An order of several categories is priced on their combined hours; every category is the whole listing at price_cents.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "eligible_duration_seconds": {
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "hours": {
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "price_cents": {
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "subject": {
      +        "enum": [
      +          "PEOPLE_TALKING",
      +          "PEOPLE_IN_ACTION",
      +          "PEOPLE_HANDLING_OBJECTS",
      +          "HOW_TO_AND_TASKS",
      +          "SPORTS_AND_FITNESS",
      +          "MUSIC_AND_PERFORMANCE",
      +          "ANIMALS",
      +          "NATURE",
      +          "CITIES_AND_BUILDINGS",
      +          "DRIVING_AND_TRANSPORTATION",
      +          "INDUSTRY_AND_WORK_SITES",
      +          "FOOD_AND_COOKING",
      +          "PRODUCTS_AND_RETAIL",
      +          "ANIMATION",
      +          "VIDEO_GAMES"
      +        ],
      +        "type": "string"
      +      },
      +      "tier_applied": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "discount_bps": {
      +            "description": "Discount in basis points (1000 = 10%).",
      +            "maximum": 9000,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "min_hours": {
      +            "description": "Hours in the order from which the tier applies.",
      +            "minimum": 1,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "min_hours",
      +          "discount_bps"
      +        ],
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "subject",
      +      "eligible_duration_seconds",
      +      "hours",
      +      "tier_applied",
      +      "price_cents"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 15,
      +  "minItems": 2,
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / metadata / properties / delivery_methods
      Added value: +{
      +  "description": "How the files reach a buyer, one row per way: the method and the source the files come from (GRAUNT: storage Graunt holds).",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "method": {
      +        "enum": [
      +          "KEY_ACCESS",
      +          "DOWNLOAD"
      +        ],
      +        "type": "string"
      +      },
      +      "source": {
      +        "enum": [
      +          "GRAUNT",
      +          "S3"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "method",
      +      "source"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  4. Changed2 schema fields changed
    • changedOutput schema / properties / metadata / properties / video / properties / seller_declared / properties / attestations / properties / identifiable_minors / description
      Previous value: -"Whether anyone under 16 can be identified in the content."New value: +"Whether anyone under 18 can be identified in the content."
    • addedOutput schema / properties / metadata / properties / video / properties / seller_declared / properties / attestations / properties / identifiable_minors_age
      Added value: +{
      +  "const": 18,
      +  "description": "The age identifiable_minors was answered against: 18. A false identifiable_minors counts only with it.",
      +  "type": "integer"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / metadata / properties / seller_hosted
      Added value: +{
      +  "description": "Present only on a listing whose files are delivered from the seller's storage after purchase: file count, bytes, media facts, delivery modes and samples. Never a link to a file.",
      +  "properties": {
      +    "access_period_days": {
      +      "description": "Days the buyer can get the files once they are available; the buyer copies the set within them.",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "delivered_from": {
      +      "enum": [
      +        "seller_storage"
      +      ],
      +      "type": "string"
      +    },
      +    "delivery_modes": {
      +      "description": "How the buyer can receive the files. LINKS: a download link per file.",
      +      "items": {
      +        "enum": [
      +          "LINKS"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "file_count": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "media": {
      +      "description": "Null when the set holds no audio or video. Frame rates are frames per second; clip lengths are whole seconds.",
      +      "properties": {
      +        "files_with_audio": {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "max_clip_seconds": {
      +          "minimum": 0,
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "max_fps": {
      +          "minimum": 0,
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "max_height": {
      +          "minimum": 0,
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "max_width": {
      +          "minimum": 0,
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "media_files": {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "min_clip_seconds": {
      +          "minimum": 0,
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "min_fps": {
      +          "minimum": 0,
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "min_height": {
      +          "minimum": 0,
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "min_width": {
      +          "minimum": 0,
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "video_codecs": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "video_files": {
      +          "minimum": 0,
      +          "type": "integer"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "samples": {
      +      "description": "Sample files a buyer can look at before buying.",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "samples_url": {
      +      "description": "The public route that lists the samples.",
      +      "type": "string"
      +    },
      +    "spec_check": {
      +      "description": "Files Graunt read at random from the full set and compared with the manifest's media facts, and how many matched. Null when none were read.",
      +      "properties": {
      +        "checked": {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "matched": {
      +          "minimum": 0,
      +          "type": "integer"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "total_bytes": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "total_duration_seconds": {
      +      "description": "Seconds of audio and video in the set.",
      +      "minimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "delivered_from",
      +    "file_count",
      +    "total_bytes",
      +    "total_duration_seconds",
      +    "media",
      +    "delivery_modes",
      +    "samples",
      +    "samples_url",
      +    "access_period_days",
      +    "spec_check"
      +  ],
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • changedOutput schema / properties / metadata / properties / video / properties / per_hour / properties / price_cents / description
      Previous value: -"The listing price, subtotal_cents minus discount_cents: what checkout charges before the processing fee."New value: +"The listing price, subtotal_cents minus discount_cents: what checkout charges before any sales tax."
  7. Changed2 schema fields changed
    • addedOutput schema / properties / metadata / properties / ai_generation
      Added value: +{
      +  "description": "The seller's AI-generation declaration: extent NONE (not AI-generated), PARTIAL (with share_percent and description) or FULL. A seller declaration, not a Graunt finding; absent when the seller has not declared.",
      +  "properties": {
      +    "description": {
      +      "type": "string"
      +    },
      +    "extent": {
      +      "enum": [
      +        "NONE",
      +        "PARTIAL",
      +        "FULL"
      +      ],
      +      "type": "string"
      +    },
      +    "share_percent": {
      +      "maximum": 99,
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "extent"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / metadata / properties / video
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present only on a video listing: subjects, the hours Graunt measured, the per-hour price with its volume tiers, and the seller's declarations (people on camera, releases, sublicense), kept apart.",
      +  "properties": {
      +    "barred_uses": {
      +      "description": "Uses no license permits for this footage, whatever else the listing allows. Present when the footage shows people.",
      +      "items": {
      +        "enum": [
      +          "person_likeness_use",
      +          "voice_clone",
      +          "deepfake_use",
      +          "biometric_identification"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 4,
      +      "type": "array"
      +    },
      +    "camera_views": {
      +      "description": "How the footage was shot, from the closed camera-view list; empty when none was given. Filter with camera_view on GET /v1/listings.",
      +      "items": {
      +        "enum": [
      +          "FIRST_PERSON",
      +          "AERIAL_OR_DRONE",
      +          "VEHICLE_OR_DASHCAM",
      +          "FIXED_CAMERA",
      +          "OTHER"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 5,
      +      "type": "array"
      +    },
      +    "measured": {
      +      "additionalProperties": false,
      +      "description": "What Graunt measured from the files; null when it measured none.",
      +      "properties": {
      +        "eligible_duration_seconds": {
      +          "description": "Seconds of video a buyer of the whole listing receives and pays for.",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "hours": {
      +          "description": "The same length in hours, to one decimal place.",
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "eligible_duration_seconds",
      +        "hours"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "media_kind": {
      +      "enum": [
      +        "VIDEO"
      +      ],
      +      "type": "string"
      +    },
      +    "per_hour": {
      +      "additionalProperties": false,
      +      "description": "The per-hour price, or null when the listing has a flat price. The seller sets the rate. The volume tier is applied automatically from the hours in the order; there is no code and nothing to request. All amounts are integer cents.",
      +      "properties": {
      +        "currency": {
      +          "const": "usd"
      +        },
      +        "discount_cents": {
      +          "description": "floor(subtotal_cents × the applied tier's discount_bps / 10000).",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "price_cents": {
      +          "description": "The listing price, subtotal_cents minus discount_cents: what checkout charges before the processing fee.",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "price_per_hour_cents": {
      +          "description": "The seller's rate.",
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "rate_class": {
      +          "enum": [
      +            "BASIC",
      +            "STANDARD",
      +            "PREMIUM",
      +            "NATIVE_1080P",
      +            "NATIVE_4K",
      +            "ARCHIVAL"
      +          ],
      +          "type": "string"
      +        },
      +        "subtotal_cents": {
      +          "description": "floor(eligible_duration_seconds × price_per_hour_cents / 3600).",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "tier_applied": {
      +          "additionalProperties": false,
      +          "description": "The tier this listing's hours reach; null when they reach none.",
      +          "properties": {
      +            "discount_bps": {
      +              "description": "Discount in basis points (1000 = 10%).",
      +              "maximum": 9000,
      +              "minimum": 1,
      +              "type": "integer"
      +            },
      +            "min_hours": {
      +              "description": "Hours in the order from which the tier applies.",
      +              "minimum": 1,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "min_hours",
      +            "discount_bps"
      +          ],
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "volume_tiers": {
      +          "description": "This listing's volume schedule, lowest tier first: a term of the listing, recorded in every purchase. The seller funds each discount.",
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "discount_bps": {
      +                "description": "Discount in basis points (1000 = 10%).",
      +                "maximum": 9000,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "min_hours": {
      +                "description": "Hours in the order from which the tier applies.",
      +                "minimum": 1,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "min_hours",
      +              "discount_bps"
      +            ],
      +            "type": "object"
      +          },
      +          "maxItems": 5,
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "rate_class",
      +        "price_per_hour_cents",
      +        "currency",
      +        "volume_tiers",
      +        "tier_applied",
      +        "subtotal_cents",
      +        "discount_cents",
      +        "price_cents"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "seller_declared": {
      +      "additionalProperties": false,
      +      "description": "The seller's declarations, kept apart from what Graunt measured. Never Graunt's findings.",
      +      "properties": {
      +        "attestations": {
      +          "additionalProperties": false,
      +          "description": "What the seller declares about the material, recorded as the seller declared it. Graunt does not compute these.",
      +          "properties": {
      +            "event_or_venue_rights_status": {
      +              "description": "Events and venues.",
      +              "enum": [
      +                "NOT_APPLICABLE",
      +                "SELLER_ATTESTED",
      +                "EVIDENCE_ON_FILE",
      +                "INCOMPLETE"
      +              ],
      +              "type": "string"
      +            },
      +            "guardian_releases_on_file": {
      +              "description": "Whether the releases on file include a parent's or guardian's release for each minor shown.",
      +              "type": "boolean"
      +            },
      +            "identifiable_minors": {
      +              "description": "Whether anyone under 16 can be identified in the content.",
      +              "type": "boolean"
      +            },
      +            "music_audio_rights_status": {
      +              "description": "Music and audio.",
      +              "enum": [
      +                "NOT_APPLICABLE",
      +                "SELLER_ATTESTED",
      +                "EVIDENCE_ON_FILE",
      +                "INCOMPLETE"
      +              ],
      +              "type": "string"
      +            },
      +            "native_resolution": {
      +              "description": "The lowest native resolution in the listing.",
      +              "enum": [
      +                "SD",
      +                "HD_720P",
      +                "FHD_1080P",
      +                "QHD_1440P",
      +                "UHD_4K",
      +                "UHD_8K"
      +              ],
      +              "type": "string"
      +            },
      +            "people_on_camera": {
      +              "description": "How people appear: SUBJECT (the footage is about them) or INCIDENTAL (in passing, in a crowd).",
      +              "enum": [
      +                "INCIDENTAL",
      +                "SUBJECT"
      +              ],
      +              "type": "string"
      +            },
      +            "person_release_status": {
      +              "description": "Releases from the people shown. INCOMPLETE is allowed only when people appear incidentally.",
      +              "enum": [
      +                "NOT_APPLICABLE",
      +                "SELLER_ATTESTED",
      +                "EVIDENCE_ON_FILE",
      +                "INCOMPLETE"
      +              ],
      +              "type": "string"
      +            },
      +            "property_release_status": {
      +              "description": "Private property shown.",
      +              "enum": [
      +                "NOT_APPLICABLE",
      +                "SELLER_ATTESTED",
      +                "EVIDENCE_ON_FILE",
      +                "INCOMPLETE"
      +              ],
      +              "type": "string"
      +            },
      +            "third_party_ip_status": {
      +              "description": "Third-party marks and designs.",
      +              "enum": [
      +                "NOT_APPLICABLE",
      +                "SELLER_ATTESTED",
      +                "EVIDENCE_ON_FILE",
      +                "INCOMPLETE"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "depicts_person": {
      +          "description": "Whether the seller says people appear in the footage.",
      +          "type": "boolean"
      +        },
      +        "sublicense": {
      +          "description": "ONE_CLIENT_PREAUTHORIZED: the buyer may pass the data through to one client, named privately at purchase in sublicense_client, for that client's use within the license; the buyer makes no use of it for itself. The license itself stays non-transferable.",
      +          "enum": [
      +            "NONE",
      +            "ONE_CLIENT_PREAUTHORIZED"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "depicts_person",
      +        "sublicense",
      +        "attestations"
      +      ],
      +      "type": "object"
      +    },
      +    "subjects": {
      +      "description": "What the footage shows, from the closed video-subject list. Filter with video_subject on GET /v1/listings.",
      +      "items": {
      +        "enum": [
      +          "PEOPLE_TALKING",
      +          "PEOPLE_IN_ACTION",
      +          "PEOPLE_HANDLING_OBJECTS",
      +          "HOW_TO_AND_TASKS",
      +          "SPORTS_AND_FITNESS",
      +          "MUSIC_AND_PERFORMANCE",
      +          "ANIMALS",
      +          "NATURE",
      +          "CITIES_AND_BUILDINGS",
      +          "DRIVING_AND_TRANSPORTATION",
      +          "INDUSTRY_AND_WORK_SITES",
      +          "FOOD_AND_COOKING",
      +          "PRODUCTS_AND_RETAIL",
      +          "ANIMATION",
      +          "VIDEO_GAMES"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 15,
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "media_kind",
      +    "subjects",
      +    "camera_views",
      +    "measured",
      +    "per_hour",
      +    "seller_declared",
      +    "barred_uses"
      +  ],
      +  "type": "object"
      +}
  8. Changed3 schema fields changed
    • addedOutput schema / properties / metadata / properties / files
      Added value: +{
      +  "description": "Present when the packet downloads without an account: one entry per listed file (at most 100; files_not_listed counts the rest). inline says how much of the file the text shows (up to 200 KB of text in all); download_url works until download_expires_at. Images, audio and video carry no link here and download from the packet's public URL.",
      +  "items": {
      +    "properties": {
      +      "download_expires_at": {
      +        "type": "string"
      +      },
      +      "download_url": {
      +        "type": "string"
      +      },
      +      "format": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "inline": {
      +        "enum": [
      +          "FULL",
      +          "PARTIAL",
      +          "NONE"
      +        ],
      +        "type": "string"
      +      },
      +      "inline_bytes": {
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "size_bytes": {
      +        "minimum": 0,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "format",
      +      "size_bytes",
      +      "inline",
      +      "inline_bytes"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / metadata / properties / files_not_listed
      Added value: +{
      +  "description": "Present when the packet has more files than one fetch lists (100): how many more there are. They download from the packet's public URL.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / metadata / properties / files_note
      Added value: +{
      +  "description": "Why the files could not be returned right now (for example a rate limit), in plain words.",
      +  "type": "string"
      +}
  9. Changed3 schema fields changed
    • addedOutput schema / properties / metadata / properties
      Added value: +{
      +  "acquisition_mode": {
      +    "type": "string"
      +  },
      +  "asset_class": {
      +    "type": "string"
      +  },
      +  "category": {
      +    "type": "string"
      +  },
      +  "currency": {
      +    "enum": [
      +      "usd"
      +    ],
      +    "type": "string"
      +  },
      +  "free_access_grant_url": {
      +    "description": "Present only when the packet can be taken with no account: POST it for a short-lived grant, then GET the download_url in its response.",
      +    "type": "string"
      +  },
      +  "payment_required": {
      +    "type": "boolean"
      +  },
      +  "price_cents": {
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "publisher": {
      +    "type": "string"
      +  },
      +  "registration_required": {
      +    "type": "boolean"
      +  },
      +  "rights_passport_summary": {
      +    "properties": {
      +      "citation_required": {
      +        "type": "boolean"
      +      },
      +      "license_family": {
      +        "type": "string"
      +      },
      +      "no_redistribute": {
      +        "type": "boolean"
      +      },
      +      "no_train": {
      +        "type": "boolean"
      +      },
      +      "personal_data_sensitive": {
      +        "type": "boolean"
      +      },
      +      "redistribution_allowed": {
      +        "type": "boolean"
      +      },
      +      "training_allowed": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "license_family",
      +      "training_allowed",
      +      "redistribution_allowed",
      +      "citation_required",
      +      "no_train",
      +      "no_redistribute",
      +      "personal_data_sensitive"
      +    ],
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / properties / metadata / required
      Added value: +[
      +  "price_cents",
      +  "currency",
      +  "acquisition_mode",
      +  "registration_required",
      +  "payment_required",
      +  "rights_passport_summary"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "title",
      -  "text",
      -  "url"
      -]New value: +[
      +  "id",
      +  "title",
      +  "text",
      +  "url",
      +  "metadata"
      +]
  10. First observed

TDQS

B3.4/5.0
Behavior4/5

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

Beyond the readOnly/openWorld annotations, the description discloses real behavioral traits: a 100-file cap per fetch with files_not_listed as the overflow counter, short-lived download links, and the fact that images/audio/video carry no link and must be fetched from the public URL. That is genuine operational context an agent could not get from the annotations alone.

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

Conciseness3/5

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

Purpose is front-loaded in the first sentence, but the remaining sentences are a dense block of return-value detail that substantially duplicates the existing output schema. The 100-file cap and short-lived link earn their place; much of the rest is redundant.

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 and annotations covering the safety profile, the description goes further than required by explaining the file-listing and video-listing edge cases. Remaining gaps are minor: no mention of behavior when the id is unknown or invalid, and no clarification of packet versus asset/bundle terminology.

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?

Only one parameter (id), fully documented in the schema at 100% coverage, so the schema carries the semantics. The description adds nothing about id format, source, or whether it is a listing id versus another identifier type, matching the baseline of 3.

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 ('Read') and resource ('one Graunt catalog packet by id'), so the agent knows exactly what the call does. It does not, however, distinguish a 'packet' from the sibling concepts exposed by get_asset, get_asset_manifest, or get_bundle_manifest, so the agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no statement of when to use this instead of search, get_asset, or get_bundle_manifest, and no prerequisites or exclusions are given. Usage is only implied by the 'by id' phrasing, which assumes the agent already has an id from somewhere.

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