# DAP Foundry

> Tools that refuse rather than guess: settlement day counts, Unix timestamps, base64, line diffs.

- name: solutions.dap/foundry
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 93/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/solutions.dap%2Ffoundry
- tools: https://api.protogrid.dev/v1/servers/solutions.dap%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://foundry.dap.solutions/mcp"
    }
  }
}
```


## Trust

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

## Quality 93/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### 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`: 4 of 4 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 860 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: 67 (weight 15)

- pass `stability.changes`: 4 tool changes in 30 days
- fail `stability.rug_pull`: 4 tools kept their name but changed most of their description in 30 days; review before trusting them
- pass `stability.new_links`: no tool change named a new site

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

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

- tools: 4, about 860 tokens to load them all
- tool set hash: c4da4fb990797f570023d1dcd7e804e8
- tools last changed: 2026-11-04T18:01:20.099Z
- badge: [![protogrid quality](https://protogrid.dev/badge/solutions.dap/foundry.svg)](https://protogrid.dev/servers/solutions.dap/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-11-04 `diff-two-line-lists` changed (description) **meaning changed**
  - before: Compare two lists of lines. text holds a line ---A---, then list A, then a line ---B---, then list B. The answer is a CSV of each distinct line, matched exactly as sent, marked only_a, only_b or both. It refuses empty text, more than 1,048,576 bytes or 50,000 lines, and a text without the two markers in that order. Free. The answer is the JSON envelope of https://foundry.dap.solutions/api/diff-two-line-lists, byte for byte, with the artifact hash that answered. Full rules: https://foundry.dap.solutions/hub.md
  - after: Use when you need to compare two lists of lines. Marks each distinct line only_a, only_b or both, matched exactly as sent, as a CSV. $0.01 USDC on Base per answer via x402; a refusal is free.
- 2026-11-04 `decode-base64-to-text` changed (description) **meaning changed**
  - before: Base64 to UTF-8 text. text holds standard base64: A to Z, a to z, 0 to 9, + and /, padding optional; white space is ignored. It refuses empty text, more than 1,048,576 bytes, the URL-safe alphabet, a length or padding that cannot be base64, and bytes that are not valid UTF-8. Free. The answer is the JSON envelope of https://foundry.dap.solutions/api/decode-base64-to-text, byte for byte, with the artifact hash that answered. Full rules: https://foundry.dap.solutions/hub.md
  - after: Use when you need to read base64 as text. Decodes standard base64 to UTF-8 text and refuses anything that is not valid base64 or not valid UTF-8, rather than guess. $0.01 USDC on Base per answer via x402; a refusal is free.
- 2026-11-04 `convert-unix-timestamp-to-date` changed (description) **meaning changed**
  - before: Unix timestamps to UTC dates in ISO 8601. text holds one or more timestamps, one per line: whole seconds or milliseconds, where a magnitude of 100000000000 or more is milliseconds. The answer is a CSV of input, unit and date. It refuses empty text, more than 1,048,576 bytes or 10,000 lines, and any line that is not digits with an optional leading minus inside the years 0001 to 9999. Free. The answer is the JSON envelope of https://foundry.dap.solutions/api/convert-unix-timestamp-to-date, byte for byte, with the artifact hash that answered. Full rules: https://foundry.dap.solutions/hub.md
  - after: Use when you need Unix timestamps as dates. Converts one or more timestamps, seconds or milliseconds, one per line, to UTC dates in ISO 8601 as a CSV. $0.01 USDC on Base per answer via x402; a refusal is free.
- 2026-11-04 `compute-day-count-to-settlement` changed (description) **meaning changed**
  - before: Settlement date on the Payments Canada holiday calendar, and the accrual fraction under ACT/360, ACT/365F, 30/360, 30E/360 or ACT/ACT-ISDA. Send all seven inputs, including acknowledge no-ruling-v1 and a freshness_tolerance in whole days written P<n>D. It refuses rather than guesses: a missing acknowledgement or tolerance, a tolerance over the ratified ceiling, calendar data older than your tolerance, a trade date outside the calendar's coverage or not a business day, and any missing, unknown or malformed input. Costs $0.01 in USDC on Base per computed answer, under x402; a refusal is not charged. The answer is the JSON envelope of https://foundry.dap.solutions/api/compute-day-count-to-settlement, byte for byte, with the artifact hash that answered. Full rules: https://foundry.dap.solutions/hub.md
  - after: Use when you need a Canadian settlement date or accrual fraction. Rolls a trade date forward on the Payments Canada calendar and counts the accrual under ACT/360, ACT/365F, 30/360, 30E/360 or ACT/ACT-ISDA. $0.01 USDC on Base per answer via x402; a refusal is free.

Full history: https://api.protogrid.dev/v1/servers/solutions.dap%2Ffoundry/changes

## Remotes

- https://foundry.dap.solutions/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `compute-day-count-to-settlement`: Use when you need a Canadian settlement date or accrual fraction. Rolls a trade date forward on the Payments Canada calendar and counts the accrual under ACT/360, ACT/365F, 30/360, 30E/360 or ACT/ACT-ISDA. $0.01 USDC on Base per answer via x402; a refusal is free.
- `convert-unix-timestamp-to-date`: Use when you need Unix timestamps as dates. Converts one or more timestamps, seconds or milliseconds, one per line, to UTC dates in ISO 8601 as a CSV. $0.01 USDC on Base per answer via x402; a refusal is free.
- `decode-base64-to-text`: Use when you need to read base64 as text. Decodes standard base64 to UTF-8 text and refuses anything that is not valid base64 or not valid UTF-8, rather than guess. $0.01 USDC on Base per answer via x402; a refusal is free.
- `diff-two-line-lists`: Use when you need to compare two lists of lines. Marks each distinct line only_a, only_b or both, matched exactly as sent, as a CSV. $0.01 USDC on Base per answer via x402; a refusal is free.
