# Mediawork

> Search Mediawork's directory of post-production and distribution vendors, plus FAQ and plans.

- name: io.mediawork/mediawork
- version: 0.1.1
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.mediawork%2Fmediawork
- tools: https://api.protogrid.dev/v1/servers/io.mediawork%2Fmediawork/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "mediawork": {
      "type": "http",
      "url": "https://mcp.mediawork.io/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-100% ~updated-74d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 83/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: list_blog_posts (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_facility (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); search_faq (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,297 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 10, about 1,297 tokens to load them all
- tool set hash: d9bb49021c36687a50e9318d35b48f2a
- tools last changed: 2026-10-07T16:19:20.225Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.mediawork/mediawork.svg)](https://protogrid.dev/servers/io.mediawork/mediawork)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-07 `get_plans` changed (description)
  - before: Mediawork's subscription plans: what each includes, and its prices. Prices are published in several currencies — pass `currency` to return just one.
  - after: Mediawork's subscription plans: what each includes, and its prices, plus `comparison`, a feature-by-feature table of every plan. Prices are published in several currencies — pass `currency` to return just one.

Full history: https://api.protogrid.dev/v1/servers/io.mediawork%2Fmediawork/changes

## Remotes

- https://mcp.mediawork.io/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (10)

- `fetch`: Retrieve the full contents of one record by the `id` returned from `search`.
- `get_blog_post`: The full body of one published blog post, as markdown.
- `get_facility`: The full public profile for one vendor: services offered, creatives on the team and what each of them does, production types, rooms and spaces, and addresses. Takes the `companySlug` and `facilitySlug` pair returned by search_facilities.
- `get_plans`: Mediawork's subscription plans: what each includes, and its prices, plus `comparison`, a feature-by-feature table of every plan. Prices are published in several currencies — pass `currency` to return just one.
- `list_blog_posts`: Published posts from the Mediawork blog, newest first. Use get_blog_post with a returned `slug` to read one in full.
- `list_places`: Cities, states and countries that have at least one vendor listed, with a count of how many. Use a place `slug` as the `place` argument to search_facilities.
- `list_services`: The service categories vendors on Mediawork offer, such as Editorial, Sound Post or Visual Effects. Each has a uuid — pass it as `service` to search_facilities to filter the directory to vendors offering that service. Call this first when a question is about a kind of work.
- `search`: Search everything Mediawork publishes — vendor directory listings, FAQ entries and blog posts — and return matching records as {id, title, url}. Pass an `id` to `fetch` to read one in full. If your client supports them, the dedicated tools (search_facilities, search_faq, …) give richer, filterable results.
- `search_facilities`: Search publicly listed post-production facilities, distribution vendors and creative companies. Filter by free text, by place slug (from list_places) and by service uuid (from list_services). To find vendors somewhere, prefer `place`; a `query` naming a place is treated as one anyway, and the response reports it as `resolvedPlace`. Results are paginated; when `hasMore` is true, call again with the returned `nextOffset`.
- `search_faq`: Mediawork's published FAQ, grouped by category. With a query, returns matching questions and their answers; without one, returns every question so you can pick which to search for.
