# OODS Foundry

> OODS Foundry is an object-oriented design system that extends the one you already have.

- name: com.oods-foundry/foundry
- version: 0.11.2
- connection class: R0 (autonomous)
- trust: 95/100
- quality: 75/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.oods-foundry%2Ffoundry
- tools: https://api.protogrid.dev/v1/servers/com.oods-foundry%2Ffoundry/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "foundry": {
      "type": "http",
      "url": "https://oods-foundry.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 75/100 (good)

### 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: 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: 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`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 5,624 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 37 tool changes in 30 days
- fail `stability.rug_pull`: 16 tools kept their name but changed most of their description in 30 days; review before trusting them

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

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know @oods/foundry@0.11.2

- tools: 9, about 5,624 tokens to load them all
- tool set hash: 1e1d9c1e57ca83d5bb787c6e92ef464f
- tools last changed: 2026-10-12T01:31:11.882Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.oods-foundry/foundry.svg)](https://protogrid.dev/servers/com.oods-foundry/foundry)
- 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-12 `artifact_certify` changed (inputSchema)
- 2026-10-12 `viz_render` changed (inputSchema)
- 2026-10-12 `structured_data_fetch` changed (description, inputSchema) **meaning changed**
  - before: Read the tokens or manifest dataset, with its version, etag, sizeBytes and payload. includePayload false returns metadata only. listVersions lists available dates; version selects one, with a warning if an earlier date is used. ifNoneMatch accepts an etag and returns matched true without payload when unchanged. catalog_list reads components a page at a time.
  - after: Read the tokens or manifest dataset. Full data is the default; detail summary returns section counts and the first page call. page reads lossless JSON Pointer entries; pageSize defaults to 10, at most 100, also bounded by size. meta.next continues and meta.full requests full data. includePayload false returns metadata; listVersions lists dates, version selects one, and ifNoneMatch returns matched true without unchanged payload. catalog_list reads components.
- 2026-10-12 `catalog_list` changed (description, inputSchema)
  - before: Read components a page at a time. category, trait, context and status filter the list; status describes the HTML renderer. detail is brief by default, or full when filtering; summary includes tags, contexts, regions and traits. Brief and summary allow up to 200 entries; full clamps pageSize to 10 and reports the adjustment. totalCount and hasMore describe pagination. object_registry reads objects instead.
  - after: Read components a page at a time. category, trait, context and status filter the list; status describes the HTML renderer. detail is brief by default, or full when filtering; summary includes tags, contexts, regions and traits. Brief and summary allow up to 200 entries; full clamps pageSize to 10 and reports the adjustment. totalCount, hasMore and nextPage describe pagination. object_registry reads objects instead.
- 2026-10-09 `tool_schema` changed (inputSchema)
- 2026-10-09 `tool_schema` changed (description, inputSchema, annotations) **meaning changed**
  - before: Read the full JSON Schema of any OODS Foundry tool at the pinned version, as the package ships it: name is any of its tools, local-only ones included, and kind is input (the default) or output. Returns the schema, its file in the package, that file’s SHA-256 and its URL on this site. Use it to learn what a tool accepts or returns: these hosted tools declare no output schema, and tools/list here shows narrower inputs than the local package accepts.
  - after: Read a shipped tool schema by name and kind (input or output). Returns its JSON Schema, package-relative file, recorded file hash and source URL. tools/list describes this endpoint’s narrower accepted inputs; the full schema may describe operations outside the hosted tools.
- 2026-10-09 `design_preview` changed (description, inputSchema, annotations) **meaning changed**
  - before: Find a screen OODS Foundry generated at the pinned version: object and context pick one of the recorded object screens, and framework its React or Vue app. Returns the URL on oods-foundry.com where that built app runs, its recorded content hash, the brand and theme it was generated in, and the three calls that reproduce it with the local package (brand_create, design_compose, code_generate). Nothing is composed or generated here; a live preview of your own composition belongs to the local package. Use object_registry show instead to read the definition behind a screen.
  - after: Look up a recorded screen by object, context and framework. Returns its running screen URL, content hash, brand and theme. No new screen is generated. object_registry reads the definition behind the screen. Set reproduce true when the command and calls used to generate it are requested.
- 2026-10-09 `artifact_certify` changed (description, inputSchema, annotations) **meaning changed**
  - before: Certify a chart from its viz_render input, given as chart: the pinned package draws it and certifies the normalizedSpec it returns, in the same brand and theme, with the matching data for an ECharts type. The reply has the same content as viz_render’s for that input, the drawing beside the verdict: conformant, coverage, findings and the four pillars, accessibility equivalence, determinism, contrast and accuracy. A certified chart can be conformant: false, so read each pillar. viz_render already certifies what it draws; call this when you want the verdict by name. Certifying a normalized spec on its own belongs to the local package.
  - after: Draw and certify a chart from the input in chart, using matching data, brand and theme. Returns the same result as viz_render: hashes, warnings and the certification verdict, including accessibility equivalence, determinism, contrast and accuracy. Optional chart.output fields add SVG, the accessible table and narrative, or the normalized specification. A verdict can be conformant false; each pillar explains its result.
- 2026-10-09 `viz_render` changed (description, inputSchema, annotations) **meaning changed**
  - before: Draw a chart with the pinned OODS Foundry and certify it, in one call. Give inline rows with chartType and encodings; a pattern id to draw a catalog chart with its own rows; an intent (goal, measures, dimensions) instead of encodings; or rows without chartType to have one recommended. brand A or B and theme light, dark or hc set the colours. The reply holds viz_render’s result (the SVG, contentHash and svgHash, the Vega-Lite or ECharts spec, normalizedSpec, and an accessible table and narrative) and artifact_certify’s verdict on that normalizedSpec in the same scope: conformant and the four pillars. Use it for any chart; artifact_certify returns the same reply. Inline data only, up to 500 rows; the same input returns the same bytes. A reply larger than this endpoint’s 100,000-character bound, such as a pattern drawn with all its rows, is refused with its size.
  - after: Draw and certify a chart from inline data. Provide chartType and encodings with rows, a pattern with its own data, or an intent to recommend a tabular chart. Brand and theme apply to drawing and certification. The compact reply contains hashes, warnings and certification; output.svg adds the SVG drawing, includeA11y adds the table and narrative, and includeNormalizedSpec adds its specification. Request SVG when a displayed chart is needed. Up to 500 rows; optional outputs still share the 100,000-character reply bound. artifact_certify returns the same drawing and checks for an input in chart.
- 2026-10-09 `structured_data_fetch` changed (description, inputSchema, annotations) **meaning changed**
  - before: Fetch one registry dataset as a single export: dataset components (the live registry’s components, objects and traits), tokens or manifest. The reply carries the export’s version date, an etag, sizeBytes and the payload. An export larger than this endpoint’s 100,000-character reply bound, as components is at this version, is refused with its size; includePayload: false returns its version, etag and size alone. listVersions returns the dated exports instead of a payload, and version picks one of them (the nearest earlier date, with a warning, when that date has none). Pass a previous etag as ifNoneMatch to get matched: true and no payload when nothing changed. includeInternal applies to components only. Use catalog_list instead to read components a page at a time, and object_registry for objects. Read-only.
  - after: Read the tokens or manifest dataset, with its version, etag, sizeBytes and payload. includePayload false returns metadata only. listVersions lists available dates; version selects one, with a warning if an earlier date is used. ifNoneMatch accepts an etag and returns matched true without payload when unchanged. catalog_list reads components a page at a time.

Full history: https://api.protogrid.dev/v1/servers/com.oods-foundry%2Ffoundry/changes

## Dependencies

- npm @oods/foundry@0.11.2: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://oods-foundry.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.96825397)

## Packages

- npm @oods/foundry@0.11.2

## Tools (9)

- `artifact_certify`: Draw and certify a chart from the input in chart, using matching data, brand and theme. Returns the same result as viz_render: hashes, warnings and the certification verdict, including accessibility equivalence, determinism, contrast and accuracy. Optional chart.output fields add SVG, the accessible table and narrative, or the normalized specification. A verdict can be conformant false; each pillar explains its result.
- `catalog_list`: Read components a page at a time. category, trait, context and status filter the list; status describes the HTML renderer. detail is brief by default, or full when filtering; summary includes tags, contexts, regions and traits. Brief and summary allow up to 200 entries; full clamps pageSize to 10 and reports the adjustment. totalCount, hasMore and nextPage describe pagination. object_registry reads objects instead.
- `design_preview`: Look up a recorded screen by object, context and framework. Returns its running screen URL, content hash, brand and theme. No new screen is generated. object_registry reads the definition behind the screen. Set reproduce true when the command and calls used to generate it are requested.
- `health_check`: Read the running service status, pinned version, registry counts, built brands, themes, token scopes and retained proof summaries. Uptime and latency are current process measurements; host paths are omitted. includeChangelog adds the DSL changelog, and sinceVersion keeps entries after that version. catalog_list and object_registry read the definitions behind the counts.
- `object_registry`: Read objects from the pinned registry. action list returns names, traits and field counts; domain, trait and maturity filter them, and includeInternal adds internal objects. action show requires name and returns its composed definition; context narrows view extensions. registry_snapshot provides an overview; design_preview looks up recorded screens.
- `registry_snapshot`: Read the registry summary: active objects and traits, loaded names, loader issues, etag and generatedAt. detail full includes definitions; names narrows them. includeInternal adds internal objects. Replies larger than 100,000 characters are refused with their size. object_registry reads one composed object; catalog_list reads components.
- `structured_data_fetch`: Read the tokens or manifest dataset. Full data is the default; detail summary returns section counts and the first page call. page reads lossless JSON Pointer entries; pageSize defaults to 10, at most 100, also bounded by size. meta.next continues and meta.full requests full data. includePayload false returns metadata; listVersions lists dates, version selects one, and ifNoneMatch returns matched true without unchanged payload. catalog_list reads components.
- `tool_schema`: Read a shipped tool schema by name and kind (input or output). Returns its JSON Schema, package-relative file, recorded file hash and source URL. tools/list describes this endpoint’s narrower accepted inputs; the full schema may describe operations outside the hosted tools.
- `viz_render`: Draw and certify a chart from inline data. Provide chartType and encodings with rows, a pattern with its own data, or an intent to recommend a tabular chart. Brand and theme apply to drawing and certification. The compact reply contains hashes, warnings and certification; output.svg adds the SVG drawing, includeA11y adds the table and narrative, and includeNormalizedSpec adds its specification. Request SVG when a displayed chart is needed. Up to 500 rows; optional outputs still share the 100,000-character reply bound. artifact_certify returns the same drawing and checks for an input in chart.
