Agent skill · mims-harvard
host-and-share-remote-tool
Host, validate, and privately share a user's own model, Python function, workflow, or existing Streamable HTTP MCP endpoint through ToolUniverse Platform. Use when turning a local CPU/GPU workload or lab endpoint into a stable TU remote tool, diagnosing its setup, or preparing it for controlled sharing.
What it needs
About 4k tokens when loaded.
What this skill does
Host and share a remote tool Use this workflow for user-owned code and infrastructure. Keep the workload on the user's computer or lab server; ToolUniverse Platform receives only the MCP tool manifest and relayed calls. Choose the shortest path Python function, model, database query, or workflow: wrap only the callable with @remotetool, then use tu serve ... --share. Existing Streamable HTTP MCP server: keep it running on loopback and use tuplatform-relay --forward .... One of ToolUniverse's 30 reviewed scientific implementations: use its implementation-specific setup-<name>-remote-tool skill and tu remote share <name> instead. Do not treat an arbitrary REST endpoint as MCP. Wrap it in a typed Python function first, or put a reviewed MCP adapter in front of it. 1. Install the reviewed clients Open ToolUniverse Connect, go to My Computers → Connect a computer, choose the Python or existing-MCP path, and copy the immutable install command shown there. Run it in a new Python 3.12 virtual environment. The command pins both the ToolUniverse and relay sources; do not replace the pins with a moving branch. Confirm the expected commands exist: ~~~bash tu --help tuplatform-relay --help ~~~ Stop if installation or source access fails. A locally working model does not prove that sharing works. 2A. Wrap a Python model or function Create mytool.py. Load fixed model artifacts from provider-owned configuration; do not accept arbitrary caller-controlled filesystem paths or model identifiers. ~~~python from tooluniverse import remotetool @remotetool def predict(sequence: str, threshold: float = 0.5) -> dict: """Score one sequence with the locally hosted model.""" if not isinstance(sequence, str) or not 1 <= len(sequence) <= 10000: raise ValueError("sequence must contain 1 to 10,000 characters") score = min(len(sequence) / 100.0, 1.0) # replace with the real model call return {"score": score, "passes": score >= threshold} ~~~ Use bounded, JSON-serializable inputs and outputs. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills mims-harvard/host-and-share-remote-tool