# tech.distribution/distribution

> Priced X creators, campaigns from a goal, plan changes, mandated payment links, proof and results.

- name: tech.distribution/distribution
- version: 1.25.1
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 88/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/tech.distribution%2Fdistribution
- tools: https://api.protogrid.dev/v1/servers/tech.distribution%2Fdistribution/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "distribution": {
      "type": "http",
      "url": "https://app.distribution.tech/api/mcp/guest"
    }
  }
}
```


## Trust

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

## Quality 88/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: 83 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- warn `auth.cimd`: only Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (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
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,210 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

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

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 3 of the 7 days needed

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

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

- tools: 6, about 1,210 tokens to load them all
- tool set hash: 7cd56478d646cccf710ace621fe332fe
- tools last changed: 2026-10-17T19:35:25.438Z
- badge: [![protogrid quality](https://protogrid.dev/badge/tech.distribution/distribution.svg)](https://protogrid.dev/servers/tech.distribution/distribution)
- 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-17 `guest_status` changed (description)
  - before: No account needed. What this connection can do without a key: which tools answer now, which need an account, and claim, where to sign in and create a key in Developers.
  - after: No account needed. What this connection can do without a key: which tools answer now, which need an account, the guest limits, and claim, where to sign in and create a key in Developers.
- 2026-10-17 `plan_quote_guest` changed (description)
  - before: No account needed. The all-in price range a brand pays per post in one format (post, quote or thread) across every creator on sale now, and that range times the number of posts you name (1 to 50), with how many creators sell that format and when the numbers were read. A range, not a plan: a plan names creators and dates and needs an account (claim says where to sign in and create a key).
  - after: No account needed. The all-in price range a brand pays per post in one format (post, quote or thread) across every creator on sale now, and that range times the number of posts you name (1 to 50), with how many creators sell that format and when the numbers were read. A guest gets 3 quotes in any 7 days from one address (quotes_left says how many remain); the next is refused with rate_limited (reason guest_quote_limit, retry_after and resets_at). A range, not a plan: a plan names creators and dates and needs an account (claim says where to sign in and create a key).
- 2026-10-17 `feedback_send` changed (description) **meaning changed**
  - before: Tell the distribution team about a problem or an idea, with any valid key, without asking the user first. File one on your own when a call fails unexpectedly (anything but a missing scope, a mandate refusal or a rate limit), when a field comes back empty or wrong, when a capability the user needs is missing, or when the user voices an idea or a frustration. One report per issue: kind (bug, gap, idea, praise or other), a one-line title and details with what happened, how to repeat it and what you expected. Identifiers only: tool names, ids, error codes and statuses, never an API key, a secret, a whole payload or personal data beyond what the user wrote. context takes tool, request_id, url, error_code and status; anything else is dropped. Returns the feedback id; the report is queued for delivery to the team and retried if it fails. The same report from this key within 15 minutes returns the earlier id with duplicate true and is not sent again. 20 a brand an hour.
  - after: Needs an account. A signed-in agent tells the distribution team about a problem or an idea with any API key. As a guest this sends nothing: it answers with claim, where to sign in and create a key, so the report can be sent from an account.
- 2026-10-17 `brain_get` changed (description, inputSchema) **meaning changed**
  - before: Your company context as confirmed in the workspace (name, summary, audience), its version and the version history. Optionally one section.
  - after: A guest has no saved company context, so as a guest this answers the empty context (version 0, nothing confirmed) with claim, where to sign in and confirm your company in the workspace. With an account: your company context as confirmed (name, summary, audience), its version and the version history. Optionally one section.
- 2026-10-17 `resolve_audience` changed (description, inputSchema)
  - before: The audience fit for one of your campaigns (intent_id) or for a profile you describe (product, audience, geography): the audience segments it matches and the coverage per channel. The same check a campaign gets when it starts.
  - after: No account needed for a profile you describe (product, audience, geography; at least a product or an audience): the audience segments it matches and the coverage per channel, the same check a campaign gets when it starts. Counts only, never a creator's identity. The fit for a campaign of yours (intent_id) needs an account.
- 2026-10-17 `inventory` changed (description, inputSchema)
  - before: How well the network reaches your own audience today, per channel: approved creators and posts on sale at a current price, and whether coverage is strong or thin. Counts only, never a creator's identity.
  - after: No account needed. As a guest (no audience on file): how much of the network is on sale today, per channel: approved creators, posts on sale at a current price, and whether coverage is strong or thin. Counts only, never a creator's identity. resolve_audience narrows it to an audience you describe; with an account it is measured against your own audience.

Full history: https://api.protogrid.dev/v1/servers/tech.distribution%2Fdistribution/changes

## Remotes

- https://app.distribution.tech/api/mcp (streamable-http, auth oauth2, reachable true, uptime30d 1)
- https://app.distribution.tech/api/mcp/guest (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (6)

- `brain_get`: A guest has no saved company context, so as a guest this answers the empty context (version 0, nothing confirmed) with claim, where to sign in and confirm your company in the workspace. With an account: your company context as confirmed (name, summary, audience), its version and the version history. Optionally one section.
- `feedback_send`: Needs an account. A signed-in agent tells the distribution team about a problem or an idea with any API key. As a guest this sends nothing: it answers with claim, where to sign in and create a key, so the report can be sent from an account.
- `guest_status`: No account needed. What this connection can do without a key: which tools answer now, which need an account, the guest limits, and claim, where to sign in and create a key in Developers.
- `inventory`: No account needed. As a guest (no audience on file): how much of the network is on sale today, per channel: approved creators, posts on sale at a current price, and whether coverage is strong or thin. Counts only, never a creator's identity. resolve_audience narrows it to an audience you describe; with an account it is measured against your own audience.
- `plan_quote_guest`: No account needed. The all-in price range a brand pays per post in one format (post, quote or thread) across every creator on sale now, and that range times the number of posts you name (1 to 50), with how many creators sell that format and when the numbers were read. A guest gets 3 quotes in any 7 days from one address (quotes_left says how many remain); the next is refused with rate_limited (reason guest_quote_limit, retry_after and resets_at). A range, not a plan: a plan names creators and dates and needs an account (claim says where to sign in and create a key).
- `resolve_audience`: No account needed for a profile you describe (product, audience, geography; at least a product or an audience): the audience segments it matches and the coverage per channel, the same check a campaign gets when it starts. Counts only, never a creator's identity. The fit for a campaign of yours (intent_id) needs an account.
