Trade plans

Create, read, update, and delete trade plans with multi-format content support.

Overview

Trade Plans are comprehensive trading business plans that define your overall approach to trading as a professional business. Create structured plans that outline what assets you'll trade, your account size, trading software, strategies, and risk management framework.

Think of Trade Plans as your business blueprint — not pre-trade setups for individual positions, but high-level operational plans for how you run your trading business.

Supported content formats:

  • TipTap JSON (native)
  • HTML
  • Markdown

Features:

  • Multi-format content (read & write)
  • Media URL extraction
  • Linked playbooks
  • Full-text search

List trade plans

Retrieve a paginated list of trade plans with optional search filtering.

Endpoint: GET /api/v1/trade-plans

Query parameters

ParameterTypeDescription
pageintegerPage number (default 1)
limitintegerItems per page, max 100 (default 50)
searchstringSearch in title, description, and subtitle
formatstringContent format: json, html, or markdown (default json)
include_mediabooleanInclude media URLs extraction (default false)

Example request

curl "https://app.mypropjournal.com/api/v1/trade-plans?limit=10&format=markdown" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Example response

{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "title": "2026 Futures Trading Business Plan",
      "description": "My comprehensive plan for trading ES and NQ futures professionally",
      "subtitle": "Q2 2026",
      "content": "# Trading Business Plan\n\n## Assets to Trade\n- ES Futures\n- NQ Futures\n\n## Account Size\n$50,000 starting capital...",
      "created_at": "2026-05-13T10:00:00Z",
      "updated_at": "2026-05-13T10:30:00Z",
      "trade_plan_playbooks": [
        {
          "playbook_id": "abc-123",
          "sort_order": 1
        }
      ]
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 45,
    "totalPages": 5
  }
}

Get single trade plan

Retrieve a specific trade plan by ID.

Endpoint: GET /api/v1/trade-plans/{id}

Query parameters

ParameterTypeDescription
formatstringContent format: json, html, or markdown (default json)
include_mediabooleanInclude media URLs extraction (default false)

Example with media extraction

curl "https://app.mypropjournal.com/api/v1/trade-plans/550e8400-e29b-41d4-a716-446655440000?include_media=true" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Example response

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "title": "NQ Breakout Setup",
    "content": { ... },
    "content_html": "<h1>Trade Setup</h1><ul><li><strong>Entry</strong>: Above 17,500</li>...</ul>",
    "content_markdown": "# Trade Setup\n\n- **Entry**: Above 17,500\n...",
    "media": {
      "images": [
        "https://storage.example.com/charts/nq-setup-2026-05-13.png"
      ],
      "videos": [],
      "all": [
        "https://storage.example.com/charts/nq-setup-2026-05-13.png"
      ]
    },
    "created_at": "2026-05-13T10:00:00Z",
    "updated_at": "2026-05-13T10:30:00Z"
  }
}

Create trade plan

Create a new trade plan with optional content in any format.

Endpoint: POST /api/v1/trade-plans

Request body

FieldTypeRequiredDescription
titlestringYesTrade plan title
descriptionstringNoBrief description
subtitlestringNoSubtitle or session info
contentobjectNoTipTap JSON content
content_htmlstringNoHTML content (alternative)
content_markdownstringNoMarkdown content (alternative)

Example with Markdown

const response = await fetch('https://app.mypropjournal.com/api/v1/trade-plans', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer mpj_your_api_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: '2026 Futures Trading Business Plan',
    description: 'Comprehensive trading business plan for ES/NQ futures',
    subtitle: 'Q2 2026 - Professional Trading Operations',
    content_markdown: `# Trading Business Plan

**Assets to Trade:**
- Primary: ES Futures (S&P 500)
- Secondary: NQ Futures (Nasdaq 100)
- Timeframes: 5-min for entries, 15-min for context

**Account Information:**
- Starting Capital: $50,000
- Platform: NinjaTrader 8
- Broker: Optimus Futures
- Data Feed: Rithmic

**Risk Management Framework:**
- Max Risk Per Trade: 1% of account ($500)
- Daily Loss Limit: 2% of account ($1,000)
- Max Position Size: 2 contracts ES, 1 contract NQ

**Trading Schedule:**
- Active Hours: 9:30 AM - 11:30 AM EST (market open session)
- Trading Days: Monday - Friday
- Max Trades/Day: 3 trades

**Business Goals:**
- Monthly Target: +5% account growth
- Yearly Target: +60% account growth
- Consistency Goal: 70% win rate on A+ setups

**Strategies:**
See linked playbooks for detailed entry/exit strategies.
`
  })
});

const data = await response.json();
console.log('Created:', data.data.id);

Example response

{
  "data": {
    "id": "new-uuid",
    "title": "ES Morning Breakout",
    "description": "Pre-market analysis for ES futures",
    "subtitle": "Market Open Strategy",
    "content": { ... },
    "content_html": "<h1>Trade Setup</h1>...",
    "content_markdown": "# Trade Setup\n\n## Entry Criteria...",
    "created_at": "2026-05-13T14:00:00Z",
    "updated_at": "2026-05-13T14:00:00Z"
  }
}

Update trade plan

Update an existing trade plan. Only include fields you want to change.

Endpoint: PUT /api/v1/trade-plans/{id}

Request body

FieldTypeDescription
titlestringUpdate title
descriptionstringUpdate description
subtitlestringUpdate subtitle
contentobjectUpdate with TipTap JSON
content_htmlstringUpdate with HTML
content_markdownstringUpdate with Markdown

Example

curl -X PUT "https://app.mypropjournal.com/api/v1/trade-plans/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer mpj_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated: 2026 Q3 Trading Business Plan",
    "content_markdown": "# Updated Business Plan\n\nIncreased daily loss limit to 2.5% based on Q2 performance..."
  }'

Delete trade plan

Delete a trade plan permanently.

Endpoint: DELETE /api/v1/trade-plans/{id}

Cascade Delete Warning

Deleting a trade plan will permanently cascade delete the following related data:

  • All playbook associations linking this plan to playbooks
  • All tag associations for this plan

This action cannot be undone. The API response will include warnings about what data was affected.

Example

curl -X DELETE "https://app.mypropjournal.com/api/v1/trade-plans/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer mpj_your_api_key_here"

Response

{
  "message": "Trade plan deleted successfully"
}

Use cases

MCP Server: Create annual trading plan

import requests
from datetime import datetime

def create_trading_business_plan(api_key, plan_details):
    """Create a comprehensive trading business plan"""
    response = requests.post(
        'https://app.mypropjournal.com/api/v1/trade-plans',
        headers={
            'Authorization': f'Bearer {api_key}',
            'Content-Type': 'application/json'
        },
        json={
            'title': f'Trading Business Plan - {datetime.now().year}',
            'subtitle': f'Professional Trading Operations',
            'description': 'Comprehensive business plan for systematic trading',
            'content_markdown': plan_details
        }
    )
    return response.json()

# Use with Claude or other LLM to generate comprehensive plans
plan_markdown = """
# 2026 Trading Business Plan

**Business Overview:**
Professional futures trader specializing in ES/NQ momentum strategies.

**Capital & Risk:**
- Starting Capital: $100,000
- Max Risk Per Trade: 1%
- Daily Loss Limit: 2%

**Assets & Markets:**
- ES Futures (primary)
- NQ Futures (secondary)
- Trading hours: 9:30 AM - 11:30 AM EST

**Goals:**
- Monthly: +5% growth
- Yearly: +60% return
- Win Rate: 70%+ on A+ setups

**Software & Tools:**
- Platform: NinjaTrader 8
- Charting: TradingView Pro
- Journal: My Prop Journal
"""

result = create_trading_business_plan('mpj_your_key', plan_markdown)
print(f"Created business plan: {result['data']['id']}")

Export business plans

// Export all trading business plans as Markdown
const response = await fetch(
  'https://app.mypropjournal.com/api/v1/trade-plans?format=markdown&limit=100',
  {
    headers: { 'Authorization': 'Bearer mpj_your_api_key' }
  }
);

const data = await response.json();

// Export each business plan as a separate file
for (const plan of data.data) {
  const filename = `${plan.title.replace(/\s+/g, '-').toLowerCase()}.md`;
  await fs.writeFile(
    `./business-plans/${filename}`,
    `# ${plan.title}\n\n**Description:** ${plan.description}\n\n${plan.content}`
  );
}

console.log(`Exported ${data.data.length} trading business plans`);

Next steps