{"apiVersion":"v1","directorySlug":"semantic-rails-mcp-2a646c7fb2","title":"Semantic Rails","description":null,"pageUrl":"https://www.mcpbundles.com/skills/semantic-rails-mcp-2a646c7fb2","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://semantic-rails.com/mcp","hostedMcpUrl":null,"toolCount":13,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.semantic-rails/semantic-rails-mcp-2a646c7fb2","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"capabilities","description":"Semantic Rails MCP question-answering entrypoint. For answering governed-data questions, use: discover, plan, validate, compile, execute. Use catalog for orientation. Return the package's supported and unsupported capability surface — rolling windows, prior-period offsets, metric predicates, scoped aggregates, conversion metrics, etc. Recommended loop position: 0 (cold-start orientation). This compact orientation response tells you which IR expression kinds the runtime can compile and execute fo","inputSchema":{"type":"object","properties":{"request_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"capabilities","displayName":"capabilities","title":"capabilities"},{"name":"catalog","description":"List every governed semantic object in the active package — measures, metrics, dimensions, segments, entities. Recommended loop position: 1 (after capabilities, before discover). Prefer 'discover' for term-targeted lookups. Gotcha: default verbosity is 'summary' — flat ID lists, right for orientation. Bump to 'compact' for row metadata (capped 200/kind) or 'full' for uncapped + alias_index (large).","inputSchema":{"type":"object","properties":{"kind":{"type":"string"},"view":{"type":"string","default":"summary"},"entity":{"type":"string"},"search":{"type":"string"},"verbosity":{"enum":["summary","minimal","compact","full"],"type":"string","default":"summary"},"request_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"catalog","displayName":"catalog","title":"catalog"},{"name":"discover","description":"Rank semantic objects against business terms (e.g. 'revenue', 'aov by store'). Returns measures, metrics, dimensions, and entities scored with 'match_reasons'. Recommended loop position: 1 (after the user's question). Pick best id, then 'inspect'. Verbosity: 'minimal' trims each row to {id,kind,score,default_temporal_role,available,match_reasons} (cheap orientation); 'compact' (default) ships full cards. Gotcha: nonsense or out-of-scope terms return an 'out_of_scope' or 'low_relevance' block wit","inputSchema":{"type":"object","properties":{"kinds":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]},"limit":{"type":"integer","default":10,"minimum":1},"query":{"type":"object","additionalProperties":true},"stage":{"type":"string"},"terms":{"type":"string"},"verbosity":{"type":"string","default":"compact"},"request_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"discover","displayName":"discover","title":"discover"},{"name":"inspect","description":"Return the stable object card for one id — label, description, search terms, related dimensions, valid temporal roles, policy/validity windows. Recommended loop position: 2 (after 'discover', before composing Query IR). Gotcha: 'object_id' must be a full id like 'measure.jaffle.revenue_usd', not a label — use 'discover' first if you only have a phrase.","inputSchema":{"type":"object","required":["object_id"],"properties":{"query":{"type":"object","additionalProperties":true},"object_id":{"type":"string"},"verbosity":{"type":"string","default":"compact"},"request_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"inspect","displayName":"inspect","title":"inspect"},{"name":"build-options","description":"Return ranked next choices for a guided query builder — given partial Query IR, what dimension/filter/time-range to add next. Recommended loop position: 2.5 (between 'inspect' and 'plan' when composing step-by-step instead of from a single intent). Gotcha: pass the partial 'query' you've assembled — empty input returns initial-stage options.","inputSchema":{"type":"object","properties":{"step":{"type":"string"},"limit":{"type":"integer","default":10,"minimum":1},"query":{"type":"object","additionalProperties":true},"stage":{"type":"string"},"verbosity":{"type":"string","default":"compact"},"request_id":{"type":"string"},"focus_terms":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true},"focus_object_id":{"type":"string"},"include_blocked":{"type":"boolean","default":true}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"build-options","displayName":"build-options","title":"build-options"},{"name":"valid-values","description":"Return governed valid values for one dimension — from its declared value_domain by default, or via a constrained warehouse probe when 'allow_live_query: true'. Recommended loop position: 3 (composing a 'where' filter on a categorical dimension). Gotcha: 'dimension_id' must be a full id like 'dimension.jaffle.store_name'. Set allow_live_query: true only when no declared domain exists — it costs a warehouse round-trip.","inputSchema":{"type":"object","required":["dimension_id"],"properties":{"limit":{"type":"integer","default":100,"minimum":1},"query":{"type":"object","additionalProperties":true},"offset":{"type":"integer","default":0,"minimum":0},"search":{"type":"string"},"request_id":{"type":"string"},"dimension_id":{"type":"string"},"include_counts":{"type":"boolean","default":false},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true},"allow_live_query":{"type":"boolean","default":false}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"valid-values","displayName":"valid-values","title":"valid-values"},{"name":"plan","description":"Single public intent-planning surface: natural-language intent → one best Query IR plus optional alternatives. Use detail='query' for the tight QA loop before execute(row_format='columns'). Returns 'status' ('ok' | 'low_confidence' | 'unrealizable' | 'out_of_scope') and 'best.query_ir'. 'status=ok' has already paid validation cost, so agents may proceed to 'compile' or 'execute' with 'best.query_ir'. Use detail='full' for alternatives/blocked drafts, or detail='debug' for compose_hints. Gotcha:","inputSchema":{"type":"object","required":["intent"],"properties":{"limit":{"type":"integer","default":3,"minimum":1},"query":{"type":"object","additionalProperties":true},"detail":{"enum":["query","best","full","debug"],"type":"string","default":"best"},"intent":{"type":"string"},"request_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"plan","displayName":"plan","title":"plan"},{"name":"validate","description":"Check Query IR before compiling — returns errors, warnings, and repair hints. Loop position: 5 (before 'compile' or 'execute'). Gotcha: 'query' must be a JSON object, not a stringified blob; wrap as {query: {...}}. Defaults to verbosity='minimal' — pass verbosity=compact|full for normalized query/policy effects/plans. IR: select[]={expression,as}, group_by[]=[<dim>,...] (bare ids), where[]={field,op,value}, order_by[]={field,direction}. select.expression: {aggregation, measure} | {metric} | {kin","inputSchema":{"type":"object","properties":{"query":{"type":"object","properties":{"time":{"type":["object","null"],"properties":{"end":{"type":["string","null"]},"fill":{"type":"boolean","default":false},"grain":{"enum":["","day","week","month","quarter","year","hour","minute"],"type":"string"},"range":{"type":"object","properties":{"last":{"type":"object","required":["unit","value"],"properties":{"unit":{"enum":["minute","hour","day","week","month","quarter","year"],"type":"string"},"value":{"type":"integer","minimum":1}},"additionalProperties":false}},"additionalProperties":true},"start":{"type":["string","null"]},"calendar_id":{"type":"string","default":"default"},"temporal_role":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"verbosity":{"enum":["minimal","compact","full"],"type":"string","default":"minimal"},"request_id":{"type":"string"},"sql_profile":{"enum":["audit","compact","debug","off"],"type":"string","default":"audit"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate","displayName":"validate","title":"validate"},{"name":"compile","description":"Compile validated Query IR into rendered SQL — no warehouse execution. Loop position: 6 (after 'validate', before 'execute'). Gotcha: do not call before validate — compile raises on errors; validate returns structured repair hints. Defaults to verbosity='minimal' (keeps rendered_sql) — pass verbosity=compact|full for sql_plan/explain/logical plans. IR shape: see the 'validate' tool or 'build-options'.","inputSchema":{"type":"object","properties":{"query":{"type":"object","additionalProperties":true},"verbosity":{"enum":["minimal","compact","full"],"type":"string","default":"minimal"},"request_id":{"type":"string"},"sql_profile":{"enum":["audit","compact","debug","off"],"type":"string","default":"audit"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"compile","displayName":"compile","title":"compile"},{"name":"execute","description":"Execute Query IR against the warehouse and return rows (compiles + runs in one call). Loop position: 7 (final — only after validate + compile succeed). Gotcha: only tool that costs warehouse credits + round-trip latency; side-effecting. Use 'compile' for SQL only. Defaults to verbosity='minimal' (rows + row_count) — pass verbosity=compact|full for SQL/plans/explain. Use row_format='columns' for compact answers. IR shape: see the 'validate' tool or 'build-options'.","inputSchema":{"type":"object","properties":{"query":{"type":"object","additionalProperties":true},"verbosity":{"enum":["minimal","compact","full"],"type":"string","default":"minimal"},"request_id":{"type":"string"},"row_format":{"enum":["records","columns"],"type":"string","default":"records"},"sql_profile":{"enum":["audit","compact","debug","off"],"type":"string","default":"audit"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"execute","displayName":"execute","title":"execute"},{"name":"segment-validate","description":"Validate a package-authored segment and the Query IR derived from it. Recommended loop position: 5 (segment workflow analogue of 'validate' for ad-hoc IR). Gotcha: 'segment_id' must be a full id like 'segment.jaffle.high_value_customers' — list known segments via 'catalog' if you only have a label.","inputSchema":{"type":"object","required":["segment_id"],"properties":{"request_id":{"type":"string"},"segment_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"segment-validate","displayName":"segment-validate","title":"segment-validate"},{"name":"segment-explain","description":"Explain the derived query for a package-authored segment — filters, joins, and time bounds it compiles to. Recommended loop position: 6 (after 'segment-validate', before previewing rows). Gotcha: governed segments only — for ad-hoc cohorts, compose Query IR with a 'where' clause and call 'compile' to read the explain payload on its response.","inputSchema":{"type":"object","required":["segment_id"],"properties":{"request_id":{"type":"string"},"segment_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"segment-explain","displayName":"segment-explain","title":"segment-explain"},{"name":"segment-preview","description":"Preview members of a package-authored segment — sample rows plus total member count. Hits the warehouse. Recommended loop position: 7 (segment analogue of 'execute' — final step). Gotcha: only segment tool that costs warehouse credits. Run segment-validate + segment-explain first; preview is for showing rows to the user.","inputSchema":{"type":"object","required":["segment_id"],"properties":{"limit":{"type":"integer","default":50,"minimum":1},"request_id":{"type":"string"},"segment_id":{"type":"string"},"policy_context":{"type":"object","properties":{"audience":{"type":"string"},"environment":{"type":"string"}},"additionalProperties":true}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"segment-preview","displayName":"segment-preview","title":"segment-preview"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Semantic-Rails&config=eyJ1cmwiOiAiaHR0cHM6Ly9zZW1hbnRpYy1yYWlscy5jb20vbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Semantic-Rails%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fsemantic-rails.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Semantic-Rails%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fsemantic-rails.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Semantic+Rails&connectorUrl=https%3A%2F%2Fsemantic-rails.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Semantic-Rails\" --url \"https://semantic-rails.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/semantic-rails-mcp-2a646c7fb2","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/semantic-rails-mcp-2a646c7fb2/tools/{tool}","mcpServerUrl":"https://semantic-rails.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/semantic-rails-mcp-2a646c7fb2?live=1"}