Skip to main content
Glama
SreeTarak2

DataFlow MCP Server

by SreeTarak2

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOGS_DIRNoDirectory for log files. Default: ./logs.
LOG_LEVELNoLogging level (DEBUG, INFO, WARNING, ERROR). Default: INFO.
MONGO_URIYesMongoDB connection URI. Required.
MONGO_DB_NAMEYesMongoDB database name. Required.
MONGO_TIMEOUTNoConnection timeout in milliseconds. Default: 5000.
MONGO_USE_TLSNoEnable TLS for MongoDB connection. Default: false.
MONGO_POOL_SIZENoConnection pool size. Default: 10.
MONGO_CA_CERT_PATHNoPath to CA certificate file for TLS.
MONGO_MAX_IDLE_TIMENoMaximum idle time in milliseconds. Default: 45000.
MONGO_ALLOW_INVALID_CERTSNoAllow invalid certificates. Default: false.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
find_duplicate_contestsA

Read-only audit: find groups of LIVE contests that share the same normalized title (case/punctuation-insensitive, word-order-insensitive).

These are the records the duplicate-title gate would block on ingestion. Same-source exact-title duplicates are also shown here (they only update in place during ingestion, but if two records share a source + title the older one is effectively shadowed).

flag_contest_discrepancyA

Flag a factual discrepancy found in CONTEST DATA during AI research.

When a chatbot discovers a concrete, verifiable error in the Contests collection while doing research (e.g. the prize on the official page differs from what's stored), it can call this tool to save the finding to the flagged_discrepancies collection for human review.

This tool does NOT modify the Contests collection — it only records the finding. A human should review and resolve via the appropriate pipeline (apply_migration_patch, etc.).

get_records_for_structuringA

Fetch raw scraped records + the structuring prompt (contest-structuring-v4.0.txt, v4.0 schema) so a chatbot can structure them into the normalized Contests format.

submit_structured_recordsA

Submit structured contest records (following the contest-structuring-v4.0.txt schema) produced by a chatbot. Validates required fields and upserts into the Contests collection.

Deduplication key: source.name + title (same as process_raw_data). Plus an optional duplicate-title GATE (on by default): any record whose title matches an existing LIVE contest — same normalized title from a different source, or a reworded title from the same source — is SKIPPED and reported under "duplicates". The same-source exact-title match is the intended update path and still updates in place.

get_records_for_full_generationA

Fetch raw scraped records + BOTH prompts (contest-structuring-v4.0.txt + contest-details-v1.0.txt) so a chatbot can structure AND generate contest details in one pass.

Use this when you want to go from raw scraped data to published contest details in a single AI round-trip. The chatbot should:

  1. Read BOTH prompt texts (structuring schema + detail generation rules)

  2. For each record, use its URL (or title) to search the web and find the actual contest page

  3. Extract structured fields following the v4.0 schema

  4. Research and generate contest details following contest-details-v1.0.txt

  5. Return both via submit_full_generation

submit_full_generationA

Submit a full generation result that includes BOTH structured contest data AND contest details in one call.

Use this after get_records_for_full_generation. The JSON must contain an 'items' array, where each item has:

  • record: Structured contest data following the v4.0 schema

  • details: Contest details following contest-details-v1.0.txt schema

get_contests_for_detail_generationA

Return contests needing AI-generated detail pages, sorted by priority.

The response includes both the prompt text (contest-details-v1.0.txt) and the contest documents. Send both to Mistral so it can research and generate structured contest details.

Priority order: trending > open > high view velocity > recently added > prize value.

submit_contest_detailsA

Submit AI-generated contest details (from Mistral) for validation and storage.

The details are validated for quality, then saved to the contest_details collection with automatic versioning.

read_collectionB

Read documents from a MongoDB collection with filtering and pagination.

get_documentB

Get a single document by ID.

create_documentB

Create a new document in a collection.

update_documentC

Update an existing document in a collection.

delete_documentB

Delete a document from a collection.

get_records_for_eventsA

Fetch raw records + the Events prompt (event-structuring-v1.1.txt, events-v1.1 schema) so a chatbot can structure participatory events (conferences, workshops, meetups, webinars, summits, trainings).

Use this when you want to go from raw event URLs/titles to a structured event document in one AI round-trip. The chatbot should:

  1. Read the event prompt_text (events-v1.1 schema and rules)

  2. For each record, pin the target event (name, edition, location, domain) and hunt the official site's subpages (speakers, agenda, pricing, venue)

  3. Extract fields following the events-v1.1 schema

  4. Return ONE event JSON per record via submit_structured_events

submit_structured_eventsA

Submit structured event records (following the event-structuring-v1.1.txt events-v1.1 schema) produced by a chatbot and persist them to the Events collection.

This is the event counterpart of submit_structured_records:

  • Deduplication key: source.name + title (upsert-in-place on re-submit).

  • Optional duplicate-title GATE (on by default): a record whose title matches an existing LIVE event — same normalized title from a different source, or a reworded title from the same source — is SKIPPED and reported under "duplicates".

  • events-v1.1 defaults are applied (type="event", status="draft", visibility="public", featured=false, analytics=0) and off-schema enum values are downgraded to null with a warning (see details).

  • The audit metadata block is stripped unless keep_metadata=True.

get_eventsA

Read structured events from the Events collection with filters.

Use this to query events harvested by the pipeline — e.g. all upcoming conferences, or everything in draft status awaiting review.

get_events_overviewA

Get a quick overview of the Events collection.

Returns counts by eventType and status, plus the number of upcoming events. Use this to decide what to review or process next.

Returns: Dictionary with overview statistics.

get_events_for_detail_generationA

Return events needing AI-generated detail pages, sorted by priority.

The response includes both the prompt text (event-details-v1.0.txt) and the event documents. Send both to the LLM so it can research and generate structured event details (whyAttend, whoShouldAttend, benefits, tips, agenda highlights, FAQ, SEO).

Priority order: upcoming > published > registration open > has speakers/ agenda > recently added.

submit_event_detailsA

Submit AI-generated event details (from the LLM) for validation and storage.

The details are validated for quality (minimum word count, honest readingTime, no first-person, no hallucinated URLs), then saved to the event_details collection with automatic versioning.

get_event_detail_statusA

Get coverage metrics for the event detail generation pipeline.

Surfaces EventDetailGenerator.get_status: how many live events exist in the Events collection, how many already have event_details documents (broken down by detail status), how many still need generation, and the overall coverage percentage.

Use this to see how much event-detail work remains before deciding how many batches of get_events_for_detail_generation to run.

Returns: Dictionary with total_events, total_with_details, total_without_details, by_status, and coverage_pct.

health_checkA

Check the health status of the MCP server process.

Returns: Dictionary with health status and metrics

database_statusA

Check MongoDB connectivity separately from server health.

Returns: Database connection status and any connection error message

get_contests_missing_imagesA

Fetch contests where the primary image URL is missing or empty.

Use this to identify documents that need AI-generated replacement banners.

get_contests_with_broken_imagesA

Fetch contests whose image.primary.status is marked as 'broken'.

Returns the contests so the chatbot can display or re-generate banners.

generate_cover_prompt_for_contestA

Generate a premium image-generation prompt for one contest by ID.

This returns a single prompt string that can be fed into any image model when the original contest banner is missing.

verify_image_urlsA

Verify image URLs for contests and mark broken images in the database.

This tool scans contests that have an image.primary.url, performs a lightweight HTTP HEAD/GET to verify reachability, and updates image.primary.status to 'active' or 'broken'. It returns a report.

get_prompted_contestsA

Return the prompt text together with contest documents for AI processing.

Use this when Claude or ChatGPT needs both the instructions and the raw MongoDB contests in a single response so it can normalize them locally.

get_migration_statusA

Get overall migration progress statistics for the 810 contests.

Shows how many contests have been migrated to v4.0 schema, how many are pending, and what fields are missing.

Returns: Dictionary with migration progress and breakdown by field

get_contests_for_migrationA

Get a batch of existing contests that need migration to v4.0 schema.

Returns contests missing key fields like category, prizeSummary, or feeConfidence. Use pagination to process in batches.

apply_migration_patchA

Apply a validated normalized patch to update a single contest.

All patches go through 4 validations before writing:

  1. Field whitelist — only allowed fields may be patched

  2. Schema compliance — types, enums, formats checked

  3. Destructive write protection — populated fields not overwritten with null

  4. Cross-field consistency — no contradictory values

bulk_apply_migrationsA

Apply multiple migration patches in one batch (with validation).

All patches go through 4 validations before writing.

get_raw_data_statusA

Return a summary of what raw scraped data is available in CHRawdata.rawdata.

If source is provided (e.g. "contestwatchers", "opportunityDesk"), only records from that scraper are considered.

read_raw_collectionA

Read documents from the CHRawdata database (raw scraped data) with filtering and pagination.

get_scraped_overviewA

Get a quick, actionable overview of what raw scraped records are available.

Use this to see what's in the pipeline before deciding which source to work on. Returns counts by source, validation status breakdown, total records, newest/oldest record dates, and a few sample titles.

This is designed for AI agents (ChatGPT, Mistral, Claude) to quickly understand what data is available and decide what to work on next.

process_raw_dataA

Read validated raw records from CHRawdata.rawdata for a given scraper source, normalize, deduplicate, and upsert them into the primary Contests collection (ContestHopperDb).

NOTE: By default, only records with validationStatus="validated" are processed. Run get_records_for_validation + submit_raw_validation first.

get_records_for_validationA

Claim a batch of unvalidated raw records and return them with a validation prompt for a chatbot.

The chatbot uses its OWN web search capability to verify each record by visiting the source URL or searching the web for the contest title.

Records are atomically marked as 'in_progress' for this chatbot_id, preventing other chatbots from claiming the same records.

submit_raw_validationA

Submit validation results from a chatbot for raw scraped records.

The chatbot should have received records via get_records_for_validation, validated them using its own web search, and returned a JSON response. This tool processes that JSON and updates each record's validation status in the database.

submit_contest_validationA

Submit validation results from a chatbot for existing contest documents.

Same as submit_raw_validation but updates the Contests collection. Use this for Stage 2 validation before LLM normalization.

get_validation_statusA

Get an overview of the validation pipeline status.

Shows how many raw records are pending, in progress, validated, failed, or skipped — broken down by source if specified.

Use this to monitor progress across multiple chatbots and decide when to run process_raw_data.

get_records_for_contest_validationA

Claim a batch of unvalidated contest documents and return them with a validation prompt for a chatbot.

Similar to get_records_for_validation but works on the Contests collection. Use this for Stage 2 validation before LLM normalization.

The chatbot uses its OWN web search to verify each contest's key fields (title, deadline, prize, eligibility) against the source page.

get_validation_promptA

Preview the validation prompt without claiming any records.

Use this to see the instructions that will be sent to the chatbot before starting the validation workflow.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/SreeTarak2/dataflow_mcp'

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