Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,561Letters: 14Defects: 1,336counted 3 min ago
teppi

Server definition

Hash
sha256:875e1dada274a32d085ef16326dcd6c2bb972b62157531fa5f98518867df1c4d
What it is
What a remote MCP server returned when asked what it offers: 7 tools

The blob, as servednamed by its sha256

{ "instructions": "Cupix Compass MCP — construction site analysis tools.\n\nCURRENT PROJECT (IMPORTANT):\nThe server persists each user's selected team_domain and facility_key\nacross sessions. Do NOT re-collect this selection every session.\n\nAt the start of a new conversation, before calling\n`list-my-projects` for selection:\n 1. Call `check-current-project` once. If it returns saved\n values, use those.\n 2. Call analysis tools (`analyze-progress-and-forecasts`,\n `ask-about-project-data`, `search-site-photos`,\n `compare-site-findings`) with NO\n team_domain / facility_key arguments — the server resolves them\n from the saved current project.\n 3. Only when `check-current-project` returns \"No current\n project\", run `list-my-projects` → ask the user →\n `set-focus-project`.\n\nPass explicit team_domain / facility_key only when the user clearly\nwants to analyze a different project than the saved one.\n\nUse `compare-site-findings` for added/resolved/unchanged findings or\nother QA/QC changes between two dates. Keep the same dates and query\non follow-up calls unless the user changes the temporal window. Use\n`search-site-photos` for a visual search at only one point in time.\n", "tools": [ { "description": "\nAnalyze Work In Place (WIP) progress from SiteInsights(SI) — completion\nrates, delays, and forecasts.\nGenerates a progress report: overall completion, progress by category/vendor/level,\ndelay analysis, and estimated completion dates.\n**WORKFLOW:**\n- **Default**: call this tool with NO arguments. The server resolves\n team_domain/facility_key from the saved current project (set via\n `set-focus-project`). Do NOT call `list-my-projects`\n again just to obtain these values — the saved selection is the\n source of truth.\n- Only when the response indicates the current project is missing, run\n `list-my-projects` → ask the user → `set-focus-project`,\n then retry.\n- Pass explicit arguments **only** when the user clearly wants to\n analyze a different project than the saved one.\n\nArgs:\n team_domain: Omit by default. Pass only to override the current project.\n facility_key: Omit by default. Pass only to override the current project.\n user_intent: REQUIRED. Pass the user's original question or request verbatim. Used for analytics only, does not affect results.\n\nReturns:\n Progress analysis report with completion rates and forecasts\n", "inputSchema": { "properties": { "facility_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Facility Key" }, "team_domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Team Domain" }, "user_intent": { "default": "", "title": "User Intent", "type": "string" } }, "title": "compass_analyze_work_in_placeArguments", "type": "object" }, "name": "analyze-progress-and-forecasts", "outputSchema": { "$defs": { "Annotations": { "additionalProperties": true, "properties": { "audience": { "anyOf": [ { "items": { "enum": [ "user", "assistant" ], "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Audience" }, "priority": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "title": "Priority" } }, "title": "Annotations", "type": "object" }, "TextContent": { "additionalProperties": true, "description": "Text content for a message.", "properties": { "_meta": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Meta" }, "annotations": { "anyOf": [ { "$ref": "#/$defs/Annotations" }, { "type": "null" } ], "default": null }, "text": { "title": "Text", "type": "string" }, "type": { "const": "text", "title": "Type", "type": "string" } }, "required": [ "type", "text" ], "title": "TextContent", "type": "object" } }, "properties": { "result": { "items": { "$ref": "#/$defs/TextContent" }, "title": "Result", "type": "array" } }, "required": [ "result" ], "title": "compass_analyze_work_in_placeOutput", "type": "object" } }, { "description": "\nQuery the construction project database using natural language (Text-to-SQL).\nConverts natural language into SQL to retrieve captures, annotations, progress metrics,\nschedules, and other project records.\nPass the user's question as-is without modification.\nFor trade visibility, use `analyze-progress-and-forecasts` instead.\n**WORKFLOW:**\n- **Default**: call this tool with only `query`. The server resolves\n team_domain/facility_key from the saved current project (set via\n `set-focus-project`). Do NOT call `list-my-projects`\n again just to obtain these values.\n- Only when the response indicates the current project is missing, run\n `list-my-projects` → ask the user → `set-focus-project`,\n then retry.\n- Pass explicit team_domain/facility_key **only** when the user\n clearly wants to query a different project than the saved one.\n**Available tables:**\n- progresses: SI progress metrics (level, category, phase, workarea, cost, dates)\n- captures: Camera captures metadata (level, camera_model, capture_state, user_email)\n- records: Capture events with timestamps (captured_at, state, id)\n- photo_notes: Photonotes (description, state, user_email, created_at)\n- voice_notes: Voicenotes (level, description, state, user_email, created_at)\n- facilities: Site info (name, address, size, location, bim_count, created_at)\n- users: User profiles (name, email)\n- workareas: Spatial zones (level, name, user_name)\n\nArgs:\n query: Natural language question (pass as-is, no SQL syntax)\n team_domain: Omit by default. Pass only to override the current project.\n facility_key: Omit by default. Pass only to override the current project.\n user_intent: REQUIRED. Pass the user's original question or request verbatim. Used for analytics only, does not affect results.\n scope: Previous ask-about-project-data result identity to search within.\n limit: Number of rows per page. Values above 200 are capped at 200.\n cursor: Cursor for the next page of the same search.\n\nReturns:\n List of TextContent with query results and metadata\n", "inputSchema": { "$defs": { "ProjectDataSearchScope": { "additionalProperties": false, "properties": { "ids": { "items": { "pattern": "^[0-9]+$", "type": "string" }, "maxItems": 200, "title": "Ids", "type": "array" }, "mode": { "const": "within_previous_result", "title": "Mode", "type": "string" }, "source_table": { "enum": [ "elements", "captures", "records", "annotations", "voice_notes", "facilities", "users", "workareas" ], "title": "Source Table", "type": "string" } }, "required": [ "mode", "source_table", "ids" ], "title": "ProjectDataSearchScope", "type": "object" } }, "properties": { "cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Cursor" }, "facility_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Facility Key" }, "limit": { "default": 200, "title": "Limit", "type": "integer" }, "query": { "title": "Query", "type": "string" }, "scope": { "anyOf": [ { "$ref": "#/$defs/ProjectDataSearchScope" }, { "type": "null" } ], "default": null }, "team_domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Team Domain" }, "user_intent": { "default": "", "title": "User Intent", "type": "string" } }, "required": [ "query" ], "title": "compass_query_databaseArguments", "type": "object" }, "name": "ask-about-project-data", "outputSchema": { "$defs": { "Annotations": { "additionalProperties": true, "properties": { "audience": { "anyOf": [ { "items": { "enum": [ "user", "assistant" ], "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Audience" }, "priority": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "title": "Priority" } }, "title": "Annotations", "type": "object" }, "TextContent": { "additionalProperties": true, "description": "Text content for a message.", "properties": { "_meta": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Meta" }, "annotations": { "anyOf": [ { "$ref": "#/$defs/Annotations" }, { "type": "null" } ], "default": null }, "text": { "title": "Text", "type": "string" }, "type": { "const": "text", "title": "Type", "type": "string" } }, "required": [ "type", "text" ], "title": "TextContent", "type": "object" } }, "properties": { "result": { "items": { "$ref": "#/$defs/TextContent" }, "title": "Result", "type": "array" } }, "required": [ "result" ], "title": "compass_query_databaseOutput", "type": "object" } }, { "description": "Return the currently saved team_domain and facility_key for this user.", "inputSchema": { "properties": { "user_intent": { "default": "", "title": "User Intent", "type": "string" } }, "title": "compass_get_current_projectArguments", "type": "object" }, "name": "check-current-project", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "compass_get_current_projectOutput", "type": "object" } }, { "description": "Use for QA/QC questions about findings added, resolved, unchanged, moved, or otherwise changed between two dates. Use the prior dates again on a follow-up call and add level or confidence filters. The runtime uses pano camera coverage, so uncertain identity or possible movement is returned as INDETERMINATE instead of guessed ADDED/RESOLVED.", "inputSchema": { "$defs": { "DeltaStatus": { "enum": [ "ADDED", "RESOLVED", "MOVED", "UNCHANGED", "INDETERMINATE" ], "title": "DeltaStatus", "type": "string" } }, "properties": { "baseline_date": { "format": "date", "title": "Baseline Date", "type": "string" }, "comparison_date": { "format": "date", "title": "Comparison Date", "type": "string" }, "facility_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Facility Key" }, "level_ids": { "default": [], "items": { "type": "integer" }, "title": "Level Ids", "type": "array" }, "limit": { "default": 50, "title": "Limit", "type": "integer" }, "min_confidence": { "default": 0, "title": "Min Confidence", "type": "number" }, "minimum_level_number": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Minimum Level Number" }, "polygon": { "anyOf": [ { "items": { "items": { "maxItems": 2, "minItems": 2, "prefixItems": [ { "type": "number" }, { "type": "number" } ], "type": "array" }, "type": "array" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Polygon" }, "query": { "title": "Query", "type": "string" }, "statuses": { "default": [], "items": { "$ref": "#/$defs/DeltaStatus" }, "title": "Statuses", "type": "array" }, "team_domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Team Domain" }, "timezone": { "default": "UTC", "title": "Timezone", "type": "string" }, "user_intent": { "default": "", "title": "User Intent", "type": "string" } }, "required": [ "baseline_date", "comparison_date", "query" ], "title": "compass_compare_site_findingsArguments", "type": "object" }, "name": "compare-site-findings", "outputSchema": { "$defs": { "BackendDeltaRequest": { "properties": { "baseline_date": { "format": "date", "title": "Baseline Date", "type": "string" }, "comparison_date": { "format": "date", "title": "Comparison Date", "type": "string" }, "facility_key": { "maxLength": 100, "minLength": 1, "title": "Facility Key", "type": "string" }, "level_ids": { "default": [], "items": { "type": "integer" }, "maxItems": 50, "title": "Level Ids", "type": "array" }, "limit": { "default": 50, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer" }, "min_confidence": { "default": 0, "maximum": 1, "minimum": 0, "title": "Min Confidence", "type": "number" }, "minimum_level_number": { "anyOf": [ { "maximum": 200, "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "title": "Minimum Level Number" }, "polygon": { "anyOf": [ { "items": { "items": { "maxItems": 2, "minItems": 2, "prefixItems": [ { "type": "number" }, { "type": "number" } ], "type": "array" }, "type": "array" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Polygon" }, "query": { "maxLength": 200, "minLength": 1, "title": "Query", "type": "string" }, "schema_version": { "const": "1.0", "default": "1.0", "title": "Schema Version", "type": "string" }, "statuses": { "default": [], "items": { "$ref": "#/$defs/DeltaStatus" }, "title": "Statuses", "type": "array" }, "team_domain": { "maxLength": 100, "minLength": 1, "title": "Team Domain", "type": "string" }, "timezone": { "default": "UTC", "maxLength": 64, "minLength": 1, "title": "Timezone", "type": "string" } }, "required": [ "facility_key", "team_domain", "baseline_date", "comparison_date", "query" ], "title": "BackendDeltaRequest", "type": "object" }, "DeltaFinding": { "properties": { "baseline": { "anyOf": [ { "$ref": "#/$defs/SiteViewCitation" }, { "type": "null" } ] }, "comparison": { "anyOf": [ { "$ref": "#/$defs/SiteViewCitation" }, { "type": "null" } ] }, "reason": { "title": "Reason", "type": "string" }, "status": { "$ref": "#/$defs/DeltaStatus" } }, "required": [ "status", "reason", "baseline", "comparison" ], "title": "DeltaFinding", "type": "object" }, "DeltaStatus": { "enum": [ "ADDED", "RESOLVED", "MOVED", "UNCHANGED", "INDETERMINATE" ], "title": "DeltaStatus", "type": "string" }, "DeltaSummary": { "properties": { "added": { "title": "Added", "type": "integer" }, "indeterminate": { "title": "Indeterminate", "type": "integer" }, "moved": { "title": "Moved", "type": "integer" }, "resolved": { "title": "Resolved", "type": "integer" }, "unchanged": { "title": "Unchanged", "type": "integer" } }, "required": [ "added", "resolved", "moved", "unchanged", "indeterminate" ], "title": "DeltaSummary", "type": "object" }, "ProjectContext": { "properties": { "facility_key": { "title": "Facility Key", "type": "string" }, "team_domain": { "title": "Team Domain", "type": "string" } }, "required": [ "team_domain", "facility_key" ], "title": "ProjectContext", "type": "object" }, "SiteViewCitation": { "properties": { "bounding_box": { "items": { "type": "number" }, "title": "Bounding Box", "type": "array" }, "capture_date": { "format": "date-time", "title": "Capture Date", "type": "string" }, "capture_id": { "title": "Capture Id", "type": "integer" }, "category": { "title": "Category", "type": "string" }, "confidence": { "maximum": 1, "minimum": 0, "title": "Confidence", "type": "number" }, "description": { "title": "Description", "type": "string" }, "level_id": { "title": "Level Id", "type": "integer" }, "level_name": { "title": "Level Name", "type": "string" }, "observation_id": { "title": "Observation Id", "type": "string" }, "pano_id": { "title": "Pano Id", "type": "integer" }, "position": { "maxItems": 3, "minItems": 3, "prefixItems": [ { "type": "number" }, { "type": "number" }, { "type": "number" } ], "title": "Position", "type": "array" }, "record_id": { "title": "Record Id", "type": "integer" }, "severity": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Severity" }, "siteview_url": { "title": "Siteview Url", "type": "string" } }, "required": [ "observation_id", "capture_date", "capture_id", "record_id", "level_id", "level_name", "pano_id", "position", "category", "description", "severity", "confidence", "bounding_box", "siteview_url" ], "title": "SiteViewCitation", "type": "object" }, "SnapshotMetadata": { "properties": { "capture_ids": { "items": { "type": "integer" }, "title": "Capture Ids", "type": "array" }, "finding_count": { "title": "Finding Count", "type": "integer" }, "pano_count": { "title": "Pano Count", "type": "integer" }, "requested_date": { "format": "date", "title": "Requested Date", "type": "string" } }, "required": [ "requested_date", "capture_ids", "pano_count", "finding_count" ], "title": "SnapshotMetadata", "type": "object" } }, "properties": { "baseline": { "$ref": "#/$defs/SnapshotMetadata" }, "classification_policy": { "const": "conservative_camera_coverage_v1", "title": "Classification Policy", "type": "string" }, "comparison": { "$ref": "#/$defs/SnapshotMetadata" }, "findings": { "items": { "$ref": "#/$defs/DeltaFinding" }, "title": "Findings", "type": "array" }, "normalized_request": { "$ref": "#/$defs/BackendDeltaRequest" }, "project": { "$ref": "#/$defs/ProjectContext" }, "query_id": { "title": "Query Id", "type": "string" }, "returned": { "title": "Returned", "type": "integer" }, "schema_version": { "const": "1.0", "title": "Schema Version", "type": "string" }, "summary": { "$ref": "#/$defs/DeltaSummary" }, "total": { "title": "Total", "type": "integer" }, "warnings": { "items": { "type": "string" }, "title": "Warnings", "type": "array" } }, "required": [ "schema_version", "query_id", "classification_policy", "project", "normalized_request", "baseline", "comparison", "summary", "findings", "total", "returned", "warnings" ], "title": "DeltaToolResponse", "type": "object" } }, { "description": "\nList construction projects the user can access within a team.\n\n**Use this tool ONLY when the user wants to switch project or has no\nsaved current project.** If `check-current-project` returns a\nsaved facility_key, do NOT call this tool — call the analysis tool\ndirectly with no arguments.\n\nRequired workflow when this tool IS appropriate:\n1. Present the returned projects to the user.\n2. Wait for the user to select one.\n3. Call `set-focus-project` with team_domain and facility_key to persist\n the selection so future sessions skip this step.\n4. Then invoke analysis tools.\n\nArgs:\n team_domain: Team domain. Optional; if omitted, falls back to the\n saved current project, otherwise returns the team list so the\n caller can pick a team first.\n user_intent: REQUIRED. Pass the user's original question or request verbatim. Used for analytics only, does not affect results.\n\nReturns:\n str: Accessible facilities with their keys and names.\n", "inputSchema": { "properties": { "team_domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Team Domain" }, "user_intent": { "default": "", "title": "User Intent", "type": "string" } }, "title": "compass_list_projectsArguments", "type": "object" }, "name": "list-my-projects", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "compass_list_projectsOutput", "type": "object" } }, { "description": "\nSearch 360° captures (panoramic site photos) by visual content analysis.\nSearches what is VISUALLY SEEN in 360° captures — safety hazards, quality issues, work types,\nobjects, equipment, materials, and physical site conditions.\nDo NOT use for capture counts or statistics — use `ask-about-project-data` instead.\n**WORKFLOW:**\n- **Default**: call this tool with only `query` (and optionally\n date filters / limit). The server resolves team_domain/facility_key\n from the saved current project (set via `set-focus-project`).\n Do NOT call `list-my-projects` again just to obtain these\n values.\n- Only when the response indicates the current project is missing, run\n `list-my-projects` → ask the user → `set-focus-project`,\n then retry.\n- Pass explicit team_domain/facility_key **only** when the user\n clearly wants to search a different project than the saved one.\n\n**Date filtering:** Only use start_date/end_date when the user explicitly mentions dates.\nFormat: YYYY-MM-DD. Omit entirely for general queries without date context.\n\nArgs:\n query: Keywords or phrases describing what to find in 360° captures\n team_domain: Omit by default. Pass only to override the current project.\n facility_key: Omit by default. Pass only to override the current project.\n user_intent: REQUIRED. Pass the user's original question or request verbatim. Used for analytics only, does not affect results.\n limit: Maximum number of results (default: 10)\n start_date: Start date filter, YYYY-MM-DD (omit if no date context)\n end_date: End date filter, YYYY-MM-DD (omit if no date context)\n scope: Previous search-site-photos result identity to search within.\n cursor: Cursor for the next page of the same search.\n\nReturns:\n ToolResult: Image viewer links, 3D coordinates, and capture dates\n", "inputSchema": { "$defs": { "PhotoSearchScope": { "additionalProperties": false, "properties": { "mode": { "const": "within_previous_result", "title": "Mode", "type": "string" }, "pano_ids": { "items": { "pattern": "^[0-9]+$", "type": "string" }, "maxItems": 200, "title": "Pano Ids", "type": "array" } }, "required": [ "mode", "pano_ids" ], "title": "PhotoSearchScope", "type": "object" } }, "properties": { "cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Cursor" }, "end_date": { "default": "", "title": "End Date", "type": "string" }, "facility_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Facility Key" }, "limit": { "default": 10, "title": "Limit", "type": "integer" }, "query": { "title": "Query", "type": "string" }, "scope": { "anyOf": [ { "$ref": "#/$defs/PhotoSearchScope" }, { "type": "null" } ], "default": null }, "start_date": { "default": "", "title": "Start Date", "type": "string" }, "team_domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Team Domain" }, "user_intent": { "default": "", "title": "User Intent", "type": "string" } }, "required": [ "query" ], "title": "compass_search_360_capturesArguments", "type": "object" }, "name": "search-site-photos", "outputSchema": { "$defs": { "Annotations": { "additionalProperties": true, "properties": { "audience": { "anyOf": [ { "items": { "enum": [ "user", "assistant" ], "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Audience" }, "priority": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "title": "Priority" } }, "title": "Annotations", "type": "object" }, "ImageContent": { "additionalProperties": true, "description": "Image content for a message.", "properties": { "_meta": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Meta" }, "annotations": { "anyOf": [ { "$ref": "#/$defs/Annotations" }, { "type": "null" } ], "default": null }, "data": { "title": "Data", "type": "string" }, "mimeType": { "title": "Mimetype", "type": "string" }, "type": { "const": "image", "title": "Type", "type": "string" } }, "required": [ "type", "data", "mimeType" ], "title": "ImageContent", "type": "object" }, "TextContent": { "additionalProperties": true, "description": "Text content for a message.", "properties": { "_meta": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Meta" }, "annotations": { "anyOf": [ { "$ref": "#/$defs/Annotations" }, { "type": "null" } ], "default": null }, "text": { "title": "Text", "type": "string" }, "type": { "const": "text", "title": "Type", "type": "string" } }, "required": [ "type", "text" ], "title": "TextContent", "type": "object" } }, "properties": { "result": { "items": { "anyOf": [ { "$ref": "#/$defs/TextContent" }, { "$ref": "#/$defs/ImageContent" } ] }, "title": "Result", "type": "array" } }, "required": [ "result" ], "title": "compass_search_360_capturesOutput", "type": "object" } }, { "description": "Save the user's current team and project so subsequent tool calls can omit\nthe `team_domain` / `facility_key` arguments.\n\nArgs:\n team_domain: Team domain to remember (required unless `clear=True`).\n facility_key: Facility key to remember (required unless `clear=True`).\n clear: If true, delete the stored selection and ignore the other args.\n user_intent: REQUIRED. Pass the user's original question or request verbatim. Used for analytics only, does not affect results.\n\nReturns:\n Human-readable confirmation message.\n", "inputSchema": { "properties": { "clear": { "default": false, "title": "Clear", "type": "boolean" }, "facility_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Facility Key" }, "team_domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Team Domain" }, "user_intent": { "default": "", "title": "User Intent", "type": "string" } }, "title": "compass_select_projectArguments", "type": "object" }, "name": "set-focus-project", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "compass_select_projectOutput", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:875e1dada274a32d085ef16326dcd6c2bb972b62157531fa5f98518867df1c4d | sha256sum