ai.explorium/mcp-explorium

show-sample

Present the final sample to the user. **SHOW-SAMPLE (`fetch-entities`, `enrich-business`, `enrich-prospects`, `fetch-businesses-events`, `fetch-prospects-events` only)** - For each user turn that includes exploration work, call `show-sample` after that turn's fetch/enrich/events work is finished, using the final relevant `table_name`(s). - If the turn creates multiple final datasets/tables (for example US and Canada splits), make a separate successful `show-sample` call for each final `table_name` before replying. - If a table is enriched, sample the final enriched table only—not the intermediate fetch table. - If a later user turn asks for more data or another enrichment, call `show-sample` again after that turn's work is finished. - Do not ask the user for confirmation before calling `show-sample`; confirmation is required only before `export-to-csv`. - Present the sample returned by `show-sample`, not the masked exploration preview. - All other tools return complete results—present those directly. Exploration is free; *Display format for the `show-sample` tool:* Only show this text, no need to render any markdown representation for the results, they are handled by the widget. **Results Found** [key qualifier] [entity type] from [companies/sources] **READING `counts` (never guess which number to quote)** - `records_matching_filters` — how many exist upstream. **Headroom, not delivered data.** Never say these were fetched, saved, or exported. - `records_available` — rows this step delivered. On `show-sample`/`export-to-csv` it is the exportable/exported row count; on `enrich`/`events` it equals `records_received` (all input rows were kept). **This is the number to tell the user.** - `records_requested` — the cap that was applied. Defaults to 30 when the user named no number. - `records_shown_in_preview` — preview rows only. Never a dataset size. - `records_received` / `records_with_errors` — inputs into this step / inputs that failed. - When `records_matching_filters` > `records_available`, you have a **subset**. Say so: "N of M matching — want more?" Never "all M". - **Never do arithmetic on `records_matching_filters`** — no scaling costs, credits, or totals to it. Quote `cost_in_credits` as returned; it already covers exactly `records_available` rows. **BILLING** - Fixed cost: 5 credits per exploration table (first successful charge per table). - Charging is idempotent per table: duplicate show-sample for the same `table_name` does not charge again. - Duplicate show-sample for the same query returns the same full rows without charging again. - If a prior call returned `insufficient_credits`, a later call retries charging (e.g. after the user tops up). - On `insufficient_credits`, returns masked preview rows only (same masking as exploration); full rows require a successful charge. - When `async_export` is present, tell the user the named enrichments require the eventual export to run asynchronously. - This tool always calls cost estimation and returns the export cost fields, so do not call `estimate-cost` after `show-sample` for the same `table_name`.

Remote explorium/vibeprospecting

Remote (network-hosted)

Other tools also called show-sample? See providers with this name

Input Schema


            {
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "pattern": "^session_[a-z0-9_]+$",
      "description": "Session ID containing the data to process"
    },
    "table_name": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_]*$",
      "description": "table_name from a prior fetch/enrich/events exploration response. Do not invent this value."
    },
    "tool_reasoning": {
      "type": "string",
      "maxLength": 2000,
      "description": "The original user query that prompted this workflow, in EXACT WORDS. Reuse the same wording across chained tool calls when the task is unchanged. Do not replace it with a per-step rationale or unrelated PII. Maximum 2000 characters. If the original query is longer, copy the beginning exactly and truncate at 2000 characters without summarizing, rewriting, or adding explanations."
    },
    "client_platform": {
      "enum": [
        "claude_chat",
        "claude_cowork",
        "claude_code",
        "openai_chatgpt",
        "openai_codex",
        "cursor",
        "vscode",
        "windsurf",
        "github_copilot",
        "antigravity",
        "replit",
        "pi.dev",
        "opencode",
        "hermes",
        "gemini_cli",
        "openclaw",
        "vibe_app",
        "manus",
        "omp",
        "other",
        "unknown",
        "grok"
      ],
      "type": "string",
      "default": "unknown",
      "description": "IMPORTANT: Always set this on every call. Identify the application or AI client invoking this MCP tool (e.g. claude_chat, claude_cowork, claude_code, cursor, openai_chatgpt). Use the matching enum value when the caller is known. Use `other` when the caller is known but not listed; use `unknown` only when the caller truly cannot be determined. Do not omit this field. Defaults to `unknown` only if omitted by older clients."
    },
    "preview_table_columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ordered list of column keys for the preview table widget. The keys you choose MUST derive from `preview.preview_data` keys in the prior fetch/enrich/events response for this `table_name`, Do NOT invent, rename, abbreviate, or guess keys. Skip columns that their values at `preview.preview_data` are mostly-null/empty. Omit internal/id fields (e.g. business_id, prospect_id, row_num). Pick 3–6 column keys most relevant to the user's intent. "
    }
  }
}