Pre-built tools across 82 categories. No custom implementations needed.
Wrap them as LangChain Tool objects, pipe them through LCEL chains, or drop them straight into your LangGraph agent nodes.
Stop writing @tool decorators for DNS lookups and SSL checks. Load all Slopshop tools across 82 categories as proper LangChain StructuredTool objects in one call.
Install LangChain and the Slopshop client. The Slopshop LangChain integration returns properly typed StructuredTool objects with Pydantic schemas.
One function call loads any combination of the 82 categories of tools as LangChain-compatible StructuredTool objects. Or auto-generate all from the OpenAPI spec.
Pass tools to any LangChain agent — AgentExecutor, LangGraph node, or LCEL | chain. They work wherever LangChain tools work.
Every Slopshop tool maps cleanly to LangChain's StructuredTool. The Pydantic args_schema is derived from the OpenAPI spec automatically.
# Wrap Slopshop tools as proper LangChain StructuredTool objects # Auto-generates Pydantic schemas from /v1/openapi.json import os, json, requests from typing import Any from langchain.tools import StructuredTool from pydantic import BaseModel, create_model SLOP_URL = "https://slopshop.gg" def _make_args_schema(json_schema: dict) -> type[BaseModel]: """Build a Pydantic model from a JSON Schema dict.""" fields = {} for name, prop in json_schema.get("properties", {}).items(): py_type = { "string": str, "integer": int, "number": float, "boolean": bool }.get(prop.get("type", "string"), str) required = name in json_schema.get("required", []) fields[name] = (py_type, ...) if required else (py_type | None, None) return create_model("ArgsSchema", **fields) def load_slopshop_tools( api_key: str, slugs: list[str] | None = None ) -> list[StructuredTool]: """ Load Slopshop tools as LangChain StructuredTool objects. Args: api_key: Your Slopshop API key slugs: Tool slugs to load (None = load curated set from /v1/mcp/recommended) Returns: List of StructuredTool objects ready for use in any LangChain agent """ headers = {"Authorization": f"Bearer {api_key}"} # Fetch tool manifest if slugs: url = f"{SLOP_URL}/v1/mcp/recommended?tools={','.join(slugs)}" else: url = f"{SLOP_URL}/v1/mcp/recommended" manifest = requests.get(url, headers=headers).json() tools = [] for tool_def in manifest["tools"]: slug = tool_def["name"] schema = tool_def.get("input_schema", {}) # Build the actual execution function (closure over slug + api_key) def make_fn(_slug, _key): def run(**kwargs: Any) -> str: resp = requests.post( f"{SLOP_URL}/v1/{_slug}", headers={ "Authorization": f"Bearer {_key}", "Content-Type": "application/json" }, json=kwargs ) result = resp.json() return json.dumps(result) return run tools.append(StructuredTool( name=slug, description=tool_def["description"], func=make_fn(slug, api_key), args_schema=_make_args_schema(schema) )) return tools
Use Slopshop tools in a LangGraph agent node. The tools work as standard LangChain tools — bind them to the LLM and LangGraph handles the tool call loop.
# LangGraph ReAct agent using Slopshop tools # Slopshop tools = standard LangChain tools, nothing special needed import os from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent from slopshop_tools import load_slopshop_tools SLOP_KEY = os.environ["SLOPSHOP_API_KEY"] # Load the tools you want — or omit slugs for the curated recommended set tools = load_slopshop_tools(SLOP_KEY, slugs=[ "dns-lookup", "ssl-check", "http-request", "whois", "hash", "url-parse", "memory-set", "memory-get", ]) # Standard LangGraph ReAct agent — nothing Slopshop-specific here llm = ChatOpenAI(model="gpt-4o", temperature=0) agent = create_react_agent(llm, tools) result = agent.invoke({ "messages": [{ "role": "user", "content": ( "Audit github.com — check DNS records, SSL certificate grade, " "and HTTP security headers. Save a summary to memory." ) }] }) print(result["messages"][-1].content)
Slopshop's /v1/pipe endpoint maps directly to LCEL's pipe-chaining idiom. Chain tools together with | — each tool's output feeds into the next.
# Use Slopshop tools in an LCEL chain # Or call /v1/pipe directly for server-side chaining import os, requests from langchain_core.runnables import RunnableLambda from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate SLOP_KEY = os.environ["SLOPSHOP_API_KEY"] SLOP_URL = "https://slopshop.gg" HDR = {"Authorization": f"Bearer {SLOP_KEY}", "Content-Type": "application/json"} # Option A: Client-side LCEL chain using Slopshop RunnableLambdas def slop_tool(slug: str): """Wrap a Slopshop tool as a LangChain Runnable.""" def run(inputs: dict) -> dict: resp = requests.post(f"{SLOP_URL}/v1/{slug}", headers=HDR, json=inputs) return resp.json() return RunnableLambda(run) # Build the chain with | operator — pure LCEL security_chain = ( slop_tool("dns-lookup") | RunnableLambda(lambda x: {"host": x.get("host", "input")}) | slop_tool("ssl-check") ) dns_result = security_chain.invoke({"host": "slopshop.gg"}) print(dns_result) # Option B: Server-side pipe — single HTTP call, Slopshop chains for you pipe_result = requests.post( f"{SLOP_URL}/v1/pipe", headers=HDR, json={ "steps": [ {"tool": "dns-lookup", "input": {"host": "slopshop.gg"}}, {"tool": "ssl-check", "input": {"host": "$prev.host"}}, {"tool": "http-request", "input": {"url": "https://slopshop.gg"}}, {"tool": "memory-set", "input": {"key": "audit:slopshop", "value": "$prev"}} ] } ).json() print(pipe_result["results"]) # All 4 step results in one round-trip
Server-side /v1/pipe executes the entire chain in one HTTP round-trip. Useful when you want to minimize latency in a LangGraph node — send one request, get all results.
Every tool you'd otherwise write from scratch — DNS resolution, SSL checking, HTTP requests, hashing, memory — is already here. Production-tested. Real results.
Pre-built tools across 82 categories ready as LangChain StructuredTool objects. Pydantic schemas auto-generated from the OpenAPI spec. Drop into any agent.
Use Slopshop tools in LCEL | chains, or call /v1/pipe to run entire chains server-side in a single round-trip.
LangChain memory modules are notoriously complex. Slopshop's memory-set and memory-get tools give you persistent KV memory at zero cost.
/v1/openapi.json gives you a complete spec. Auto-generate all tool definitions without hand-writing a single schema.
Run Slopshop on your infrastructure. Same LangChain tool interface. Zero external dependencies for compute APIs. Point to localhost:3000.