Connect Jarvis SDK as an MCP server and give any AI agent instant access to 700+ trust-scored modules — text processing, hashing, integrations, AI tools, and more — via the Model Context Protocol.
The Model Context Protocol (MCP) is the universal standard for connecting AI models to external tools. Jarvis SDK exposes a fully compliant MCP server that lets any MCP client discover and execute tools from our catalog.
POST /api/mcpMCP 2024-11-05Streamable HTTPx-api-key headerresources/list and resources/read for module metadataSign up at jarvissdk.com/signup or call POST /api/v1/auth/register. The Free plan includes 1,000 executions/month.
curl -X POST https://jarvissdk.com/api/mcp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'You should see a response with protocolVersion and serverInfo.
curl -X POST https://jarvissdk.com/api/mcp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'curl -X POST https://jarvissdk.com/api/mcp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":3,
"method":"tools/call",
"params":{
"name":"jarvis_text-toolkit_word_count",
"arguments":{"text":"Hello world from Jarvis SDK"}
}
}'Response: {"count": 5}
Add Jarvis SDK to your MCP client. Pick your tool below.
Add to your claude_desktop_config.json or .mcp.json:
{
"mcpServers": {
"jarvis-sdk": {
"type": "http",
"url": "https://jarvissdk.com/api/mcp",
"headers": {
"x-api-key": "jsk_your_api_key_here"
}
}
}
}Config location: ~/.claude/claude_desktop_config.json (macOS/Linux) or %APPDATA%\Claude\claude_desktop_config.json (Windows).
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"jarvis-sdk": {
"url": "https://jarvissdk.com/api/mcp",
"headers": {
"x-api-key": "jsk_your_api_key_here"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"jarvis-sdk": {
"serverUrl": "https://jarvissdk.com/api/mcp",
"headers": {
"x-api-key": "jsk_your_api_key_here"
}
}
}
}import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(
new URL("https://jarvissdk.com/api/mcp"),
{
requestInit: {
headers: { "x-api-key": "jsk_your_api_key_here" },
},
}
);
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);
// List all tools
const { tools } = await client.listTools();
console.log(`${tools.length} tools available`);
// Call a tool
const result = await client.callTool({
name: "jarvis_hash-toolkit_sha256",
arguments: { text: "hello world" },
});
console.log(result);import httpx
MCP_URL = "https://jarvissdk.com/api/mcp"
HEADERS = {
"x-api-key": "jsk_your_api_key_here",
"Content-Type": "application/json",
}
def mcp_call(method: str, params: dict = None, req_id: int = 1) -> dict:
payload = {"jsonrpc": "2.0", "id": req_id, "method": method}
if params:
payload["params"] = params
r = httpx.post(MCP_URL, json=payload, headers=HEADERS)
return r.json()
# Initialize
init = mcp_call("initialize", {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "my-python-agent", "version": "1.0"},
})
# List tools
tools = mcp_call("tools/list", req_id=2)
print(f"{len(tools['result']['tools'])} tools available")
# Execute a tool
result = mcp_call("tools/call", {
"name": "jarvis_text-toolkit_slugify",
"arguments": {"text": "Hello World from Python"},
}, req_id=3)
print(result["result"])When you call tools/list, Jarvis SDK returns every module action and published skill as individual tools. Tool names follow these conventions:
| Pattern | Type | Example |
|---|---|---|
| jarvis_{module}_{action} | Module action | jarvis_text-toolkit_word_count |
| jarvis_{module} | Module (generic) | jarvis_gmail-auto-responder |
| jarvis_skill_{slug} | Composed skill | jarvis_skill_content-publisher |
Jarvis SDK also exposes resources/list and resources/read for reading module metadata, schema definitions, and trust scores without executing anything.
// tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "jarvis_hash-toolkit_sha256",
"arguments": { "text": "hello world" }
}
}
// Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "{\"hash\":\"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9\"}"
}]
}
}// tools/call — skills run multiple modules in sequence
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "jarvis_skill_content-publisher",
"arguments": {
"topic": "AI agent marketplaces",
"tone": "professional"
}
}
}
// Response includes step-by-step results
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [{
"type": "text",
"text": "{\"skill\":\"Content Publisher\",\"status\":\"completed\",\"steps_completed\":\"3/3\", ...}"
}]
}
}1. jarvis_json-toolkit_validate({ json: configFileContents })
→ { valid: true, parsed: { ... } }
2. jarvis_hash-toolkit_sha256({ text: configFileContents })
→ { hash: "a1b2c3..." }The agent picks the right tools from the tools/list response based on tool descriptions. No routing logic needed on your side.
Jarvis SDK returns standard JSON-RPC 2.0 error codes. Your MCP client library handles these automatically, but here's what they mean:
| Code | Meaning | Action |
|---|---|---|
| -32600 | Invalid Request | Check JSON-RPC format |
| -32601 | Method Not Found | Use initialize, tools/list, tools/call, resources/list, or resources/read |
| -32602 | Invalid Params | Check tool name and arguments against tools/list schema |
| -32603 | Internal Error | Retry once, then check /api/v1/health |
| -32603 | Auth Required | Add x-api-key header |
| -32603 | Rate Limited | Wait and retry, or upgrade plan |
Tool execution errors return isError: true in the tools/call result rather than a JSON-RPC error, following MCP convention. The error message is in the content array.
MCP requests count against your plan's rate limits. Each tools/call counts as one execution.
| Plan | Executions/month | Rate limit |
|---|---|---|
| Free | 1,000 | 60 req/min |
| Pro ($29/mo) | 50,000 | 300 req/min |
| Business ($299/mo) | 500,000 | 1,000 req/min |
| Enterprise | Unlimited | Custom |
tools/list responses are cached for 60 seconds server-side, so frequent polling is efficient. initialize and metadata methods do not count against execution limits.
Ensure your x-api-key header is set correctly. Some MCP clients use headers in the config; others use environment variables. Verify your key is active at /dashboard/keys.
Restart Claude Desktop after editing the config file. Check the MCP log at ~/Library/Logs/Claude/mcp*.log (macOS) for connection errors. Ensure the URL is exactly https://jarvissdk.com/api/mcp with no trailing slash.
Verify the tool name matches exactly — use tools/list to get the canonical names. Arguments must match the inputSchema from the tool listing. Check field names and types.
If you hit rate limits, either space out your requests or upgrade your plan. Check your current usage at /dashboard/usage. For batch operations, consider the REST POST /api/v1/batch endpoint instead.
The first tools/list call may take 2-3 seconds while the server loads the full module catalog. Subsequent calls are cached for 60 seconds. If timeouts persist, check /api/v1/health for platform status.
| Method | Auth Required | Description |
|---|---|---|
| initialize | No | Handshake — returns server capabilities and protocol version |
| tools/list | No | Returns all available tools with names, descriptions, and input schemas |
| tools/call | Yes | Execute a tool by name with arguments — counts as one execution |
| resources/list | No | List module metadata resources |
| resources/read | No | Read a specific resource (module schema, trust score, etc.) |