tool-registration

tool-registration is a skill for Claude Code, Codex from pjosols/pyfastmail-mcp. It costs 0 tokens per session (232 once invoked), scanned A, original, MIT.

A guide for registering tools in an MCP server, where MCP is a standard way for an agent to call external functions.

In plain words
What is it for?
Use it when adding Python tools to the pyfastmail-mcp server, including type hints, optional parameters, registration functions, and JSON-formatted results.
Why use it?
It gives developers a consistent pattern for defining tool inputs, returning results, and handling errors.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it when adding Python tools to the pyfastmail-mcp server, including type hints, optional parameters, registration functions, and JSON-formatted results.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/pjosols/pyfastmail-mcp/tool-registration
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add pjosols/pyfastmail-mcp --skill tool-registration
Clone the repo
git clone --depth 1 https://github.com/pjosols/pyfastmail-mcp

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for tool-registration

README.md
[![agentmods](https://agentmods.dev/badge/skills/pjosols/pyfastmail-mcp/tool-registration/github.svg)](https://agentmods.dev/skills/pjosols/pyfastmail-mcp/tool-registration)
Your own site
<a href="https://agentmods.dev/skills/pjosols/pyfastmail-mcp/tool-registration"><img src="https://agentmods.dev/badge/skills/pjosols/pyfastmail-mcp/tool-registration/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.

agentmods 80×15 button for tool-registration

Your own site · 80×15
<a href="https://agentmods.dev/skills/pjosols/pyfastmail-mcp/tool-registration"><img src="https://agentmods.dev/badge/skills/pjosols/pyfastmail-mcp/tool-registration.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 232 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.00232
Opus 5.5 $0.00000 $0.00093
Sonnet 5.5 $0.00000 $0.00046
Haiku 4.5 $0.00000 $0.00023

Measured 1mo ago against content hash d8b6ef021104, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

tool-registration scanned grade A with 0 findings 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 1mo 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.kiro_bak/skills/tool-registration/SKILL.md · 32 lines

What it actually says

MCP Tool Registration

Pattern

from mcp.server import FastMCP

server = FastMCP("pyfastmail-mcp")

@server.tool()
async def tool_name(param: str, optional_param: int = 10) -> str:
    """Clear description of what this tool does."""
    # Tools return strings (JSON formatted for structured data)
    return json.dumps(result, indent=2)

Guidelines

  • Tool functions are async.
  • Use type hints on all parameters — MCP uses them to generate the schema.
  • Default values define optional parameters.
  • Return str always. Use json.dumps for structured data.
  • Tool description (docstring) should be clear enough for an LLM to know when to use it.
  • Keep tool functions thin: validate → call client → format response.
  • Handle errors gracefully — return error messages, don't raise exceptions to the MCP layer.

Registration Pattern (per module)

def register(server: FastMCP, client: JMAPClient):
    @server.tool()
    async def my_tool(...) -> str:
        ...
Changes

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.

  1. 1mo ago First seen · 32 lines · 0 tokens per session scan A d8b6ef021104

Subscribe to this mod's changes

tool-registration is a skill published in the GitHub repository pjosols/pyfastmail-mcp (0 stars, last pushed 4mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 232 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

calendar-contacts-tasks

Reads and changes the user's own calendars, contacts and to-dos on their CalDAV/CardDAV server (Nextcloud, iCloud, Baikal, Radicale and others) through the dav-mcp tools - finding events, free time, phone numbers and tasks, and creating, moving, cancelling or deleting them safely. Use whenever the user asks about or…

PhilflowIO/dav-mcp · 147 tokens

olk

Microsoft Outlook and OneDrive CLI and MCP for email, calendar, contacts, tasks, and files, for personal and enterprise accounts.

rlrghb/olkcli · 28 tokens

using-outlook-assistant

Safety, privacy and efficient-use rules for the Outlook Assistant (outlook) MCP tools, covering Outlook email, calendar, contacts, folders, rules, categories and mailbox settings on personal Outlook.com and work/school Microsoft 365 accounts. Read it before the first Outlook Assistant tool call in a session, and again…

littlebearapps/outlook-assistant · 175 tokens

Pear - iCloud Calendar, Reminders, Contacts & Mail

Pear provides hosted MCP access to iCloud Calendar, Contacts, Mail, and legacy CalDAV reminder data. Tools are prefixed with pear. Calendar and legacy reminders use CalDAV; Contacts use CardDAV; Mail uses IMAP/SMTP. Apple's upgraded Reminders store is not accessible through this connection.

AshtonAU/pear-plugin · 51 tokens

nylas-api

Build email, calendar, and contacts integrations with the Nylas v3 API. Use when code imports nylas, @nylas/nylas, nylas-python, or user asks about Nylas API, email API integration, calendar API, contacts API, OAuth grants, agent accounts, webhooks, scheduler, notetaker, smart compose, or transactional send. DO NOT…

nylas/skills · 90 tokens

nylas-email-templates

Write, test, and deploy Nylas email templates and workflows with an API key. Use when user asks to create or edit a Nylas email template, set up a workflow for booking., event., grant., notetaker., or message. triggers, send email with a stored template through the Send API, translate or brand a Scheduler email, or…

nylas/skills · 117 tokens