← MCP Security Catalog

Macrocosmos MCP 0.2.2

pypi · macrocosmos-mcp · latest release

Verified with no proven findings
Security result
7
Observed tools
Version rating
Change risk

Independent inventory

Observed 2026-08-22T01:03:08.602Z using mcpSecurity-inventory. Protocol 2025-06-18.

ToolCategoryRisk
build_dataset Build a dataset from collected data before the 7-day task completion. Use this when you have enough data and don't want to wait for the full collection period. WARNING: Building a dataset will STOP the crawler and de-register it from the network. The crawler will no longer collect new data after this operation. Parameters: - crawler_id (str, REQUIRED): The ID of the crawler to build dataset from (Get this from get_gravity_task_status response - look for 'crawler_ids' field) - max_rows (int, default: 10000): Maximum number of rows to include in the dataset - email (str, optional): Email address for notification when dataset is ready - redirect_url (str, optional): URL to redirect to from the email notification Returns: - dataset_id: Unique identifier to track the dataset build - Build status and progress information (10 steps total) Example: build_dataset( crawler_id="crawler-0-multicrawler-9f518ae4-xxxx", max_rows=10000, email="user@example.com" )
Input schema
{
  "properties": {
    "crawler_id": {
      "title": "Crawler Id",
      "type": "string"
    },
    "max_rows": {
      "default": 10000,
      "title": "Max Rows",
      "type": "integer"
    },
    "email": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Email"
    },
    "redirect_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "https://app.macrocosmos.ai/",
      "title": "Redirect Url"
    }
  },
  "required": [
    "crawler_id"
  ],
  "title": "build_datasetArguments",
  "type": "object"
}
Output schema
{
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "build_datasetOutput",
  "type": "object"
}
cancel_dataset Cancel a dataset build or purge a completed dataset. Parameters: - dataset_id (str, REQUIRED): The ID of the dataset to cancel/purge Returns: - Success or error message Example: cancel_dataset(dataset_id="dataset-71e97cfa-xxxx-xxxx-xxxx-33cd91be9028")
Input schema
{
  "properties": {
    "dataset_id": {
      "title": "Dataset Id",
      "type": "string"
    }
  },
  "required": [
    "dataset_id"
  ],
  "title": "cancel_datasetArguments",
  "type": "object"
}
Output schema
{
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "cancel_datasetOutput",
  "type": "object"
}
cancel_gravity_task Cancel a running Gravity task and stop data collection. Parameters: - gravity_task_id (str, REQUIRED): The ID of the gravity task to cancel Returns: - Success or error message Example: cancel_gravity_task(gravity_task_id="multicrawler-9f518ae4-xxxx-xxxx-xxxx-8b73d7cd4c49")
Input schema
{
  "properties": {
    "gravity_task_id": {
      "title": "Gravity Task Id",
      "type": "string"
    }
  },
  "required": [
    "gravity_task_id"
  ],
  "title": "cancel_gravity_taskArguments",
  "type": "object"
}
Output schema
{
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "cancel_gravity_taskOutput",
  "type": "object"
}
create_gravity_task Create a Gravity task for large-scale data collection from X (Twitter) or Reddit. Use this for collecting large datasets over time (up to 7 days). For quick queries (up to 1000 results), use query_on_demand_data instead. The task registers on the network within 20 minutes and collects data for 7 days. You'll receive an email notification when the dataset is ready for download. Parameters: - tasks (List[dict], REQUIRED): List of task objects, each containing: * platform (str): 'x' or 'reddit' * topic (str): The hashtag/subreddit to monitor - For X: MUST start with '#' or '$' (e.g., '#ai', '$BTC') - plain keywords are rejected! - For Reddit: subreddit name (e.g., 'r/MachineLearning') * keyword (str, optional): Additional keyword filter within the topic - Filters posts to only those containing this keyword - Example: topic='#Bittensor', keyword='dTAO' -> only #Bittensor posts mentioning 'dTAO' - name (str, optional): Name for the task (helps organize multiple tasks) - email (str, optional): Email address for notification when dataset is ready - redirect_url (str, optional): URL to redirect to from the email notification Returns: - gravity_task_id: Unique identifier to track and manage the task Examples: 1. Basic collection: create_gravity_task( tasks=[{"platform": "x", "topic": "#ai"}], name="AI Tweets" ) 2. With keyword filter: create_gravity_task( tasks=[{"platform": "x", "topic": "#Bittensor", "keyword": "dTAO"}], name="Bittensor dTAO mentions" ) 3. Multiple platforms: create_gravity_task( tasks=[ {"platform": "x", "topic": "#ai", "keyword": "LLM"}, {"platform": "reddit", "topic": "r/MachineLearning"} ], name="AI Data Collection", email="user@example.com" )
Input schema
{
  "properties": {
    "tasks": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Tasks",
      "type": "array"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "email": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Email"
    },
    "redirect_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "https://app.macrocosmos.ai/",
      "title": "Redirect Url"
    }
  },
  "required": [
    "tasks"
  ],
  "title": "create_gravity_taskArguments",
  "type": "object"
}
Output schema
{
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "create_gravity_taskOutput",
  "type": "object"
}
get_dataset_status Get the status of a dataset build and download links when ready. Parameters: - dataset_id (str, REQUIRED): The ID of the dataset to check Returns: - Build status (Running, Completed, etc.) - Progress steps (10 total steps) - When completed: Download URLs for Parquet files - File metadata (size, row count, expiration date) Example: get_dataset_status(dataset_id="dataset-71e97cfa-xxxx-xxxx-xxxx-33cd91be9028")
Input schema
{
  "properties": {
    "dataset_id": {
      "title": "Dataset Id",
      "type": "string"
    }
  },
  "required": [
    "dataset_id"
  ],
  "title": "get_dataset_statusArguments",
  "type": "object"
}
Output schema
{
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_dataset_statusOutput",
  "type": "object"
}
get_gravity_task_status Get the status of a Gravity task and see how much data has been collected. Parameters: - gravity_task_id (str, REQUIRED): The ID of the gravity task to check - include_crawlers (bool, default: True): Whether to include detailed crawler information Set to True to see records_collected and bytes_collected for each crawler Returns: - Task status (Running, Completed, Pending, etc.) - Task name and start time - List of crawler IDs (needed for build_dataset) - When include_crawlers=True: records_collected, bytes_collected per crawler Example: get_gravity_task_status(gravity_task_id="multicrawler-9f518ae4-xxxx-xxxx-xxxx-8b73d7cd4c49")
Input schema
{
  "properties": {
    "gravity_task_id": {
      "title": "Gravity Task Id",
      "type": "string"
    },
    "include_crawlers": {
      "default": true,
      "title": "Include Crawlers",
      "type": "boolean"
    }
  },
  "required": [
    "gravity_task_id"
  ],
  "title": "get_gravity_task_statusArguments",
  "type": "object"
}
Output schema
{
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_gravity_task_statusOutput",
  "type": "object"
}
query_on_demand_data Fetch real-time social media data from X (Twitter) and Reddit through the Macrocosmos SN13 network. IMPORTANT: This tool requires 'source' parameter to be either 'X' or 'REDDIT' (case-sensitive). Parameters: - source (str, REQUIRED): Data platform - must be 'X' or 'REDDIT' - usernames (List[str], optional): Up to 5 usernames to monitor. * For X: '@' symbol is optional (e.g., ['elonmusk', '@spacex'] both work) * NOT available for Reddit - keywords (List[str], optional): Up to 5 keywords/hashtags to search * For X: any keywords or hashtags (e.g., ['AI', 'crypto', '#bitcoin']) * For Reddit: subreddit names (e.g., ['r/astronomy', 'space']) or 'r/all' for all subreddits - start_date (str, optional): Start date/datetime in YYYY-MM-DD or ISO format * Examples: '2024-04-01' or '2024-01-01T00:00:00Z' * Defaults to 24 hours ago from current time if not specified - end_date (str, optional): End date/datetime in YYYY-MM-DD or ISO format * Examples: '2024-04-25' or '2024-06-03T23:59:59Z' * Defaults to current time if not specified - limit (int, optional): Maximum number of results to return (range: 1-1000, default: 10) - keyword_mode (str, optional): How to match keywords - 'any' (default) or 'all' * 'any': returns posts matching ANY of the keywords * 'all': returns posts matching ALL of the keywords Default Behavior (when dates not specified): The tool searches the last 24 hours (from current time back to 24 hours ago). Usage Examples: 1. Get recent tweets from specific users: query_on_demand_data(source='X', usernames=['@elonmusk', '@spacex'], limit=20) 2. Search tweets by keywords in last 24 hours: query_on_demand_data(source='X', keywords=['AI', 'machine learning'], limit=30) 3. Monitor specific users AND filter by keywords: query_on_demand_data(source='X', usernames=['@nasa'], keywords=['space', 'mars'], limit=20) 4. Monitor Reddit subreddits: query_on_demand_data(source='REDDIT', keywords=['r/astronomy', 'space'], limit=50) 5. Search across all of Reddit with date range: query_on_demand_data(source='REDDIT', keywords=['r/all', 'space'], start_date='2025-04-01', end_date='2025-04-02', limit=50) 6. Strict keyword matching (requires ALL keywords): query_on_demand_data(source='X', keywords=['AI', 'machine learning'], keyword_mode='all', limit=30) 7. Precise datetime range search: query_on_demand_data(source='X', keywords=['Bitcoin'], start_date='2024-06-01T00:00:00Z', end_date='2024-06-03T23:59:59Z', limit=100) Returns: JSON object containing: - status: "success" or error information - data: Array of posts/tweets with full content, user information, engagement metrics, timestamps, platform-specific metadata, and media attachments - meta: Processing statistics (miners queried, response rates, items returned, etc.) Platform-Specific Notes: - X (Twitter): '@' symbol is optional for usernames - Reddit: Does NOT support username filtering, only subreddit/keyword searches - All timestamps returned in UTC format
Input schema
{
  "properties": {
    "source": {
      "title": "Source",
      "type": "string"
    },
    "usernames": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Usernames"
    },
    "keywords": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Keywords"
    },
    "start_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Start Date"
    },
    "end_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "End Date"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "keyword_mode": {
      "default": "any",
      "title": "Keyword Mode",
      "type": "string"
    }
  },
  "required": [
    "source"
  ],
  "title": "query_on_demand_dataArguments",
  "type": "object"
}
Output schema
{
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "query_on_demand_dataOutput",
  "type": "object"
}

Resources 0

Resource templates 0

Prompts 0

Changes from previous version

No completed comparison is available.

RiskChangeSubject
No material changes recorded.

Confirmed vulnerabilities

SeverityFindingAdvisory
No confirmed vulnerability is published for this version.

Provenance

Artifact SHA-256: 29b57a12750886ccb928bd37179072954644c38a2d2e164d63f284d0477c4167

Scanner: mcp-proof-engine 0.1.0.

Let’s talk about MCP security.

Share your details and our security team will contact you.