JADE REALMS / Developer documentation
Connect with MCP
Choose a client that supports remote Streamable HTTP servers. Add the endpoint below, select no authentication, then discover the tools. A browser tab does not need to remain open.
Connection steps
Choose a client that supports remote Streamable HTTP servers. Add the endpoint below, select no authentication, then discover the tools. A browser tab does not need to remain open.
https://3dmodelhub.io/mcp- Add a remote MCP server using this URL and Streamable HTTP transport.
- Select None for authentication. This public service has no API key or OAuth sign-in step.
- Discover the seven tools below. Read site information, search models, then request download URLs.
- Transport
- Streamable HTTP
- Authentication
- None
- Server
- jaderealms-public-assets
Current browser WebMCP is a separate integration. This /mcp endpoint uses the standard remote protocol. OAuth and private purchased-library access are not part of this release.
MCP tools
| MCP tools | REST API | Required |
|---|---|---|
jaderealms_get_site_info | GET /api/v1/site | — |
jaderealms_search_models | GET /api/v1/models | — |
jaderealms_get_model_details | GET /api/v1/models/{id} | id |
jaderealms_list_scene_kits | GET /api/v1/kits | — |
jaderealms_get_scene_kit_details | GET /api/v1/kits/{id} | id |
jaderealms_get_usage_guidance | GET /api/v1/guidance | topic |
jaderealms_get_model_downloads | GET /api/v1/models/{id}/downloads | id |
Search → inspect → download
{
"name": "jaderealms_search_models",
"arguments": {
"q": "pine",
"tested_engine": "godot",
"max_triangles": 150000,
"limit": 3,
"locale": "en"
}
}Client example
npm install --save-exact @modelcontextprotocol/sdk@1.32.1import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const client = new Client({ name: 'asset-library-client', version: '1.0.0' });
try {
await client.connect(new StreamableHTTPClientTransport(new URL("https://3dmodelhub.io/mcp")));
console.log(await client.listTools());
const result = await client.callTool({
"name": "jaderealms_search_models",
"arguments": {
"q": "pine",
"tested_engine": "godot",
"max_triangles": 150000,
"limit": 3,
"locale": "en"
}
});
console.log(result.structuredContent);
} finally {
await client.close();
}Protocol examples
A GET in the address bar returns 405 because this endpoint expects MCP POST messages. Use the examples below or the official SDK client to test it.
curl --fail 'https://3dmodelhub.io/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"manual-check","version":"1.0.0"}}}'curl --fail 'https://3dmodelhub.io/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","method":"notifications/initialized"}'curl --fail 'https://3dmodelhub.io/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'curl --fail 'https://3dmodelhub.io/mcp' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"jaderealms_search_models","arguments":{"q":"pine","tested_engine":"godot","max_triangles":150000,"limit":3,"locale":"en"}}}'Scope and compatibility
The server returns metadata and file URLs. It cannot purchase, inspect a private account, write to a local project or render an interactive 3D viewer inside every chat client.
Only anonymous, published catalog facts are returned. Unknown facts remain null; recorded import checks apply to the exact GLB hash and do not certify performance.
Metadata shares a best-effort edge limit of 120 requests per minute per IP at each Cloudflare location. File downloads have no account download quota.
- POST: initialize / notifications / tools/list / tools/call
- GET / DELETE: 405 · OPTIONS: 204
- JSON response · no persistent session ID · 32 KiB message limit
- tools/call: content + structuredContent; isError=true on invalid arguments
Errors and retries
| HTTP / JSON-RPC | Description |
|---|---|
| 405 | GET from an address bar is unsupported; connect with MCP POST. |
| 406 | Accept must include both application/json and text/event-stream. |
| 415 | Send JSON with Content-Type: application/json. |
| 403 | Browser Origin is not allowed. Default origins cover this site and configured ChatGPT, Claude and Cursor origins. A site administrator can configure MCP_ALLOWED_ORIGINS for another browser client. |
| 413 | Messages must fit within 32 KiB; batch messages are unsupported. |
| 429 | Wait for Retry-After before retrying. |
| JSON-RPC / tools/call | Check JSON-RPC error first. If result.isError is true, inspect structuredContent or text for the tool error instead of treating it as success. |