# made.show

> Designer portfolios on made.show. Find people, read their work, request work samples.

- name: show.made/portfolios
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 91/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/show.made%2Fportfolios
- tools: https://api.protogrid.dev/v1/servers/show.made%2Fportfolios/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "portfolios": {
      "type": "http",
      "url": "https://made.show/api/mcp"
    }
  }
}
```


## Trust

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

## Quality 91/100 (new)

### 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: 94 (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`: 8 of 8 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 2 of 8 tools declare all four hints; missing: get_profile (idempotentHint); search_people (idempotentHint); get_portfolio (idempotentHint); …
- pass `tools.token_cost`: about 2,071 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

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

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: 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: 8, about 2,071 tokens to load them all
- tool set hash: 30230cf84b45c9cb58120ce4b30ef0cc
- tools last changed: 2026-11-12T12:01:02.631Z
- badge: [![protogrid quality](https://protogrid.dev/badge/show.made/portfolios.svg)](https://protogrid.dev/servers/show.made/portfolios)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-12 `request_work_sample` changed (inputSchema)
- 2026-11-12 `publish_tailored_view` changed (inputSchema)
- 2026-11-12 `match_criteria` changed (inputSchema)
- 2026-11-12 `search_people` changed (inputSchema)
- 2026-11-11 `get_work_sample` changed (inputSchema)
- 2026-11-11 `request_work_sample` changed (inputSchema)
- 2026-11-11 `publish_tailored_view` changed (inputSchema)
- 2026-11-11 `match_criteria` changed (inputSchema)
- 2026-11-11 `search_people` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/show.made%2Fportfolios/changes

## Remotes

- https://made.show/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.9285714)

## Packages

_none_

## Tools (8)

- `get_portfolio`: The candidate's complete structured portfolio: experience, education, projects (problem / my part / approach / outcome / metrics / media), writing, references, languages and awards, plus computed facts like total experience and per-skill evidence. Pass `criteria` to also get an evidence map.
- `get_profile`: Start here whenever someone asks who a candidate is. Returns a ready-to-present introduction card (name, headline, current role, experience, strongest evidence, selected work, a quote) plus the underlying data. Present the card, then add one short paragraph relevant to the user's question.
- `get_project`: One project in full, by slug or id.
- `get_work_sample`: Status of a brief sent with request_work_sample (requested, accepted, declined or submitted), and the candidate's work once submitted: summary, approach, rationale, media and links. Use when the user asks whether the candidate has replied.
- `match_criteria`: Map your requirements to concrete evidence in the portfolio. Returns, per criterion, the matching projects/roles/education/writing (with ids you can use in publish_tailored_view), per-skill evidence, and gaps where no written evidence exists. Lexical and conservative: use your own judgment on top.
- `publish_tailored_view`: Compose a shareable portfolio page for your criteria, rendered in the candidate's own template. Each section is a criterion with the blocks (by kind + id from get_portfolio / match_criteria) that evidence it. You may add a short `note` per item explaining relevance; notes are labelled as AI-written. You cannot add new content: unknown ids are rejected. The candidate is notified.
- `request_work_sample`: Send a candidate a brief for a real work sample: what you need, the context and when you need it. Before sending, ask the user for anything missing (what they need, their company, their name and email) and show them the brief, since the candidate gets notified. The candidate accepts or declines in made.show and replies with the work and their reasoning. Returns a token: keep it in the conversation and pass it to get_work_sample to check the status or read the work.
- `search_people`: Find people across every public portfolio on made.show by free text (name with or without accents, headline, bio, role titles, organizations, skills), skills, location or availability. Returns short summaries with one suggested follow-up prompt each; call get_profile or get_portfolio for depth.
