real tools across 82 categories Claude can call. Memory is free. Every result verified.
Connect in 60 seconds via MCP — or drop tools directly into your tool_use array.
Whether you're using Claude Code, Claude Desktop, or the @anthropic-ai/sdk directly — Slopshop plugs in at the protocol level.
Install the Slopshop MCP server globally. It speaks the Model Context Protocol natively — no shims, no wrappers.
Point Claude Desktop or Claude Code at your Slopshop MCP server. One block, one API key.
Claude discovers the full catalog of tools via the MCP tool manifest. No prompt engineering needed — just ask Claude to do the thing.
Drop this into your Claude Desktop or Claude Code config. Slopshop's MCP server exposes the full catalog of tools as first-class MCP tools — each with a description, input schema, and real execution.
{
"mcpServers": {
"slopshop": {
"command": "npx",
"args": ["-y", "@slopshop/mcp-server"],
"env": {
"SLOPSHOP_API_KEY": "sk-slop-your-key-here",
"SLOPSHOP_BASE_URL": "https://slopshop.gg"
}
}
}
}Or point at the remote MCP endpoint directly: /v1/mcp/recommended returns a curated tool manifest. Pass it as --tools-url for Claude Code CLI usage.
// Self-host the Slopshop MCP server alongside Claude Code // node mcp-server.js — exposes the full catalog of tools over stdio MCP protocol import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; const server = new Server({ name: 'slopshop', version: '1.0.0' }); const BASE = 'https://slopshop.gg'; const KEY = process.env.SLOPSHOP_API_KEY; // Fetch the full tool manifest from Slopshop const manifest = await fetch(`${BASE}/v1/mcp/tools`, { headers: { 'Authorization': `Bearer ${KEY}` } }).then(r => r.json()); server.setRequestHandler('tools/list', () => ({ tools: manifest.tools })); server.setRequestHandler('tools/call', async ({ name, arguments: args }) => { const res = await fetch(`${BASE}/v1/${name}`, { method: 'POST', headers: { 'Authorization': `Bearer ${KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify(args) }); return { content: [{ type: 'text', text: JSON.stringify(await res.json()) }] }; }); await server.connect(new StdioServerTransport());
Prefer to manage tools yourself? Fetch Slopshop tool definitions and pass them directly into Claude's tools array. Claude handles the tool_use / tool_result loop — Slopshop handles the execution.
import Anthropic from '@anthropic-ai/sdk'; const claude = new Anthropic(); const SLOP_KEY = process.env.SLOPSHOP_API_KEY; const SLOP_URL = 'https://slopshop.gg'; // 1. Pull Slopshop tools as Anthropic tool definitions async function getSlopshopTools(slugs = []) { const url = slugs.length ? `${SLOP_URL}/v1/mcp/recommended?tools=${slugs.join(',')}` : `${SLOP_URL}/v1/mcp/recommended`; const data = await fetch(url, { headers: { 'Authorization': `Bearer ${SLOP_KEY}` } }).then(r => r.json()); // Each tool is already in Anthropic's tool format return data.tools; // [{ name, description, input_schema }] } // 2. Execute a tool call via Slopshop async function executeTool(toolName, toolInput) { const res = await fetch(`${SLOP_URL}/v1/${toolName}`, { method: 'POST', headers: { 'Authorization': `Bearer ${SLOP_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify(toolInput) }); return res.json(); } // 3. Agentic loop — Claude calls tools, Slopshop executes async function runAgent(userMessage) { const tools = await getSlopshopTools([ 'dns-lookup', 'ssl-check', 'http-request', 'whois', 'hash', 'memory-set' ]); let messages = [{ role: 'user', content: userMessage }]; while (true) { const response = await claude.messages.create({ model: 'claude-opus-4-6', max_tokens: 4096, tools, messages }); if (response.stop_reason === 'end_turn') { return response.content.find(b => b.type === 'text')?.text; } if (response.stop_reason === 'tool_use') { messages.push({ role: 'assistant', content: response.content }); // Execute all tool calls in parallel const toolResults = await Promise.all( response.content .filter(b => b.type === 'tool_use') .map(async block => { const result = await executeTool(block.name, block.input); return { type: 'tool_result', tool_use_id: block.id, content: JSON.stringify(result) }; }) ); messages.push({ role: 'user', content: toolResults }); } } } // Run it const answer = await runAgent( 'Audit slopshop.gg — check DNS, SSL cert, HTTP headers, and save results to memory' ); console.log(answer);
{
"type": "tool_use",
"id": "toolu_01abc",
"name": "ssl-check",
"input": {
"host": "slopshop.gg"
}
}{
"valid": true,
"expires": "2026-09-12",
"issuer": "Let's Encrypt",
"days_left": 170,
"grade": "A+",
"_engine": "real"
}Every Slopshop response includes "_engine": "real" — a signed guarantee that this result came from real compute, not a language model hallucination.
Slopshop is the execution substrate Claude is missing out of the box. Every category Claude might reach for — it's here, real, and verified.
DNS, SSL, HTTP, crypto, hashing, code execution, data transforms, document generation, web research. All real. No hallucinated outputs.
Claude can write to and read from Slopshop's key-value memory store at zero credit cost. State persists across sessions automatically.
Slopshop speaks MCP out of the box. Drop it into claude_desktop_config.json and every tool appears in Claude's context immediately.
Audit logs, per-request tracing, credit usage per tool call. Every tool invocation Claude makes is logged with inputs, outputs, and latency.
Run the entire Slopshop tool server on your own infrastructure. Zero external dependencies for compute APIs. Air-gapped setups supported.