GnistAI GnistAI
Log in

Compose

Create and manage toolbelts — curated subsets of tools served as single MCP endpoints.

Overview   |   MCP   |   REST API   |   OpenAPI   |   CLI   |   Tutorial   |   Toolkits   |   Home
status: healthy status status healthy healthy tools: 10 tools tools 10 10 type: composite report type type composite report composite report lifecycle: hidden lifecycle lifecycle hidden hidden Platform

Data source: Internal registry

MCP Endpoint (Streamable HTTP) https://context.gnist.ai/mcp/compose/
Authentication

All requests require a Gnist-API-Key header (or api_key query parameter).

Free tier: 100 calls/day. Get your API key.

Tools (10)

list_available_servers

List all registered Gnist Context MCP servers.

Returns server name, mount path, tool count, description, and category
for every upstream data server available for toolbelt composition.

Returns:
Dict with a "servers" list. Each entry has:
- name: Display name (e.g. "GLEIF (LEI)")
- mount_path: Server path (e.g. "/gleif")
- tool_count: Number of tools in the server
- description: What the server provides
- category: Data category (e.g. "Finance", "Science")

JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "list_available_servers",
    "arguments": {}
  }
}
search_tools

Search all registered MCP tools by keyword or intent.

Results include a colon-namespaced tool_ref (e.g. "gleif:search_entities")
ready for use with create_toolbelt.

Args:
query: Natural language or keyword search.
top_n: Max results (default 10, max 20).

Returns:
Dict with matching tools, each including tool_ref for toolbelt use.

ParameterTypeRequiredDescription
querystringrequired
top_nintegeroptional (default: 10)
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "search_tools",
    "arguments": {
      "query": "example"
    }
  }
}
create_toolbelt

Create a named toolbelt — a curated subset of tools served as one MCP endpoint.

The toolbelt becomes available at /mcp/{name}/ as a standard MCP server
containing only the selected tools, namespaced with colons.

Args:
name: URL-safe slug (3-64 chars, lowercase alphanum + hyphens).
tools: Tool refs in colon format (e.g. ["gleif:search_entities", "news:search_news"]).
Use search_tools to discover available refs.
description: Optional human-readable description.
validate: Check coupling dependencies (default true).
auto_complete: Automatically add hard dependencies (default false).
ttl_days: Auto-expire after N days. Null = no expiry.

Returns:
Created toolbelt with url, tool_count, warnings, and auto_added tools.

ParameterTypeRequiredDescription
namestringrequired
toolslist[string]required
descriptionstringoptional (default: "")
validatebooleanoptional (default: true)
auto_completebooleanoptional (default: false)
ttl_daysanyoptional
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "create_toolbelt",
    "arguments": {
      "name": "example",
      "tools": [
        "example"
      ]
    }
  }
}
list_toolbelts

List all saved toolbelts with name, url, tool count, and timestamps.

Returns:
Dict with count and toolbelts list.

JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "list_toolbelts",
    "arguments": {}
  }
}
get_toolbelt

Get the full definition of a named toolbelt.

Args:
name: Toolbelt slug.

Returns:
Full toolbelt definition including tools, url, and coupling warnings.

ParameterTypeRequiredDescription
namestringrequired
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "get_toolbelt",
    "arguments": {
      "name": "example"
    }
  }
}
update_toolbelt

Add or remove tools from an existing toolbelt. The URL stays stable.

Args:
name: Toolbelt slug.
add_tools: Tool refs to add (colon format).
remove_tools: Tool refs to remove.
validate: Re-check coupling after changes (default true).

Returns:
Updated toolbelt definition, or error if not found.

ParameterTypeRequiredDescription
namestringrequired
add_toolsanyoptional
remove_toolsanyoptional
validatebooleanoptional (default: true)
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "update_toolbelt",
    "arguments": {
      "name": "example"
    }
  }
}
delete_toolbelt

Soft-delete a toolbelt. The endpoint stops serving immediately.

Args:
name: Toolbelt slug to delete.

Returns:
Confirmation or error.

ParameterTypeRequiredDescription
namestringrequired
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "delete_toolbelt",
    "arguments": {
      "name": "example"
    }
  }
}
list_presets

List curated preset toolbelts — ready-to-use bundles for common use cases.

Presets are pre-configured toolbelts covering domains like Norwegian data,
financial research, academic research, business intelligence, and more.
Each preset is immediately available as an MCP endpoint at /mcp/{name}/.

Returns:
Dict with count and presets list. Each entry has name, description,
url, tool_count, and included servers.

JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "list_presets",
    "arguments": {}
  }
}
preview_toolbelt

Preview a toolbelt without saving. Estimates token cost and checks coupling.

Use this to evaluate a tool selection before committing to create_toolbelt.

Args:
tools: Tool refs in colon format.

Returns:
Tool count, estimated schema tokens, coupling warnings, and suggestions.

ParameterTypeRequiredDescription
toolslist[string]required
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "preview_toolbelt",
    "arguments": {
      "tools": [
        "example"
      ]
    }
  }
}
report_feedback

Report a bug, feature request, or general feedback for this data source.

Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.

Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.

ParameterTypeRequiredDescription
feedbackstringrequired
feedback_typestringoptional (default: "general")
JSON-RPC Request
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "report_feedback",
    "arguments": {
      "feedback": "example"
    }
  }
}

Quick Start

Shell
curl -X POST "https://context.gnist.ai/mcp/compose/" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_tools", "arguments": {"query": "example"}}}'
Python
import httpx

resp = httpx.post(
    "https://context.gnist.ai/mcp/compose/",
    headers={"Gnist-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "search_tools",
    "arguments": {
      "query": "example"
    }
  }
},
)
print(resp.json())

Related Toolkits (Platform)

Resources