Graunt

The agent-native marketplace for AI data: search listings and read their price and rights.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
74%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,383Tokens (tool definitions)
~4.0 KBTypical response size
Significant attention impact (2.64% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "marketplace": {
      "url": "https://api.graunt.com/v1/mcp"
    }
  }
}

Remote endpoints

https://api.graunt.com/v1/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search(query, limit, ai_generation, kind, video_subject, ...)

Search the Graunt catalog of evaluated data packets. Returns matching packets with their id, title, and public URL.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search keywords."
    },
    "limit": {
      "type": "number",
      "description": "Max results; default 20, cap 50."
    },
    "ai_generation": {
      "type": "string",
      "enum": [
        "NONE",
        "PARTIAL",
        "FULL"
      ],
      "description": "Keep only packets whose seller declares this AI-generation extent: NONE (not AI-generated), PARTIAL or FULL. A seller declaration, not a Graunt finding."
    },
    "kind": {
      "type": "string",
      "enum": [
        "video"
      ],
      "description": "Only listings of this kind. video: video listings."
    },
    "video_subject": {
      "type": "string",
      "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"
      ],
      "description": "Only video listings whose footage shows this subject."
    },
    "camera_view": {
      "type": "string",
      "enum": [
        "FIRST_PERSON",
        "AERIAL_OR_DRONE",
        "VEHICLE_OR_DASHCAM",
        "FIXED_CAMERA",
        "OTHER"
      ],
      "description": "Only video listings shot from this camera view."
    }
  },
  "required": [
    "query"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "url"
        ]
      }
    }
  },
  "required": [
    "results"
  ]
}
🟢fetch(id)

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

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The packet listing id."
    }
  },
  "required": [
    "id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string"
        },
        "asset_class": {
          "type": "string"
        },
        "price_cents": {
          "type": "integer",
          "minimum": 0
        },
        "currency": {
          "type": "string",
          "enum": [
            "usd"
          ]
        },
        "acquisition_mode": {
          "type": "string"
        },
        "registration_required": {
          "type": "boolean"
        },
        "payment_required": {
          "type": "boolean"
        },
        "free_access_grant_url": {
          "type": "string",
          "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."
        },
        "files": {
          "type": "array",
          "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": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "format": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "size_bytes": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0
              },
              "inline": {
                "type": "string",
                "enum": [
                  "FULL",
                  "PARTIAL",
                  "NONE"
                ]
              },
              "inline_bytes": {
                "type": "integer",
                "minimum": 0
              },
              "download_url": {
                "type": "string"
              },
              "download_expires_at": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "format",
              "size_bytes",
              "inline",
              "inline_bytes"
            ]
          }
        },
        "files_not_listed": {
          "type": "integer",
          "minimum": 1,
          "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."
        },
        "files_note": {
          "type": "string",
          "description": "Why the files could not be returned right now (for example a rate limit), in plain words."
        },
        "publisher": {
          "type": "string"
        },
        "ai_generation": {
          "type": "object",
          "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": {
            "extent": {
              "type": "string",
              "enum": [
                "NONE",
                "PARTIAL",
                "FULL"
              ]
            },
            "share_percent": {
              "type": "integer",
              "minimum": 1,
              "maximum": 99
            },
            "description": {
              "type": "string"
            }
          },
          "required": [
            "extent"
          ]
        },
        "video": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "media_kind",
            "subjects",
            "camera_views",
            "measured",
            "per_hour",
            "seller_declared",
            "barred_uses"
          ],
          "properties": {
            "media_kind": {
              "type": "string",
              "enum": [
                "VIDEO"
              ]
            },
            "subjects": {
              "type": "array",
              "maxItems": 15,
              "items": {
                "type": "string",
                "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"
                ]
              },
              "description": "What the footage shows, from the closed video-subject list. Filter with video_subject on GET /v1/listings."
            },
            "camera_views": {
              "type": "array",
              "maxItems": 5,
              "items": {
                "type": "string",
                "enum": [
                  "FIRST_PERSON",
                  "AERIAL_OR_DRONE",
                  "VEHICLE_OR_DASHCAM",
                  "FIXED_CAMERA",
                  "OTHER"
                ]
              },
              "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."
            },
            "measured": {
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": false,
              "required": [
                "eligible_duration_seconds",
                "hours"
              ],
              "description": "What Graunt measured from the files; null when it measured none.",
              "properties": {
                "eligible_duration_seconds": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Seconds of video a buyer of the whole listing receives and pays for."
                },
                "hours": {
                  "type": "number",
                  "minimum": 0,
                  "description": "The same length in hours, to one decimal place."
                }
              }
            },
            "per_hour": {
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": false,
              "required": [
                "rate_class",
                "price_per_hour_cents",
                "currency",
                "volume_tiers",
                "tier_applied",
                "subtotal_cents",
                "discount_cents",
                "price_cents"
              ],
              "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": {
                "rate_class": {
                  "type": "string",
                  "enum": [
                    "BASIC",
                    "STANDARD",
                    "PREMIUM",
                    "NATIVE_1080P",
                    "NATIVE_4K",
                    "ARCHIVAL"
                  ]
                },
                "price_per_hour_cents": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The seller's rate."
                },
                "currency": {
                  "const": "usd"
                },
                "volume_tiers": {
                  "type": "array",
                  "maxItems": 5,
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "min_hours",
                      "discount_bps"
                    ],
                    "properties": {
                      "min_hours": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "Hours in the order from which the tier applies."
                      },
                      "discount_bps": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 9000,
                        "description": "Discount in basis points (1000 = 10%)."
                      }
                    }
                  },
                  "description": "This listing's volume schedule, lowest tier first: a term of the listing, recorded in every purchase. The seller funds each discount."
                },
                "tier_applied": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "required": [
                    "min_hours",
                    "discount_bps"
                  ],
                  "properties": {
                    "min_hours": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Hours in the order from which the tier applies."
                    },
                    "discount_bps": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9000,
                      "description": "Discount in basis points (1000 = 10%)."
                    }
                  },
                  "description": "The tier this listing's hours reach; null when they reach none."
                },
                "subtotal_cents": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "floor(eligible_duration_seconds × price_per_hour_cents / 3600)."
                },
                "discount_cents": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "floor(subtotal_cents × the applied tier's discount_bps / 10000)."
                },
                "price_cents": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The listing price, subtotal_cents minus discount_cents: what checkout charges before any sales tax."
                }
              }
            },
            "seller_declared": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "depicts_person",
                "sublicense",
                "attestations"
              ],
              "description": "The seller's declarations, kept apart from what Graunt measured. Never Graunt's findings.",
              "properties": {
                "depicts_person": {
                  "type": "boolean",
                  "description": "Whether the seller says people appear in the footage."
                },
                "sublicense": {
                  "type": "string",
                  "enum": [
                    "NONE",
                    "ONE_CLIENT_PREAUTHORIZED"
                  ],
                  "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."
                },
                "attestations": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "additionalProperties": false,
                  "description": "What the seller declares about the material, recorded as the seller declared it. Graunt does not compute these.",
                  "properties": {
                    "people_on_camera": {
                      "type": "string",
                      "enum": [
                        "INCIDENTAL",
                        "SUBJECT"
                      ],
                      "description": "How people appear: SUBJECT (the footage is about them) or INCIDENTAL (in passing, in a crowd)."
                    },
                    "person_release_status": {
                      "type": "string",
                      "enum": [
                        "NOT_APPLICABLE",
                        "SELLER_ATTESTED",
                        "EVIDENCE_ON_FILE",
                        "INCOMPLETE"
                      ],
                      "description": "Releases from the people shown. INCOMPLETE is allowed only when people appear incidentally."
                    },
                    "identifiable_minors": {
                      "type": "boolean",
                      "description": "Whether anyone under 16 can be identified in the content."
                    },
                    "guardian_releases_on_file": {
                      "type": "boolean",
                      "description": "Whether the releases on file include a parent's or guardian's release for each minor shown."
                    },
                    "third_party_ip_status": {
                      "type": "string",
                      "enum": [
                        "NOT_APPLICABLE",
                        "SELLER_ATTESTED",
                        "EVIDENCE_ON_FILE",
                        "INCOMPLETE"
                      ],
                      "description": "Third-party marks and designs."
                    },
                    "music_audio_rights_status": {
                      "type": "string",
                      "enum": [
                        "NOT_APPLICABLE",
                        "SELLER_ATTESTED",
                        "EVIDENCE_ON_FILE",
                        "INCOMPLETE"
                      ],
                      "description": "Music and audio."
                    },
                    "event_or_venue_rights_status": {
                      "type": "string",
                      "enum": [
                        "NOT_APPLICABLE",
                        "SELLER_ATTESTED",
                        "EVIDENCE_ON_FILE",
                        "INCOMPLETE"
                      ],
                      "description": "Events and venues."
                    },
                    "property_release_status": {
                      "type": "string",
                      "enum": [
                        "NOT_APPLICABLE",
                        "SELLER_ATTESTED",
                        "EVIDENCE_ON_FILE",
                        "INCOMPLETE"
                      ],
                      "description": "Private property shown."
                    },
                    "native_resolution": {
                      "type": "string",
                      "enum": [
                        "SD",
                        "HD_720P",
                        "FHD_1080P",
                        "QHD_1440P",
                        "UHD_4K",
                        "UHD_8K"
                      ],
                      "description": "The lowest native resolution in the listing."
                    }
                  }
                }
              }
            },
            "barred_uses": {
              "type": "array",
              "maxItems": 4,
              "items": {
                "type": "string",
                "enum": [
                  "person_likeness_use",
                  "voice_clone",
                  "deepfake_use",
                  "biometric_identification"
                ]
              },
              "description": "Uses no license permits for this footage, whatever else the listing allows. Present when the footage shows people."
            }
          },
          "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."
        },
        "rights_passport_summary": {
          "type": "object",
          "properties": {
            "license_family": {
              "type": "string"
            },
            "training_allowed": {
              "type": "boolean"
            },
            "redistribution_allowed": {
              "type": "boolean"
            },
            "citation_required": {
              "type": "boolean"
            },
            "no_train": {
              "type": "boolean"
            },
            "no_redistribute": {
              "type": "boolean"
            },
            "personal_data_sensitive": {
              "type": "boolean"
            }
          },
          "required": [
            "license_family",
            "training_allowed",
            "redistribution_allowed",
            "citation_required",
            "no_train",
            "no_redistribute",
            "personal_data_sensitive"
          ]
        }
      },
      "required": [
        "price_cents",
        "currency",
        "acquisition_mode",
        "registration_required",
        "payment_required",
        "rights_passport_summary"
      ]
    }
  },
  "required": [
    "id",
    "title",
    "text",
    "url",
    "metadata"
  ]
}
🟢search_assets(q, limit, ai_generation, kind, video_subject, ...)

Search the public catalog of evaluated packets and listings. Returns paginated matches.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Search query string."
    },
    "limit": {
      "type": "number",
      "description": "Max rows; default 20, cap 100."
    },
    "ai_generation": {
      "type": "string",
      "enum": [
        "NONE",
        "PARTIAL",
        "FULL"
      ],
      "description": "Keep only packets whose seller declares this AI-generation extent: NONE (not AI-generated), PARTIAL or FULL. A seller declaration, not a Graunt finding."
    },
    "kind": {
      "type": "string",
      "enum": [
        "video"
      ],
      "description": "Only listings of this kind. video: video listings."
    },
    "video_subject": {
      "type": "string",
      "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"
      ],
      "description": "Only video listings whose footage shows this subject."
    },
    "camera_view": {
      "type": "string",
      "enum": [
        "FIRST_PERSON",
        "AERIAL_OR_DRONE",
        "VEHICLE_OR_DASHCAM",
        "FIXED_CAMERA",
        "OTHER"
      ],
      "description": "Only video listings shot from this camera view."
    }
  }
}
🟢get_asset(listing_id)

Read a single listing by id. Public projection.

Input Schema

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "listing_id"
  ]
}
🟢get_agent_commerce_manifest(listing_id)

Read the agent commerce manifest for a listing: price, rights, and how to buy it.

Input Schema

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "listing_id"
  ]
}
🟢get_asset_manifest(listing_id)

Read the canonical asset manifest (sha256-stamped).

Input Schema

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "listing_id"
  ]
}
🟢get_bundle_manifest(listing_id)

Read the per-asset bundle inventory: every delivered file with role, format, size and content hash, plus counts that name the population each one counted.

Input Schema

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "listing_id"
  ]
}
🟢meta_capabilities

Read /v1/meta/capabilities — the authoritative capability state map.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢meta_refinery_support_matrix

Read /v1/meta/refinery-support-matrix: the source types Graunt accepts and what the Refinery does with each. Every upload gets deterministic extraction; a model drafts only the listing fields a seller leaves empty.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools