TPMJS Platform Guide

Complete guide to user accounts, collections, agents, forking, and API keys on TPMJS.

Introduction

TPMJS is more than a tool registry—it's a platform for building, sharing, and deploying AI-powered workflows. This guide covers the key platform features that let you organize tools, create AI agents, and share your work.

👤

User Accounts

Create a profile with a unique username to own collections, agents, and access protected features

📦

Collections

Group tools into curated sets that can be shared and connected to MCP clients like Claude Desktop

🤖

Agents

Build custom AI assistants with multi-provider support, tool integration, and persistent conversations

🔀

Forking

Clone public agents and collections to customize them for your own use

🔑

API Keys

Programmatic access to the platform with scoped permissions and rate limiting

📊

Usage Tracking

Monitor API usage, token consumption, and costs across your agents and collections

Getting Started

Follow these steps to get started with the TPMJS platform features.

1

Create an Account

Sign up at tpmjs.com/sign-up with email. You'll need to verify your email address.

2

Set Up Your Profile

Choose a unique username. This will be used in your public URLs (e.g., tpmjs.com/your-username).

3

Generate an API Key

Go to Dashboard → Settings → API Keys to create an API key for MCP connections and programmatic access.

4

Create Your First Collection

Go to Dashboard → Collections and create a collection to group related tools together.

User Accounts Overview

A TPMJS account gives you ownership and control over collections, agents, and API keys. Your account includes a public profile that showcases your public work.

🔐

Authentication

Email/password authentication with email verification. Sessions last 7 days.

💾

Data Ownership

You own all your collections, agents, API keys, and conversation history.

Account Features

  • Collections - Create up to 50 collections to organize tools
  • Agents - Create up to 20 AI agents with custom configurations
  • API Keys - Generate up to 10 API keys for programmatic access
  • Provider Keys - Store encrypted API keys for LLM providers (OpenAI, Anthropic, etc.)
  • Activity Feed - Track your actions with a complete audit trail
  • Usage Analytics - Monitor API calls, tokens, and costs

Usernames & Profiles

Your username is a unique identifier that becomes part of your public URLs. Choose carefully—it's how others will find and reference your work.

Username Requirements

  • 3-30 characters long
  • Lowercase letters, numbers, and hyphens only
  • Must start and end with a letter or number (not hyphen)
  • Must be unique across all TPMJS users
Valid usernames:
- ajax
- john-doe
- dev123
- my-cool-name

Invalid usernames:
- -invalid (starts with hyphen)
- also-invalid- (ends with hyphen)
- Hi (uppercase not allowed)
- ab (too short, minimum 3 chars)

Reserved Names

Certain names are reserved and cannot be used as usernames:

admin
api
dashboard
blog
docs
help
support
settings
login
signup

Checking Availability

When setting up your profile, usernames are checked in real-time for availability. You can also check programmatically:

curl https://tpmjs.com/api/user/username/check?username=your-username

Public Pages

Your public profile displays your name, avatar, and all public agents and collections. Others can view your work and fork items they find useful.

Profile URL

tpmjs.com/{username}

Your public profile showing all public agents and collections

tpmjs.com/@{username}

Alternative social-media style URL (works identically)

Public vs Private

Public Items

  • • Visible on your profile page
  • • Anyone can view details
  • • Can be forked by others
  • • Shows in search results

Private Items

  • • Only visible to you
  • • Not shown on profile
  • • Cannot be forked
  • • Direct URL returns 404

Collections Overview

Collections are curated groups of tools that you can share and connect to MCP clients. Think of them as playlists for AI tools—bundle related tools together for specific use cases.

🗂️

Organize

Group related tools together for web scraping, content creation, data analysis, or any workflow

🔗

Connect

Each collection gets unique MCP URLs for Claude Desktop, Cursor, and other MCP clients

🔄

Share

Make collections public so others can fork them and build on your work

Collection Features

  • Tool Grouping - Add up to 100 tools per collection
  • Custom Ordering - Arrange tools in your preferred order
  • Tool Notes - Add notes explaining why each tool is included
  • Environment Variables - Store API keys that are passed to tools at runtime
  • MCP Integration - Connect to Claude Desktop with a single URL
  • AI Use Cases - Auto-generate workflow suggestions

Creating Collections

Create a collection from your dashboard to start organizing tools.

Collection Fields

ParameterTypeRequiredDescription
Namestring
Yes
Display name for your collection (max 100 chars)
SlugstringNoURL-friendly identifier (auto-generated from name). Used in MCP URLs.
DescriptionstringNoBrief description of the collection purpose (max 500 chars)
PublicbooleanNoWhether the collection is visible to others. Default: false (private)

Steps to Create

1. Go to Dashboard → Collections

2. Click "Create Collection"

3. Enter a name and optional description

4. Click "Create" to save

5. Add tools from the registry using the "Add Tool" button

Adding Tools to Collections

After creating a collection, add tools from the TPMJS registry to build your toolkit.

Adding Tools

From your collection's detail page, use the "Add Tool" button to search the registry. You can search by name, description, or category.

Tool Notes

Add notes to each tool explaining why it's in the collection or how to use it. Notes are visible to anyone viewing the collection and help provide context.

Example Note: "Use this tool first to scrape the webpage, then pass the result to the summarization tool."

Reordering Tools

Tools are presented to AI models in the order they appear in your collection. You can drag and drop to reorder tools based on your preferred workflow.

MCP Integration

The Model Context Protocol (MCP) allows AI assistants to connect directly to your collections. Each collection gets unique MCP URLs that work with Claude Desktop, Cursor, and other MCP clients.

MCP Server URLs

Each collection provides two transport options:

Recommended
HTTP Transport
https://tpmjs.com/api/mcp/{username}/{collection-slug}/http
SSE Transporthttps://tpmjs.com/api/mcp/{username}/{collection-slug}/sse

Claude Desktop Configuration

Add your collection to Claude Desktop's configuration file:

{
  "mcpServers": {
    "tpmjs-my-collection": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://tpmjs.com/api/mcp/YOUR_USERNAME/YOUR_COLLECTION_SLUG/http",
        "--header",
        "Authorization: Bearer YOUR_TPMJS_API_KEY"
      ]
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Claude Code CLI

claude mcp add tpmjs-my-collection \
  https://tpmjs.com/api/mcp/YOUR_USERNAME/YOUR_COLLECTION_SLUG/http \
  -t http -H "Authorization: Bearer YOUR_TPMJS_API_KEY"

Collection Environment Variables

Many tools require API keys to function. You can store these as environment variables on your collection, and they'll be passed to tools at runtime.

Adding Environment Variables

1. Open your collection and go to the "Env Vars" tab

2. Click "Add Variable"

3. Enter the variable name (e.g., FIRECRAWL_API_KEY) and value

4. Click "Save"

Security

Encryption: Environment variables are encrypted using AES-256 before storage. They're decrypted only at runtime when tools are executed. Variables are never exposed in API responses.

Common Variables

FIRECRAWL_API_KEY

Web scraping with Firecrawl

EXA_API_KEY

Web search with Exa

TAVILY_API_KEY

Web search with Tavily

BROWSERBASE_API_KEY

Browser automation

Agents Overview

TPMJS Agents are custom AI assistants powered by any LLM provider. Build agents with custom system prompts, attach tools, and have persistent conversations through a streaming API.

🤖

Multi-Provider

Support for OpenAI, Anthropic, Google, Groq, and Mistral—bring your own API keys

🔧

Tool Integration

Attach individual tools or entire collections to give your agent capabilities

💬

Conversations

Full conversation history with streaming responses and tool call visualization

Note: Agents require LLM provider API keys. You'll need to add your keys in Dashboard → Settings → API Keys before creating agents.

Creating Agents

Create an agent to customize its behavior with a system prompt, choose the AI model, and configure execution parameters.

Basic Configuration

ParameterTypeRequiredDescription
Namestring
Yes
Display name for your agent (max 100 chars)
UIDstringNoURL-friendly identifier (auto-generated from name). Used in API calls.
DescriptionstringNoBrief description of what the agent does (max 500 chars)
Providerenum
Yes
LLM provider: OPENAI, ANTHROPIC, GOOGLE, GROQ, or MISTRAL
Modelstring
Yes
Specific model ID (e.g., gpt-4o, claude-sonnet-4-20250514)

Advanced Settings

ParameterTypeRequiredDescription
System PromptstringNoInstructions that define how the agent behaves (max 10,000 chars)
TemperaturenumberNoResponse randomness (0 = deterministic, 2 = creative). Default: 0.7
Max Tool CallsnumberNoMaximum tool calls per turn (1-100). Default: 20
Context MessagesnumberNoRecent messages included in context (1-100). Default: 10

Example System Prompt

You are a helpful research assistant specializing in web scraping and data analysis.

When asked to research a topic:
1. Use available web scraping tools to gather information
2. Analyze and synthesize the data
3. Present findings in a clear, structured format

Always cite your sources and be transparent about limitations.

Attaching Tools to Agents

Give your agent capabilities by attaching tools from the TPMJS registry. You can attach individual tools or entire collections.

Individual Tools

From your agent's detail page, use the "Add Tool" button to search and attach specific tools. Each tool appears with its name, description, and required environment variables.

Attaching Collections

You can attach entire collections to your agent. When a collection is attached, the agent can use all tools in that collection. This is useful for grouping related tools.

Tip: Collections inherit environment variables from the agent. Set up your API keys once on the agent, and they'll be available to all attached collections and tools.

Tool Limits

  • Maximum 50 individual tools per agent
  • Maximum 10 collections per agent
  • Tools from attached collections don't count against the 50 tool limit

Chat Interface

Interact with your agents through the built-in chat interface with streaming responses and tool call visualization.

Features

💬

Conversation History

Previous conversations appear in the sidebar. Click to resume any conversation.

Streaming Responses

Responses stream in real-time as the AI generates them.

🔧

Tool Calls

When the agent uses a tool, you'll see the tool name and can expand to view parameters and results.

📊

Token Usage

Token counts are tracked and displayed for monitoring usage and costs.

Chat URLs

tpmjs.com/{username}/agents/{agent-uid}/chat

Public chat URL for public agents

/dashboard/agents/{id}/chat/{chatId}

Dashboard chat URL for your own agents

LLM Providers

TPMJS Agents support multiple AI providers. Each provider offers different models with varying capabilities and pricing.

GPT models with excellent tool use support

gpt-4o
gpt-4o-mini
gpt-4-turbo

Claude models known for nuanced understanding

claude-sonnet-4-20250514
claude-3-5-haiku-20241022
claude-3-opus-20240229

Gemini models with multimodal capabilities

gemini-2.0-flash-exp
gemini-1.5-pro
gemini-1.5-flash

Ultra-fast inference for open-source models

llama-3.3-70b-versatile
llama-3.1-8b-instant
mixtral-8x7b-32768

European models with strong multilingual support

mistral-large-latest
mistral-small-latest

Forking Overview

Forking lets you clone public agents and collections to your own account. The forked copy is independent—you can customize it without affecting the original.

🔀

Clone & Customize

Start with someone else's configuration and adapt it to your needs

🔒

Security First

API keys and sensitive config are never copied—you add your own

What Gets Forked

Included

  • • Name and description
  • • System prompt (agents)
  • • Provider and model settings
  • • All attached tools
  • • Tool order and notes
  • • Temperature and other params

Not Included

  • • Environment variables / API keys
  • • Executor configuration
  • • Conversation history
  • • Like count
  • • Fork count

Fork Agents

When you find a public agent you like, fork it to your account to customize it.

How to Fork an Agent

1. Navigate to a public agent's detail page (e.g., tpmjs.com/ajax/agents/research-assistant)

2. Click the "Fork" button in the header

3. The agent is copied to your account with all its tools and settings

4. You're redirected to your dashboard to customize the forked agent

5. Add your own API keys to make the agent functional

Fork Button States

Fork

Available when viewing a public agent you don't own

Your Agent

Shown when viewing your own agent

Already Forked

You've already forked this agent (links to your fork)

Limit Reached

You've reached the maximum of 20 agents

Fork Collections

Fork collections to get a copy you can modify without affecting the original.

How to Fork a Collection

1. Navigate to a public collection's page (e.g., tpmjs.com/ajax/collections/web-scraping)

2. Click the "Fork" button

3. The collection is copied with all its tools

4. You can then add, remove, or reorder tools

5. Add your own environment variables for the tools

Collection Fork Limits

  • Maximum 50 collections per user
  • Forked collections start as private
  • New MCP URLs are generated for your fork

Fork Attribution

TPMJS tracks fork relationships so you can see where agents and collections originated.

Forked From Badge

Forked items display a "Forked from" badge linking back to the original. This provides attribution and lets users discover the source.

Fork Count

Public agents and collections display a fork count showing how many times they've been forked. This indicates popularity and usefulness to the community.

Viewing Parent Updates

After forking, you can check what the original parent has changed by visiting its page. This lets you see new tools or collections the parent author has added.

How to View Parent Changes

1. Go to your forked agent or collection in the dashboard

2. Click the "Forked from" badge to navigate to the parent

3. The parent's page shows its current tools and collections

4. Compare with your fork to see what's different

What You Can See

When you visit the parent, you'll see its current state:

For Agents

  • • Current attached tools
  • • Current collections
  • • Updated system prompt
  • • Model and provider changes
  • • Temperature and settings

For Collections

  • • Current tools in collection
  • • Tool order and positions
  • • Updated description
  • • Newly added tools
  • • Removed tools

Manual Updates

TPMJS uses a manual update model—your fork doesn't automatically sync with the parent. To incorporate parent changes:

1. View the parent's current tools/collections

2. Go to your fork's edit page

3. Manually add or remove tools to match (or improve upon) the parent

4. Update settings as needed

Note: This manual approach gives you full control over what changes to accept. You can cherry-pick specific updates without taking everything the parent has changed.

API Access

You can also fetch parent information via the API:

# Get a public agent's current tools
curl "https://tpmjs.com/api/public/users/{username}/agents/{uid}"

# Response includes current tools and collections:
{
  "id": "...",
  "name": "Research Assistant",
  "tools": [...],        // Current attached tools
  "collections": [...],  // Current attached collections
  "forkedFromId": "...", // Your fork has this pointing to parent
  "forkedFrom": { ... }  // Parent info (if you're viewing your fork)
}

API Keys Overview

TPMJS API keys provide programmatic access to the platform. Use them for MCP connections, agent conversations, and API integrations.

🔑

Secure

Keys are hashed using SHA-256—we never store the raw key

🎯

Scoped

Fine-grained permissions control what each key can do

📊

Tracked

Usage is recorded for monitoring and debugging

Key Format

TPMJS API keys follow a consistent format for easy identification:

tpmjs_sk_abc123def456ghi789...
  • tpmjs_sk_ prefix identifies the key type
  • 32 random bytes encoded as base64url
  • Shown in full only once at creation time
  • Displayed as prefix only (e.g., tpmjs_sk_abc1...) in the dashboard

Creating API Keys

Generate API keys from your dashboard to enable programmatic access.

Steps to Create

1. Go to Dashboard → Settings → API Keys

2. Click "Generate New Key"

3. Enter a descriptive name (e.g., "Claude Desktop")

4. Click "Create"

5. Copy the key immediately—it's only shown once!

Key Management

Activate/Deactivate

Toggle keys on/off without deleting them. Useful for temporarily disabling access.

Rotate

Generate a new key with the same name and settings. The old key is immediately invalidated.

Delete

Permanently remove a key. Cannot be undone.

Important: Your API key is displayed only once when created. Store it securely. If you lose it, you'll need to generate a new one.

Scopes & Permissions

API keys have scopes that control what actions they can perform. By default, new keys have all scopes enabled.

Available Scopes

mcp:execute

Execute tools via MCP endpoints. Required for Claude Desktop and Cursor integration.

agent:chat

Send messages to agents via the conversation API.

bridge:connect

Establish MCP bridge connections for local tool exposure.

usage:read

Access usage analytics and statistics via the API.

collection:read

Read collection details and list collections.

Using API Keys

Include your API key in the Authorization header:

Authorization: Bearer tpmjs_sk_your_api_key_here

Example request:

curl -H "Authorization: Bearer tpmjs_sk_your_api_key" \
  "https://tpmjs.com/api/agents"

Rate Limits

TPMJS enforces rate limits to ensure fair usage. Limits are based on your account tier.

Limits by Tier

TierRequests/HourNotes
Free100Default tier
Pro1,000Paid subscription
Enterprise10,000Custom plans

Rate Limit Headers

Every response includes rate limit information:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 85
X-RateLimit-Reset: 1704067200

Handling Rate Limits

When rate limited, you'll receive a 429 response with a Retry-After header:

{
  "success": false,
  "error": {
    "code": "RATE_LIMITED",
    "message": "Too many requests. Please try again in 60 seconds."
  }
}

Usage Tracking

TPMJS tracks API usage for monitoring and billing purposes. View your usage in the dashboard.

What's Tracked

  • Request Count - Total API calls per period
  • Token Usage - Input/output tokens for agent conversations
  • Latency - Average response time per endpoint
  • Error Rate - Percentage of failed requests
  • Cost Estimation - Estimated LLM costs based on token usage

Usage Dashboard

View detailed usage analytics at Dashboard → Usage. The dashboard shows:

  • Time-series graphs of requests and tokens
  • Breakdown by endpoint and API key
  • Hourly, daily, and monthly aggregations
  • Cost estimates based on provider pricing

Data Retention

  • Individual Records - Kept for 30 days
  • Aggregated Summaries - Kept indefinitely

Access Model: Public Access with Your Credentials

You can access public agents and collections using your own API key—but you must provide all required credentials (LLM keys, tool environment variables) in the request. The owner's stored credentials are never shared.

Owners

  • • Use stored credentials from dashboard
  • • Access public and private resources
  • • No extra parameters needed in API calls

Non-Owners

  • • Can only access PUBLIC resources
  • • Must provide credentials in each request
  • • Owner's credentials are never used

Why This Model?

  • Security - Owner credentials stay private, never shared with callers
  • Transparency - Callers pay for their own LLM/tool usage
  • Flexibility - Use public resources without forking
  • Control - Fork when you want to customize

Accessing Agents via API

Public agents can be accessed by any authenticated user who provides their own credentials.

Accessing Your Own Agent

As the owner, just send your message—your stored LLM key and env vars are used:

POST /api/agents/{agentId}/conversation/{conversationId}
Authorization: Bearer YOUR_TPMJS_API_KEY

{
  "message": "Hello, help me with..."
}

Accessing Someone Else's Public Agent

You must provide your own LLM provider key and any tool environment variables:

POST /api/agents/{agentId}/conversation/{conversationId}
Authorization: Bearer YOUR_TPMJS_API_KEY

{
  "message": "Hello, help me with...",
  "providerApiKey": "sk-your-openai-key...",
  "env": {
    "UNSANDBOX_API_KEY": "your-unsandbox-key",
    "FIRECRAWL_API_KEY": "your-firecrawl-key"
  }
}

Missing Provider API Key

If you don't provide providerApiKey for a public agent:

{
  "success": false,
  "error": "Public agent access requires your own API key",
  "details": {
    "code": "MISSING_PROVIDER_KEY",
    "requiredProvider": "OPENAI",
    "hint": "Provide your OPENAI API key in the 'providerApiKey' field"
  }
}
// HTTP 400 Bad Request

Missing Environment Variables

If the agent's tools require env vars you didn't provide:

{
  "success": false,
  "error": "Missing required environment variables",
  "details": {
    "code": "MISSING_ENV_VARS",
    "missingVars": [
      { "name": "UNSANDBOX_API_KEY", "description": "API key for code execution" },
      { "name": "FIRECRAWL_API_KEY", "description": "API key for web scraping" }
    ],
    "hint": "Provide these variables in the 'env' field of your request"
  }
}
// HTTP 400 Bad Request

Who Pays?

The caller always pays. When accessing a public agent, you provide your own LLM API key—so LLM costs go to your account. When accessing your own agent, your stored keys are used.

Accessing Collections via MCP

Public collections can be accessed by any authenticated user who provides their own environment variables.

Accessing Your Own Collection

As the owner, just make MCP calls—your stored env vars are used:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "tpmjs-unsandbox-executeCode",
    "arguments": { "code": "print('hello')" }
  },
  "id": 1
}

Accessing Someone Else's Public Collection

You must provide environment variables in the env field of params:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "tpmjs-unsandbox-executeCode",
    "arguments": { "code": "print('hello')" },
    "env": {
      "UNSANDBOX_API_KEY": "your-unsandbox-key"
    }
  },
  "id": 1
}

Missing Environment Variables

If you don't provide required env vars:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32602,
    "message": "Missing required environment variables",
    "data": {
      "missingVars": [
        { "name": "UNSANDBOX_API_KEY", "description": "API key for code execution" }
      ]
    }
  }
}

Who Pays?

The caller always pays. When accessing a public collection, you provide your own tool API keys—so tool costs (if any) go to your accounts. Rate limits are tracked against your TPMJS API key.

Common Access Errors

Reference of errors you may encounter when accessing agents and collections.

401
Unauthorized

No API key provided or invalid format. Include Authorization: Bearer tpmjs_sk_... header.

403
Missing Scope

API key lacks required scope. Agents need agent:chat, collections need mcp:execute.

404
Not Found / Private

Resource doesn't exist or is private. Non-owners can only access PUBLIC agents/collections.

400
Missing Provider Key

For public agents: provide providerApiKey in your request. For your own agents: add your LLM key in Dashboard → Settings.

400
Missing Env Vars

Tools require environment variables you didn't provide. Check the error details for the list of required vars.

429
Rate Limited

Exceeded your hourly request limit. Wait for the reset or upgrade your tier.

Platform Limits

Reference of all platform limits to help you plan your usage.

User Limits

ResourceLimitDescription
Collections50Maximum collections per user
Agents20Maximum agents per user
API Keys10Maximum API keys per user

Collection Limits

ResourceLimitDescription
Tools100Maximum tools per collection
Bridge Tools50Maximum bridge tools per collection
Name Length100 charsMaximum collection name length
Description500 charsMaximum description length
Tool Notes500 charsMaximum note length per tool

Agent Limits

ResourceLimitDescription
Tools50Maximum tools per agent
Collections10Maximum collections per agent
System Prompt10,000 charsMaximum system prompt length
Name Length100 charsMaximum agent name length
Description500 charsMaximum description length
UID Length50 charsMaximum UID length

Conversation Limits

ResourceLimitDescription
Conversations100Maximum conversations per agent
Message Length50,000 charsMaximum message length
Title Length200 charsMaximum conversation title

URL Reference

Complete reference of all shareable URLs on TPMJS.

TypeURL Pattern
User Profile/{username} or /@{username}
Agent Detail/{username}/agents/{uid}
Agent Chat/{username}/agents/{uid}/chat
Collection/{username}/collections/{slug}
Tool/tool/{package}/{tool}
API Endpoints
MCP Server (HTTP)/api/mcp/{username}/{slug}/http
MCP Server (SSE)/api/mcp/{username}/{slug}/sse
Agent Conversation/api/{username}/agents/{uid}/conversation/{id}

Ready to Get Started?

Create your account and start building with TPMJS today.