Skip to main content

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