Tool  ·  AgentExecutor  ·  LangGraph  ·  LCEL  ·  /v1/openapi.json

Slopshop for
LangChain & LangGraph

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.

82
Tool Objects
LCEL
Chain Ready
0cr
Memory Cost
Auto
From OpenAPI

Quickstart

Three steps. 82 categories of tools in your chain.

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.

Step 01 — Install

pip install langchain slopshop

Install LangChain and the Slopshop client. The Slopshop LangChain integration returns properly typed StructuredTool objects with Pydantic schemas.

pip install langchain langchain-openai slopshop
Step 02 — Load Tools

load_slopshop_tools()

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.

tools = load_slopshop_tools(SLOP_KEY, slugs=[...])
Step 03 — Bind

llm.bind_tools(tools)

Pass tools to any LangChain agent — AgentExecutor, LangGraph node, or LCEL | chain. They work wherever LangChain tools work.

llm.bind_tools(tools) → agent.invoke(task)

LangChain Tool Objects

Wrapping Slopshop tools as StructuredTool

Every Slopshop tool maps cleanly to LangChain's StructuredTool. The Pydantic args_schema is derived from the OpenAPI spec automatically.

slopshop_tools.py — LangChain Tool wrapper python
# 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

LangGraph Agent

LangGraph agent with Slopshop 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_agent.py — react agent with Slopshop tools python
# 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)

LCEL Pipe Chains

Slopshop tools in LCEL chains

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.

input: "slopshop.gg"
|
dns-lookup
|
ssl-check
|
http-request
|
memory-set
|
result + audit
lcel_chain.py — LCEL pipe chain with Slopshop tools python
# 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.


What You Get

Stop reimplementing tools. Start shipping agents.

Every tool you'd otherwise write from scratch — DNS resolution, SSL checking, HTTP requests, hashing, memory — is already here. Production-tested. Real results.

78 Categories of StructuredTools

Pre-built tools across 82 categories ready as LangChain StructuredTool objects. Pydantic schemas auto-generated from the OpenAPI spec. Drop into any agent.

🔗

LCEL + Pipe Native

Use Slopshop tools in LCEL | chains, or call /v1/pipe to run entire chains server-side in a single round-trip.

🧠

Free Persistent Memory

LangChain memory modules are notoriously complex. Slopshop's memory-set and memory-get tools give you persistent KV memory at zero cost.

📈

Auto-Generate from OpenAPI

/v1/openapi.json gives you a complete spec. Auto-generate all tool definitions without hand-writing a single schema.

🏠

Self-Hostable

Run Slopshop on your infrastructure. Same LangChain tool interface. Zero external dependencies for compute APIs. Point to localhost:3000.


Replace custom tools with production-grade APIs

Pre-built tools across 82 categories. No custom implementations. Auto-generated schemas from /v1/openapi.json.
Stop reinventing tool wrappers. Start building agents.

Read the Docs Download openapi.json Browse Browse All Tools
→ Full Docs → Browse Tools → Agent Templates → Savings Calculator