MCP Resources

Complete reference for MCP data resources and endpoints

Complete reference for all resources available through the Appizer MCP server.

Overview

The Appizer MCP server provides both Resources (read-only data access via URI patterns) and Tools (interactive operations with parameters). This document covers the Resource endpoints, while the Tools documentation covers the interactive operations.

Resource Types

MCP provides access to the following resource types:

  • Apps - Application configurations, metadata, and statistics
  • Events - User activity and behavior data with filtering
  • Users - User profiles, properties, and event history
  • Audiences - User segments and cohort information
  • Analytics - Pre-calculated metrics and insights
  • Versions - App version history and release information
  • Campaigns - Push notification campaigns and delivery data

Apps

List All Apps

text
GET /mcp/resources

Returns all apps accessible to your organization.

Response:

json
{
  "resources": {
    "apps": [
      {
        "id": "app_123",
        "name": "Mobile App",
        "description": "iOS and Android app",
        "type": "app",
        "uri": "/mcp/resources/apps/app_123"
      }
    ]
  }
}

Get App Details

text
GET /mcp/resources/apps/:appId

Returns detailed information about a specific app.

Response:

json
{
  "id": "app_123",
  "name": "Mobile App",
  "description": "iOS and Android app",
  "created_at": "2025-01-15T10:30:00Z",
  "updated_at": "2025-07-01T14:22:10Z",
  "stats": {
    "users": 15420,
    "events": 982345,
    "last_activity": "2025-07-19T21:15:33Z"
  },
  "top_events": [
    {
      "name": "app_open",
      "count": 45678
    },
    {
      "name": "purchase",
      "count": 2341
    }
  ]
}

Events

Query Events

text
GET /mcp/events

Query events with filters.

Parameters:

Parameter Type Description
app_id string Filter by app ID
event_name string Filter by event name
user_id string Filter by user ID
start_date string Start date (ISO 8601)
end_date string End date (ISO 8601)
limit integer Max results (default: 100, max: 1000)
offset integer Pagination offset (default: 0)

Response:

json
{
  "events": [
    {
      "id": "evt_789",
      "app_id": "app_123",
      "user_id": "user_456",
      "event_name": "purchase",
      "properties": {
        "amount": 49.99,
        "item": "Premium Plan"
      },
      "created_at": "2025-07-19T20:15:33Z"
    }
  ],
  "pagination": {
    "total": 982345,
    "limit": 100,
    "offset": 0,
    "has_more": true
  }
}

Example: Get Recent Purchases

javascript
const response = await fetch(
  'https://api.appizer.com/mcp/events?app_id=app_123&event_name=purchase&limit=10',
  {
    headers: {
      'X-MCP-API-Key': process.env.APPIZER_MCP_API_KEY
    }
  }
);

const data = await response.json();
console.log(data.events);

Users

Get User Data

text
GET /mcp/users/:userId

Returns detailed user information.

Response:

json
{
  "id": "user_456",
  "external_id": "user_123",
  "email": "user@example.com",
  "phone": "+1234567890",
  "properties": {
    "name": "John Doe",
    "plan": "premium",
    "signup_date": "2023-06-15"
  },
  "created_at": "2023-06-15T10:30:00Z",
  "last_active": "2025-07-19T20:15:33Z",
  "event_count": 1234,
  "origin": {
    "channel": "ios-app",
    "campaign": "spring-launch"
  }
}

Example: Get User Event History

python

user_id = 'user_456'

# Get user details
user_response = requests.get(
    f'https://api.appizer.com/mcp/users/{user_id}',
    headers={'X-MCP-API-Key': os.getenv('APPIZER_MCP_API_KEY')}
)

# Get user's recent events
events_response = requests.get(
    'https://api.appizer.com/mcp/events',
    headers={'X-MCP-API-Key': os.getenv('APPIZER_MCP_API_KEY')},
    params={'user_id': user_id, 'limit': 50}
)

user_data = user_response.json()
user_events = events_response.json()['events']

print(f"User: {user_data['properties']['name']}")
print(f"Recent events: {len(user_events)}")

Audiences

List Audiences

text
GET /mcp/resources/audiences

Returns all audiences for an app.

Parameters:

Parameter Type Description
app_id string Filter by app ID

Response:

json
{
  "audiences": [
    {
      "id": "aud_456",
      "name": "Active Users",
      "description": "Users active in the last 30 days",
      "type": "audience",
      "app_id": "app_123",
      "user_count": 5420,
      "uri": "/mcp/resources/audiences/aud_456"
    }
  ]
}

Get Audience Details

text
GET /mcp/resources/audiences/:audienceId

Returns detailed audience information including user list.

Response:

json
{
  "id": "aud_456",
  "name": "Active Users",
  "description": "Users active in the last 30 days",
  "app_id": "app_123",
  "user_count": 5420,
  "criteria": "Users with last_active within 30 days",
  "created_at": "2025-01-10T09:15:00Z",
  "updated_at": "2025-07-19T20:00:00Z",
  "users": [
    {
      "user_id": "user_456",
      "email": "user@example.com",
      "last_active": "2025-07-19T20:15:33Z"
    }
  ]
}

Versions

List App Versions

text
GET /mcp/resources/apps/:appId/versions

Returns version release history for an app.

Response:

json
{
  "app_id": "app_123",
  "app_name": "Mobile App",
  "current_version": "2.1.0",
  "versions": [
    {
      "id": "ver_789",
      "version": "2.1.0",
      "release_notes": "New onboarding flow",
      "released_at": "2026-01-15T10:00:00Z",
      "created_by": "user@example.com"
    },
    {
      "id": "ver_456",
      "version": "2.0.0",
      "release_notes": "Major redesign",
      "released_at": "2025-12-01T09:00:00Z",
      "created_by": "user@example.com"
    }
  ],
  "total": 2
}

Get App Versions Tool

The get_app_versions MCP tool allows AI assistants to fetch version history with optional date filtering.

Parameters:

Parameter Type Description
app_id string App ID (required)
start_date string Filter versions released after this date (ISO 8601, optional)
end_date string Filter versions released before this date (ISO 8601, optional)

Example Use Case:

python
# AI assistant analyzing version impact

# Get versions for an app
versions_response = requests.get(
    'https://api.appizer.com/mcp/resources/apps/app_123/versions',
    headers={'X-MCP-API-Key': os.getenv('APPIZER_MCP_API_KEY')}
)

versions = versions_response.json()['versions']

# Find version 2.0 release date
v2_release = next(v for v in versions if v['version'] == '2.0.0')
release_date = v2_release['released_at']

# Query events before and after release
before_events = requests.get(
    'https://api.appizer.com/mcp/events',
    headers={'X-MCP-API-Key': os.getenv('APPIZER_MCP_API_KEY')},
    params={
        'app_id': 'app_123',
        'end_date': release_date,
        'limit': 1000
    }
)

after_events = requests.get(
    'https://api.appizer.com/mcp/events',
    headers={'X-MCP-API-Key': os.getenv('APPIZER_MCP_API_KEY')},
    params={
        'app_id': 'app_123',
        'start_date': release_date,
        'limit': 1000
    }
)

# Compare metrics
print(f"Events before v2.0: {len(before_events.json()['events'])}")
print(f"Events after v2.0: {len(after_events.json()['events'])}")

AI Prompt Example:

"Compare user engagement metrics before and after we released version 2.0"

The AI assistant will:

  1. Use get_app_versions to find the v2.0 release date
  2. Query events before and after that date
  3. Calculate and compare engagement metrics
  4. Provide insights on the version's impact

Campaigns

List Push Campaigns

text
GET /mcp/resources/campaigns

Returns all push notification campaigns for an app.

Parameters:

Parameter Type Description
app_id string Filter by app ID
status string Filter by status (scheduled, live, paused, sent)
limit integer Max results (default: 50)

Response:

json
{
  "app_id": "app_123",
  "campaigns": [
    {
      "id": "camp_789",
      "name": "Welcome Series",
      "title": "Welcome to our app!",
      "status": "live",
      "schedule_type": "trigger",
      "trigger_event": "user_signup",
      "audience_id": "aud_456",
      "created_at": "2025-07-15T10:00:00Z",
      "stats": {
        "sent": 2451,
        "delivered": 2310,
        "clicked": 189,
        "converted": 23
      }
    }
  ],
  "total": 1
}

Get Campaign Details

text
GET /mcp/resources/campaigns/:campaignId

Returns detailed campaign information including delivery analytics.

Response:

json
{
  "id": "camp_789",
  "name": "Welcome Series",
  "title": "Welcome to our app!",
  "message": "Thanks for joining! Here's how to get started...",
  "status": "live",
  "schedule_type": "trigger",
  "trigger_event": "user_signup",
  "audience_id": "aud_456",
  "audience_name": "New Users",
  "created_at": "2025-07-15T10:00:00Z",
  "updated_at": "2025-07-19T15:30:00Z",
  "stats": {
    "sent": 2451,
    "delivered": 2310,
    "clicked": 189,
    "converted": 23,
    "delivery_rate": 94.3,
    "click_rate": 8.2,
    "conversion_rate": 1.0
  },
  "performance": {
    "avg_delivery_time": "2.3s",
    "peak_delivery_hour": "14:00",
    "best_performing_segment": "ios-users"
  }
}

Analytics

Get Engagement Metrics

text
GET /mcp/analytics/engagement

Returns comprehensive engagement metrics for an app.

Parameters:

Parameter Type Description
app_id string App ID (required)
start_date string Start date (ISO 8601)
end_date string End date (ISO 8601)
segment string User segment filter (optional)

Response:

json
{
  "app_id": "app_123",
  "period": {
    "start_date": "2025-07-01",
    "end_date": "2025-07-19"
  },
  "metrics": {
    "dau": 1250,
    "wau": 5420,
    "mau": 15420,
    "stickiness": {
      "daily_to_weekly": 23.1,
      "weekly_to_monthly": 28.4,
      "daily_to_monthly": 8.1
    },
    "retention": {
      "day_1": 85.2,
      "day_7": 62.1,
      "day_30": 41.3
    }
  },
  "segments": [
    {
      "name": "ios-users",
      "dau": 890,
      "retention_day_7": 65.4
    },
    {
      "name": "android-users", 
      "dau": 360,
      "retention_day_7": 56.2
    }
  ]
}

Get Event Analytics

text
GET /mcp/analytics/events/:eventName

Returns detailed analytics for a specific event.

Parameters:

Parameter Type Description
app_id string App ID (required)
start_date string Start date (ISO 8601)
end_date string End date (ISO 8601)
group_by string Time grouping (hour, day, week, month)

Response:

json
{
  "event_name": "purchase_completed",
  "app_id": "app_123",
  "period": {
    "start_date": "2025-07-01",
    "end_date": "2025-07-19"
  },
  "total_events": 1247,
  "unique_users": 892,
  "trends": [
    {
      "date": "2025-07-01",
      "count": 45,
      "unique_users": 38
    },
    {
      "date": "2025-07-02", 
      "count": 52,
      "unique_users": 41
    }
  ],
  "properties": {
    "amount": {
      "avg": 24.99,
      "median": 19.99,
      "p95": 49.99
    },
    "currency": {
      "USD": 89.2,
      "EUR": 7.8,
      "GBP": 3.0
    }
  },
  "peak_times": {
    "hour_of_day": "14:00",
    "day_of_week": "Tuesday",
    "timezone": "UTC"
  }
}

Get Funnel Analytics

text
GET /mcp/analytics/funnels

Returns conversion funnel analysis.

Parameters:

Parameter Type Description
app_id string App ID (required)
events array Array of event names in sequence
start_date string Start date (ISO 8601)
end_date string End date (ISO 8601)
time_window string Max time between steps (default: "7 days")

Response:

json
{
  "app_id": "app_123",
  "funnel": {
    "events": ["app_opened", "view_product", "add_to_cart", "purchase_completed"],
    "time_window": "7 days"
  },
  "steps": [
    {
      "event": "app_opened",
      "users": 10000,
      "conversion_rate": 100.0
    },
    {
      "event": "view_product", 
      "users": 4500,
      "conversion_rate": 45.0,
      "dropoff_rate": 55.0
    },
    {
      "event": "add_to_cart",
      "users": 1800,
      "conversion_rate": 18.0,
      "dropoff_rate": 60.0
    },
    {
      "event": "purchase_completed",
      "users": 720,
      "conversion_rate": 7.2,
      "dropoff_rate": 60.0
    }
  ],
  "overall_conversion": 7.2,
  "analysis": {
    "biggest_dropoff": "view_product → add_to_cart",
    "dropoff_percentage": 60.0,
    "recommendation": "Optimize product page layout and add clear CTAs"
  }
}

Pagination

All list endpoints support pagination:

javascript
async function getAllEvents(appId) {
  let allEvents = [];
  let offset = 0;
  const limit = 1000;
  let hasMore = true;

  while (hasMore) {
    const response = await fetch(
      `https://api.appizer.com/mcp/events?app_id=${appId}&limit=${limit}&offset=${offset}`,
      {
        headers: {
          'X-MCP-API-Key': process.env.APPIZER_MCP_API_KEY
        }
      }
    );

    const data = await response.json();
    allEvents = allEvents.concat(data.events);
    
    hasMore = data.pagination.has_more;
    offset += limit;
  }

  return allEvents;
}

Error Responses

Status Code Description
400 Bad Request - Invalid parameters
401 Unauthorized - Invalid or missing MCP API key
403 Forbidden - Insufficient permissions
404 Not Found - Resource not found
429 Too Many Requests - Rate limit exceeded
500 Internal Server Error

Best Practices

  • Use pagination for large datasets
  • Cache frequently accessed resources
  • Filter events by date range to reduce response size
  • Monitor API usage to stay within rate limits
  • Handle errors gracefully with retry logic
  • Use specific queries instead of fetching all data

Next Steps

On this page