Borrowing it
Nothing to install: this file belongs to plural-pinelabs/pinelabs-online-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/plural-pinelabs/pinelabs-online-mcp/main/.agents/skills/pinelabs-mcp-tool-gen/SKILL.mdgit clone --depth 1 https://github.com/plural-pinelabs/pinelabs-online-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/plural-pinelabs/pinelabs-online-mcp/pinelabs-mcp-tool-gen)<a href="https://agentmods.dev/skills/plural-pinelabs/pinelabs-online-mcp/pinelabs-mcp-tool-gen"><img src="https://agentmods.dev/badge/skills/plural-pinelabs/pinelabs-online-mcp/pinelabs-mcp-tool-gen/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/plural-pinelabs/pinelabs-online-mcp/pinelabs-mcp-tool-gen"><img src="https://agentmods.dev/badge/skills/plural-pinelabs/pinelabs-online-mcp/pinelabs-mcp-tool-gen.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01303 |
| Opus 5.5 | $0.00000 | $0.00521 |
| Sonnet 5.5 | $0.00000 | $0.00261 |
| Haiku 4.5 | $0.00000 | $0.00130 |
Grade A, and why
pinelabs-mcp-tool-gen scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
Generate complete MCP tool implementations from Pine Labs API documentation, curl commands, or request/response examples. How it starts
The opening of the file, as written. The whole thing — 176 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Pine Labs MCP Tool Generator
Generate complete MCP tool implementations from Pine Labs API documentation, curl commands, or request/response examples.
Input Formats
The user may provide any of:
- Pine Labs docs URL — fetch and extract endpoint details
- curl command — parse method, path, headers, body, and response
- Request/response JSON — infer params and types
- API specification — method, path, parameters
If the tool name is not provided or cannot be inferred, ask the user before proceeding.
Workflow
- [ ] Step 1: Parse input and extract API contract
- [ ] Step 2: Determine tool name and resource file
- [ ] Step 3: Implement tool function
- [ ] Step 4: Register tool in tools.py
- [ ] Step 5: Add Pydantic models (if needed)
- [ ] Step 6: Write unit tests
- [ ] Step 7: Run linter — fix errors
- [ ] Step 8: Run tests — fix errors
Step 1: Parse Input
Extract: HTTP method, endpoint path, required/optional parameters with types, and example response.
Map parameters:
str→validate_resource_id()or raw string paramint/float→ typed parameterdict→ Pydantic modellist→ typed list parameterbool→ boolean parameter
Step 2: Determine Tool Name and File
Naming conventions:
- Fetch single:
get_{resource}orget_{resource}_by_{field} - Fetch list:
get_{resources}orlist_{resources} - Create:
create_{resource} - Update:
update_{resource} - Delete:
delete_{resource}orcancel_{resource}
Place in pkg/pinelabs/{resource_type}.py. Create new file only if needed.
Step 3: Implement Tool
import json
import logging
from fastmcp import FastMCP
from pkg.pinelabs.client import PineLabsClient, PineLabsAPIError
from pkg.pinelabs.utils.errors import (
api_error_response,
validation_error_response,
unexpected_error_response,
)
from pkg.pinelabs.utils.validators import validate_resource_id
logger = logging.getLogger("pinelabs-mcp-server.{resource}")
def register_{resource}_tools(
mcp: FastMCP, client: PineLabsClient
) -> None:
@mcp.tool(
name="tool_name",
description=(
"Action verb + what it does. "
"When to use / prerequisites. "
"Constraints or return format."
),
)
async def tool_name(required_param: str) -> str:
rid = validate_resource_id(required_param, "param_name")
try:
result = await client.get(f"/path/{rid}")
return json.dumps(result, indent=2)
except PineLabsAPIError as e:
return api_error_response(
e.message, e.code, e.status_code
)
except Exception as e:
return unexpected_error_response(e, "context")
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 176 lines · 0 tokens per session scan A 0e358623c8b4
pinelabs-mcp-tool-gen is a skill published in the GitHub repository plural-pinelabs/pinelabs-online-mcp (1 stars, last pushed 3mo ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 1,303 tokens. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
pinelabs-mcp-tool-gen compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| pinelabs-mcp-tool-genplural-pinelabs/pinelabs-online-mcp | Skill | 1 | 3mo ago | Apache-2.0 | A | 0 | Claude Code, Codex |
| mem0-oss-to-platformmem0ai/mem0 | Skill | 68k | 2d ago | Apache-2.0 | A | 217 | Claude Code, Codex |
| azure-mgmt-botservice-dotnetmicrosoft/skills | Skill | 3.2k | yesterday | MIT | A | 78 | Claude Code |
| fastapi-router-pymicrosoft/skills | Skill | 3.2k | yesterday | MIT | A | 46 | Claude Code |
| dev-runtimelangwatch/langwatch | Skill | 5.0k | yesterday | Apache-2.0 | A | 172 | Claude Code |
| api-designericrisco/rsc-harness | Skill | 503 | 2d ago | MIT | A | 105 | Claude Code, Codex |
| migrate-segw-to-raparc-mcp/arc-1 | Skill | 252 | yesterday | MIT | A | 106 | Claude Code |