Skip to main content

Documentation Index

Fetch the complete documentation index at: https://spec.conveniencepro.cc/llms.txt

Use this file to discover all available pages before exploring further.

MCP Compliance

CTP tools are designed for full compatibility with the Model Context Protocol (MCP).

Overview

MCP is Anthropic’s open protocol for AI-tool integration. CTP extends MCP with browser-native capabilities while maintaining full compatibility.

Automatic Conversion

CTP tools automatically convert to MCP format

Bidirectional

MCP tools can be imported as CTP tools

Field Mapping

CTP → MCP Conversion

CTP FieldMCP FieldConversion
idnameDirect copy
nametitleDirect copy
descriptiondescriptionDirect copy
parameters[]inputSchemaConvert to JSON Schema
aiInstructionsinstructionsDirect copy

Parameter to JSON Schema

// CTP Parameter
{
  name: 'input',
  type: 'textarea',
  label: 'Input Text',
  description: 'Text to process',
  required: true,
  validation: { minLength: 1, maxLength: 10000 }
}

// Converts to MCP inputSchema property
{
  "input": {
    "type": "string",
    "description": "Text to process",
    "minLength": 1,
    "maxLength": 10000
  }
}

Conversion API

Generate MCP Manifest

import { generateMCPManifest } from '@conveniencepro/ctp-discovery';

const ctpTools = [jsonFormatter, base64Encoder, hashGenerator];

const mcpManifest = generateMCPManifest(ctpTools, {
  name: 'conveniencepro-tools',
  version: '1.0.0',
  description: 'Browser-native developer tools',
});

Output Structure

{
  "name": "conveniencepro-tools",
  "version": "1.0.0",
  "description": "Browser-native developer tools",
  "tools": [
    {
      "name": "json-formatter",
      "title": "JSON Formatter",
      "description": "Format, validate, and beautify JSON data.",
      "inputSchema": {
        "type": "object",
        "required": ["json"],
        "properties": {
          "json": {
            "type": "string",
            "description": "The JSON string to format"
          },
          "indent": {
            "type": "string",
            "enum": ["0", "2", "4", "tab"],
            "default": "2",
            "description": "Number of spaces for indentation"
          },
          "sortKeys": {
            "type": "boolean",
            "default": false,
            "description": "Sort object keys alphabetically"
          }
        }
      },
      "instructions": "Use 2-space indentation by default."
    }
  ]
}

Type Mapping

CTP Types to JSON Schema

CTP TypeJSON Schema TypeAdditional Properties
textstring-
textareastring-
numbernumberminimum, maximum
booleanboolean-
selectstringenum
jsonobject-
filestringformat: "binary"
colorstringpattern: "^#[0-9a-fA-F]{6}$"
datestringformat: "date"
datetimestringformat: "date-time"
urlstringformat: "uri"
emailstringformat: "email"

Validation Mapping

CTP ValidationJSON Schema
minLengthminLength
maxLengthmaxLength
patternpattern
minminimum
maxmaximum
stepmultipleOf

Import MCP Tools

Convert MCP tools to CTP format:
import { importMCPTool } from '@conveniencepro/ctp-core';

const mcpTool = {
  name: 'external-tool',
  description: 'An external MCP tool',
  inputSchema: {
    type: 'object',
    required: ['query'],
    properties: {
      query: { type: 'string', description: 'Search query' },
    },
  },
};

const ctpDefinition = importMCPTool(mcpTool, {
  category: 'utilities',  // Required: CTP needs category
  tags: ['search', 'external'],  // Required: CTP needs tags
  executionMode: 'server',  // MCP tools typically need server
});

Serving MCP Endpoint

Well-Known URL

app.get('/.well-known/mcp.json', (req, res) => {
  const manifest = generateMCPManifest(tools);
  res.json(manifest);
});

With Tool Execution

app.post('/mcp/tools/:toolId/execute', async (req, res) => {
  const { toolId } = req.params;
  const params = req.body;

  const result = await runtime.execute(toolId, params);

  // Convert CTP result to MCP response format
  res.json({
    success: result.success,
    result: result.data,
    error: result.error,
  });
});

AI Assistant Integration

Claude Desktop

Add to claude_desktop_config.json:
{
  "mcpServers": {
    "conveniencepro": {
      "command": "npx",
      "args": ["-y", "@conveniencepro/mcp-server"]
    }
  }
}

Cursor

Configure in Cursor settings:
{
  "mcp.servers": [
    {
      "name": "conveniencepro",
      "url": "https://conveniencepro.cc/.well-known/mcp.json"
    }
  ]
}

Best Practices

1. Include AI Instructions

{
  aiInstructions: 'Use SHA-256 for general hashing. Use SHA-512 for security-critical applications. Warn users if they request SHA-1.',
}

2. Provide Clear Descriptions

{
  description: 'Generate cryptographic hashes using SHA algorithms. Supports hexadecimal and Base64 output formats.',
  outputDescription: 'Hash digest of the input in the specified format',
}

3. Include Examples

{
  example: {
    input: { input: 'hello world', algorithm: 'SHA-256', format: 'hex' },
    output: {
      hash: 'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9',
      algorithm: 'SHA-256',
      format: 'hex',
    },
  },
}

4. Use Parameter Hints

{
  name: 'algorithm',
  type: 'select',
  aiHint: 'Default to SHA-256 unless the user specifies otherwise',
  options: [
    { value: 'SHA-256', label: 'SHA-256', description: 'Recommended for general use' },
    { value: 'SHA-512', label: 'SHA-512', description: 'Maximum security' },
  ],
}

Compatibility Matrix

FeatureCTPMCPNotes
Tool definitionsFull compatibility
ParametersConverted to JSON Schema
ResultsCompatible format
AI instructionsDirect mapping
Browser executionCTP-specific
Autosense stylingCTP-specific
Discovery docsMCP manifest generated