Skip to main content
Glama

Data Planning Agent

by opendedup
prp_schema.py•4.11 kB
""" Data Product Requirement Prompt Schema Models for the structured Data PRP output format. """ from typing import List, Optional from pydantic import BaseModel, Field class ExecutiveSummary(BaseModel): """Executive summary section of the Data PRP.""" objective: str = Field(description="One-sentence summary of the business goal") target_audience: str = Field(description="Who will use this analysis") key_question: str = Field(description="The primary question to be answered") class DataRequirements(BaseModel): """Data requirements section of the Data PRP.""" key_metrics: List[str] = Field( default_factory=list, description="List of key metrics needed" ) dimensions_and_breakdowns: List[str] = Field( default_factory=list, description="How data should be segmented" ) filters: List[str] = Field(default_factory=list, description="Conditions and constraints") class SuccessCriteria(BaseModel): """Success criteria section of the Data PRP.""" primary_metric: str = Field(description="Main success indicator") timeline: str = Field(description="Delivery and update expectations") class DataProductRequirementPrompt(BaseModel): """ Complete Data Product Requirement Prompt structure. This represents the final output that will be generated as markdown. """ executive_summary: ExecutiveSummary = Field(description="Executive summary section") business_context: str = Field( description="Detailed paragraph explaining the business scenario" ) data_requirements: DataRequirements = Field(description="Data requirements section") success_criteria: SuccessCriteria = Field(description="Success criteria section") def to_markdown(self) -> str: """ Convert the Data PRP to markdown format. Returns: Formatted markdown string following the exact PRD specification """ lines = [] # Title lines.append("# Data Product Requirement Prompt") lines.append("") # 1. Executive Summary lines.append("## 1. Executive Summary") lines.append("") lines.append(f"* **Objective:** {self.executive_summary.objective}") lines.append(f"* **Target Audience:** {self.executive_summary.target_audience}") lines.append(f"* **Key Question:** {self.executive_summary.key_question}") lines.append("") # 2. Business Context lines.append("## 2. Business Context") lines.append("") lines.append(self.business_context) lines.append("") # 3. Data Requirements lines.append("## 3. Data Requirements") lines.append("") # 3.1. Key Metrics lines.append("### 3.1. Key Metrics") lines.append("") if self.data_requirements.key_metrics: for metric in self.data_requirements.key_metrics: lines.append(f"* {metric}") else: lines.append("* _To be determined_") lines.append("") # 3.2. Dimensions & Breakdowns lines.append("### 3.2. Dimensions & Breakdowns") lines.append("") if self.data_requirements.dimensions_and_breakdowns: for dimension in self.data_requirements.dimensions_and_breakdowns: lines.append(f"* {dimension}") else: lines.append("* _To be determined_") lines.append("") # 3.3. Filters lines.append("### 3.3. Filters") lines.append("") if self.data_requirements.filters: for filter_item in self.data_requirements.filters: lines.append(f"* {filter_item}") else: lines.append("* _No specific filters_") lines.append("") # 4. Success Criteria lines.append("## 4. Success Criteria") lines.append("") lines.append(f"* **Primary Metric:** {self.success_criteria.primary_metric}") lines.append(f"* **Timeline:** {self.success_criteria.timeline}") lines.append("") return "\n".join(lines)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/opendedup/data-planning-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server