# Foundations Elements API

UI encyclopedia for agents. Host: https://foundations.tensegrity.works

Kind lists are 0.01 USDC. Search and specs are 0.02 USDC. GET /mcp/start is free. Settlement is x402 v2 in USDC on Base (eip155:8453). A paid call buys one JSON response for that URL. Settled x402 is a Pro grant (Pro slugs and Pro fields). Max slugs return entitlement_required unless the caller has a Max account. Kind-list and search rows include tier. It does not grant glyphs, machines, or redistribution rights.

Human page: https://tensegrity.company/docs
Waitlist: https://tensegrity.company/elements?utm_source=x402&utm_medium=api
Contact: support@tensegrity.company

## Discovery (free)

| Path | Type |
| --- | --- |
| GET /mcp/start | Briefing: kinds, example slugs, next hops |
| GET /mcp/elements | Kinds table: kind, count, paid list path |
| GET /docs | This reference (Markdown) |
| GET /llms.txt | Agent index |
| GET /openapi.json | OpenAPI 3.1 |
| GET /pricing | Prices JSON |
| GET /terms | What one paid call buys |

Do not send payment on these. A 200 here is not a paid resource.

## Paid lookups

| Path | Price | Returns |
| --- | --- | --- |
| GET /mcp/elements/search | 0.02 USDC | Cross-kind search. List this URL on directories. Bare GET returns the search contract; add q or another filter for hits (max 5) |
| GET /mcp/search | 0.02 USDC | Alias of /mcp/elements/search |
| GET /mcp/elements/{kind} | 0.01 USDC | slugs, aliases, complexity, atomicType, tier |
| GET /mcp/elements/{kind}/{slug} | 0.02 USDC | spec body |
| GET /glossary/{slug} | 0.02 USDC | spec body |

Example kind: `charts`. Example slug: `funnel-chart`.

Kinds (33): actions, form, layout, lists, nav, overlay, charts, data-display, media, marketing, text, motion, ai, selection, date-time, analog, tokens, gesture, containers, status, notification, agent-surface, glanceable, alternative-content, telemetry-control, diagrams, maps, shell, chat, agent, generative-ui, playback, visual.

Unpaid requests return 402 with a PAYMENT-REQUIRED header (base64 JSON) and a JSON body. X-PAYMENT-REQUIRED is the same challenge for v1 clients. Send PAYMENT-SIGNATURE (or X-PAYMENT) matching accepts[]. Settled x402 is a Pro grant. Max slugs return 403 entitlement_required. The live challenge is authoritative over this document.

## Payment

- Protocol: x402 v2, exact scheme
- Network: eip155:8453 (Base)
- Asset: USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
- Facilitator: https://facilitator.xpay.sh
- Header in: PAYMENT-SIGNATURE (X-PAYMENT is an alias)
- Header out: PAYMENT-REQUIRED (unpaid; X-PAYMENT-REQUIRED is the same challenge), PAYMENT-RESPONSE (settled)
- EIP-712 extras on accepts[]: extra.name "USD Coin", extra.version "2"

The payTo address is in accepts[]. Do not hard-code a wallet from an old copy of these docs if the live 402 differs.

```http
GET https://foundations.tensegrity.works/mcp/elements/search
GET https://foundations.tensegrity.works/mcp/elements/search?q=funnel-chart
GET https://foundations.tensegrity.works/mcp/search
```

Unpaid: HTTP 402. Paid: HTTP 200 and application/json.

## Account and MCP

POST /mcp needs a Foundations account. HTTP glossary routes accept x402 without one.

Signed-in customer tools (credits, not x402): elements_kinds (0 credits), elements_list, elements_search, elements_get, elements_history (Max only), elements_index, elements_glyph, elements_machine.

ElementHistory is Max-only. Starter, Pro, Lifetime Pro, and x402 do not receive history cards or elements_history bodies.

Account channel (invite-only): Starter gets 100 signup credits (12-month expiry). Pro subscriptions add entitlement plus 500 allowance credits per paid period; Max adds 1000 (expire at period end, no rollover). Packs: 100 / 500 / 1000 purchased credits (12-month expiry). Lifetime Pro / Lifetime Max set term=lifetime for the operational lifetime of the product; credits still required. Spend FIFO by soonest expiry (allowance before purchased). Zero credits is a hard stop. Auto-recharge is out of v1. See GET /pricing account object and https://tensegrity.company/terms#s7. Marketing splash pages do not publish plan prices.

Request access at the waitlist. Credits have no cash value.

## Errors

| Status | When |
| --- | --- |
| 200 | Free doc, free start, free kinds, or settled pay |
| 402 | Paid path, missing or invalid PAYMENT-SIGNATURE / X-PAYMENT |
| 404 | Unknown kind or slug |
| 401 | POST /mcp or other account routes without a session |
| 403 | Max slug on a Pro grant (wallet x402 or a non-Max account) |

A 402 body includes waitlist.url so an agent without a wallet can send a human to sign up.

## Not public

Do not call or list these as x402 resources:

- GET /mcp/start (free intake; listing it as paid fails probes)
- GET /mcp/elements (free; listing it as paid fails probes)
- POST /mcp (account-only)
- /api/elements and /apps/* (signed-in product, not wallet pay)

## Legal

- Lookup terms: https://foundations.tensegrity.works/terms
- Human terms: https://tensegrity.company/terms
- Privacy: https://tensegrity.company/privacy
- Billing and payments: https://tensegrity.company/terms#s7