Developer docs

MatterMesh API & MCP

Programmatic access to the public Reality Translation Engine library. Built for AI agents, LLMs, retrieval pipelines, robotics simulators, and CAD/AR tooling. No authentication required for read access.

REST endpoints

Base URL: https://www.mattermesh.ai

GET/api/public/library

List public scans. Query params: q (name substring), limit (1–200, default 50), offset.

GET/api/public/library/{scanId}

Single scan record with all asset URLs.

GET/api/public/assets

Crawlable manifest of completed scans with one direct public URL per source image, SVG vector, Gaussian splat, render, and frame asset.

GET/api/public/assets/{scanId}

Single-scan asset manifest for crawlers and AI indexers.

GET/assets

HTML asset index for standard web crawlers that prefer pages over JSON.

POST/api/public/agent-upload

Submit a photo + scale reference; MatterMesh translates it into JSON, SVG, splat, and a render. Requires an API key in the apikey header.

curl https://www.mattermesh.ai/api/public/library?limit=5 \
  | jq '.items[] | { id, name, render: .assets.render }'

Model Context Protocol (MCP)

MatterMesh exposes a single MCP endpoint that any MCP-compatible AI client can use to search the library, fetch scan records, and pull direct asset URLs — no API key, no OAuth, no per-asset linking.

POST/api/mcp

Tools advertised on tools/list:

  • search_scans — search the library by name with pagination.
  • get_scan — fetch a full scan record (metadata + asset URLs) by id.
  • get_scan_assets — return only the asset URLs, optionally filtered by format (image, vector_svg, splat, render, frames).

Use with AI clients

Endpoint to paste anywhere a client asks for an MCP server URL: https://www.mattermesh.ai/api/mcp (Streamable HTTP, POST only, no auth).

ChatGPT (OpenAI) — custom connector

Settings → Connectors → Add custom connector. Name MatterMesh, URL https://www.mattermesh.ai/api/mcp, auth None. Enable it in the composer's tools menu, then ask: "search MatterMesh for wheelbarrow".

Claude (Anthropic)

claude.ai (web, Pro/Team/Enterprise): Settings → Connectors → Add custom connector → paste the URL above, auth None.
Claude Desktop / Claude Code: add to claude_desktop_config.json:

{
  "mcpServers": {
    "mattermesh": {
      "url": "https://www.mattermesh.ai/api/mcp"
    }
  }
}

Cursor

Settings → MCP → Add new MCP server. Same JSON shape as Claude Desktop, written to ~/.cursor/mcp.json (or per-project .cursor/mcp.json).

VS Code (Copilot Chat / Continue / Cline)

// .vscode/mcp.json
{
  "servers": {
    "mattermesh": { "type": "http", "url": "https://www.mattermesh.ai/api/mcp" }
  }
}

Windsurf · Cline · Zed · Goose

All accept the same Claude-Desktop-style block. Server name mattermesh, URL above, no auth.

Grok / xAI API

curl https://api.x.ai/v1/chat/completions \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-4",
    "messages": [{"role":"user","content":"find a wheelbarrow scan on mattermesh"}],
    "mcp_servers": [{
      "type": "url",
      "name": "mattermesh",
      "url": "https://www.mattermesh.ai/api/mcp"
    }]
  }'

OpenAI Responses API (Agents SDK, GPT-5)

curl https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "input": "find a wheelbarrow scan on mattermesh",
    "tools": [{
      "type": "mcp",
      "server_label": "mattermesh",
      "server_url": "https://www.mattermesh.ai/api/mcp",
      "require_approval": "never"
    }]
  }'

Google Gemini (google-genai SDK)

from google import genai
from google.genai import types

client = genai.Client()
resp = client.models.generate_content(
    model="gemini-2.5-pro",
    contents="find a wheelbarrow on mattermesh",
    config=types.GenerateContentConfig(
        tools=[types.Tool(mcp=types.McpServer(
            label="mattermesh",
            url="https://www.mattermesh.ai/api/mcp",
        ))],
    ),
)

Raw JSON-RPC (any HTTP client)

curl -X POST https://www.mattermesh.ai/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The Accept: application/json, text/event-stream header is required by the MCP Streamable HTTP spec — clients that omit it get a 406.

Per-scan license

Every scan record exposes a license object:

"license": {
  "type": "CC-BY" | "CC0" | "CC-BY-SA" | "CC-BY-NC" | "proprietary" | "unspecified",
  "url":  "https://creativecommons.org/licenses/by/4.0/" | null,
  "attribution": "Photo by Jane Doe / MatterMesh" | null
}

Agents must respect per-scan license terms. unspecified means no explicit license — treat as "contact creator before reuse". proprietary is all-rights-reserved.

Usage, attribution, rate limits

Everything public is free — crawl, index, fetch, cache, mirror, embed, cite, train on, fine-tune on, redistribute, and use commercially. No contact required. No attribution required (appreciated but optional). Per-scan license values, when present, govern that scan's assets. See the AI policy for the full terms.

Subscribe to scan.published, scan.processed, and scan.failed webhooks at /settings/webhooks. Public read endpoints are loosely rate-limited per IP to keep the site up; contact us if you need higher limits or write access.