Skip to main content
Glama
741,228 tools. Updated 2026-11-04 02:41

"A tool that can connect to MySQL database, understand table structure and query related data" matching MCP tools:

  • Get a Notion database schema by ID. Returns all properties, field types, and configuration to understand structure.
    ConnectorNo auth
  • Describe one table of a database on one of your servers: its columns with type, whether they can be empty, default value and primary key. Call it before writing a query against a table you have not seen. Works for postgres, mysql, mariadb and sqlite.
    ConnectorOAuth
  • Turn raw EXPLAIN output into a plain-language diagnosis — no query needed. Paste PostgreSQL EXPLAIN / EXPLAIN ANALYZE (text or JSON) or MySQL EXPLAIN (tabular, \G, FORMAT=JSON, FORMAT=TREE) and get: what the planner is doing step by step, where the cost concentrates, named risk findings (full scans, spilling sorts, nested-loop blowups, row misestimates) with index suggestions, and what to look at next. Use when the user pastes EXPLAIN output or asks 'can you read this plan'. Input is analyzed in memory and never stored.
    ConnectorOAuth
  • Get detailed KDP niche intelligence for a specific keyword. Returns demand score, competition score, Amazon BSR range, estimated monthly revenue, review threshold, average book pricing, and data freshness for the given Kindle publishing niche. Pricing tiers (x402 USDC on Base network): - $0.03 per query for cached/pre-seeded keywords - $0.10 per query for live on-demand research (new keywords) Use the free `list_niches` tool first to see available keywords. Payment options: 1. Set the KDP_X_PAYMENT environment variable on the server for auto-pay. 2. Pass a valid x402 payment header via the x_payment argument. 3. If neither is set, the tool returns structured 402 payment instructions that an x402-capable agent can use to construct and retry payment. Args: keyword: The KDP niche keyword to research (e.g. "romance novels", "keto cookbook") x_payment: Optional base64-encoded x402 payment header. Takes precedence over the KDP_X_PAYMENT environment variable.
    ConnectorNo auth
  • Answer questions about how Refpro works. Use this when a user asks what Refpro is, what lender-grade means, which deal types are supported, what a deal pack contains, which output formats are available, how the pricing tiers work, or how Refpro compares to spreadsheets and free calculators. Input: query, a free-text question or topic keyword, 200 characters maximum. Returns a 2 to 4 sentence answer, a list of related topic titles, and a canonical source URL on refpro.ai. Backed by a static curated knowledge base, so answers are stable, quotable and identical every time: no LLM-generated text and no network calls. Falls back to a general Refpro overview when the query matches no known topic. Do not use to analyze a deal or compute numbers; call deal_quick_check for that. Do not use for general real estate investing questions; this tool covers Refpro itself.
    ConnectorNo auth
  • Searches both the domains table and the entities table simultaneously. Returns matching domains (by domain name) and entities (by name or slug) in a single response. Minimum 2 characters, maximum 100 characters. Use this tool when: - You have a partial name and need to identify what tracker or entity it belongs to. - You want to find all TunnelMind records related to a company name like "Google" or "Oracle". - You are resolving an ambiguous domain (e.g., does `criteo.com` appear in the tracker DB?). Do NOT use this tool when: - You know the exact domain — use `get_domain` instead (faster, more complete). - You know the exact entity slug — use `get_entity` instead. - You want to browse by category or industry — use `list_domains` or `list_entities`. Inputs: - `q` (query, required): Search string, 2-100 characters. Matched against domain names and entity names/slugs. Returns: - `domains`: array of matching domain records (list item format). - `entities`: array of matching entity records (list item format). - Both arrays may be empty if no matches found. No pagination — results are capped at 20 per type. Cost: - Anonymous (no key): 10/min, 100/day. Free key: 50/day. Pro/enterprise: included in plan. Latency: - Typical: <200ms, p99: <500ms.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI models to interact with MySQL databases through MCP protocol, supporting queries, table schema inspection, and data manipulation operations.
    29 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Read-only MySQL MCP server that lets AI agents list tables, describe schemas, and run SELECT/SHOW/EXPLAIN queries with a row cap, bound to a single database for safety.
    3
    MIT

Matching MCP Connectors

  • Append a new row to a workspace's table surface. The data field is a JSON object with column-name keys. Status column accepts: drafted, queued, sealed, active, blocked. Works on any workspace; columns auto-seed on the first row if the table surface is empty. Multi-surface workspaces accept `surface_slug` to target a specific sheet (use `list_surfaces` to enumerate); omit it to fall through to the workspace's primary table surface. **Unmapped data fields:** Keys in `data` that don't match any existing column are still STORED on the row (nothing is dropped), but they won't render in the table UI until the column exists. The response carries an `unmapped_fields` array listing those keys plus a human-readable `warning` so an agent can decide whether to surface them, call `add_column`, or retry with `auto_create_columns: true`. **Auto-create columns:** Pass `auto_create_columns: true` to have the server append a fresh text column for every unmapped key in one atomic step (humanised label from the key, type `text`). The response then includes `created_columns: ColumnDef[]` with the new column metadata. Use this when you're appending machine-emitted rows whose shape you can't predict ahead of time; leave it omitted (default false) when you want explicit schema control.
    ConnectorNo auth
  • Golden Alerts permanent monthly archive — Returns the permanent monthly archive of Golden Alert activity — one row per calendar month, aggregated from daily snapshots before they are purged. This archive is never deleted and grows indefinitely, providing AI agents with long-term trend data on alert severity and top tokens across months and years. Each month includes: totalCount (total alerts that month), highCount/mediumCount/lowCount (severity breakdown), topTokens (5 most-active tokens), daysInMonth (days with data), avgPerDay (daily average). Months with fewer than 20 daily records are excluded to ensure statistical accuracy. Data source: CryptoWhaleInsights own signal_history database (49,000+ on-chain signals). No authentication required. 60 req/min. 5-min cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.
    ConnectorNo auth
  • Run a read-only SQL query against an app's Postgres database and return up to 200 result rows. SELECT only — writes and DDL (INSERT/UPDATE/DELETE/ALTER/DROP/…) are rejected server-side; use vibekit_chat or vibekit_submit_task to have the agent make data or schema changes. Call vibekit_db_schema first to learn the tables. SQL string, max 5000 chars.
    ConnectorNo auth
  • Parse a Primavera P6 XER file and return a TABLE SUMMARY (not the full row-level data — XER row dumps explode the MCP context window). For each table in the XER, returns the table name, field list, and record count. Per-row data is intentionally omitted — for forensic / DCMA / windows analysis use the dedicated tools (``forensic_windows_analysis``, ``critical_path_validator``, etc.) which consume the parsed XER internally and return analytical summaries, not raw rows. Use this tool to confirm an XER is parseable, list its tables, see the data date / project name from PROJECT, or count activities in TASK before deciding which deeper tool to run. Args: xer_path: server-side filesystem path to the XER file. xer_content: full text of the XER file (alternative for hosted/remote use). Supply EXACTLY ONE of path/content. Returns: { "filepath": absolute path, "encoding_used": "utf-8" | "cp1252" | ..., "ermhdr": file header dict (P6 version, export user, etc.), "tables": [{"name", "fields", "record_count"}, ...], "table_count": int, "total_records": int, "project_summary": { "proj_id", "proj_short_name", "proj_long_name", "data_date", "plan_end_date" } (from first PROJECT row, if any) }
    ConnectorNo auth
  • Browse or search canonical employers, associations, schools, or worship organizations that appear in positive conditions in current active eligibility publications. Omit query to browse by active-publication graph connectivity; that order is NOT popularity, quality, or a recommendation. With query, normalized exact matches rank before bounded prefix matches. A returned organization is a selectable fact, NOT proof that this person can join any credit union; use resolve_eligibility_entities for authoritative selection, then pass the returned org_id in the matching *_org_ids field to an eligibility tool. This authenticated discovery never loads a client-side corpus and accepts no personal profile.
    ConnectorNo auth
  • Explain how the pieces of this workspace fit together, so you can pick the right tool without opening several to compare them. Call this when you are choosing between similar tools, when a request does not obviously map to one tool, or when an error tells you to consult it. topic: overview (default), watchers (how to choose between the eight ways to monitor something), workflows (how a workflow gets its leads, and which tool creates which kind), platforms (what can be acted on and what is tracking-only), outreach_and_safety (who sends, what the limits are, and what to confirm with the user first). It is a static reference and returns no live counts: each topic names the list tool that does (campaignstack_get_signal_agents, campaignstack_get_workflows, and so on). Costs nothing and reads no workspace data.
    ConnectorAPI key
  • LAST RESORT — arbitrary READ-ONLY SQL against the Litecoin transfers data. The ltc_* tools are the PRIORITY; use this ONLY when none of them can answer. No query optimizer here: filter on the per-key tables and NEVER JOIN big tables (use `IN (SELECT …)`, the only way to "follow" across txs). Runs read-only ClickHouse SQL. SQL reference: https://clickhouse.com/docs/reference/home This data runs on an older release of the engine: some functions and syntax in that reference (map() and toJSONString() among them) do not exist here — when a statement is refused for an unknown function or setting, use the forms shown in this description. Every table has a `blockchain_id` column and also holds rows of other blockchain_id values: filter `blockchain_id = 6` (Litecoin) on EVERY table you read, inside each IN (SELECT …) as well — block numbers are not unique across blockchain_id values, so an unfiltered read mixes in rows that are not Litecoin's. Query the plain names of db `altcoin`, NEVER a `_storage` table (each holds only part of the data). Tables (db `altcoin`): `altcoin.inputs_by_address` / `outputs_by_address` (by address), `altcoin.inputs_by_tx` (by tx; cols address, tx_id_bin, value, output_tx_id_bin, output_index) and `altcoin.outputs_by_tx` (by tx; cols address, tx_id_bin, output_index, value and direction, an Enum unknown/not_change/change/likely_not_change/likely_change/mining/fee/minting/genesis), `altcoin.transactions` (one row per tx: tx_date, input_value, output_value, fee_value, is_coinbase; look a hash's tx_date up here first). Every `altcoin` table is partitioned by month on `tx_date` — add a `tx_date` bound whenever you can: a read by address or tx alone probes every month since the chain began. Db `altcoin_flow`: address_transfers (keyed by blockchain_id, address; AggregateFunction → -Merge; its count / sum totals hold a few duplicated and missing records — take exact totals from the `altcoin` tables), outputs_to_address (by address), tx_inputs / tx_outputs (by block, tx_index; a few whole blocks are missing). Addresses & tx ids: `address` is a plain string (L… / M… base58, ltc1… bech32 lowercase; m-… / d-… placeholders for bare multisig / non-standard scripts; empty for coinbase inputs and fee rows); `tx_id_bin = unhex('<64hex>')`, output `hex(tx_id_bin)`; `value` is Decimal(18,8), already in LTC (a JSON number: above about 1e8 it loses its last decimals - return toString(value) when every decimal matters). Date-times come back as 'YYYY-MM-DD hh:mm:ss' UTC; select formatDateTime(tx_time, '%FT%TZ') for ISO-8601 (2026-09-21T15:04:18Z), the shape the other tools return. Address labels: none in this data — use labels_for_addresses(chain='litecoin'). Read-only; JSONEachRow. A result of more than 25,000 rows is not cut off - the whole query fails with an error - so aggregate (GROUP BY, count) or add a LIMIT of at most 25,000. 64-bit integers come back as JSON numbers, exact only up to 2^53: return a hash such as cityHash64(...) or any other 64-bit id as toString(x).
    ConnectorOAuth
  • Send an arbitrary GraphQL query (with optional variables) directly to the STRATZ API at api.stratz.com/graphql. Use when no named tool covers the data you need. Field names are camelCase and must match the STRATZ schema exactly (e.g. numLastHits, goldPerMinute, constants { gameModes }); a query naming an unknown field fails with "Cannot query field", so introspect the type (`{ __type(name: "MatchPlayerType") { fields { name } } }`) before guessing. Requires a STRATZ Bearer token.
    ConnectorNo auth
  • Lusha Workspace: lists every Lusha data column available to add to a contacts or companies table. Use when: choosing which columns to enrich a table with, or resolving a datapoint to the columnKey that table_add_columns takes. Do not use when: listing the columns a table already holds (table_list_columns) or reading row values (table_get_entities). Per entity_type and independent of any table; keys come back without the table's own prefix ('jobTitle', not 'contact_jobTitle'). A contacts table also lists every company column, filled from each contact's employer (HQ location, headcount, revenue, industry, funding, technologies), keyed with their company_ prefix ('company_hqCity'). Returns: catalog entries (category, displayName, columnKey, type) for the entity type. Credits: does not consume credits. Rate limits apply per Lusha plan (per-minute/hourly/daily); exceeding returns HTTP 429. The account_usage tool returns current limits and remaining headroom.
    ConnectorOAuth
  • Decode a database error and get the fix and the next step — no connection needed. Paste a MySQL error number (1213, 1062, 1452, 1205…) or a PostgreSQL SQLSTATE (40P01, 23505, 53300…), optionally with the failing statement, and get the proximate cause, the concrete fix, and — when it helps — the SIXTA tool and artifact to go deeper (e.g. a deadlock → paste SHOW ENGINE INNODB STATUS for sixta_explain_deadlock). Use when the user pastes a DB error code or message. Input is analyzed in memory and never stored.
    ConnectorOAuth
  • List Clerk applications connected to the authenticated Vee3 account. Returns clerk_instance_id, display name, environment type, and whether each connection is the default. Use clerk_instance_id on future Clerk calls, or omit it to use the default account. If accounts is empty, the user must connect a Clerk application at https://vee3.io/dashboard/connections before Clerk capabilities work. Agents cannot complete the connection flow; ask the user to connect, then call this tool again. Cost = 0 tokens.
    ConnectorNo auth
  • Get the wiring instructions for connecting an MCP client to ~alter. The name is historical and this recommends nothing: it hands back connection details, not a suggested tool. Use it when adding ~alter to a new MCP client, or when passing the endpoint to another agent so it can connect for itself. Returns the MCP endpoint URL, a ready-to-paste JSON configuration snippet, and how many tools are callable at each tier. Takes no parameters and reads no member data. Free L0, no authentication required.
    ConnectorNo auth
  • Start (or resume) Stripe Connect onboarding so this account can RECEIVE author royalties. Returns a one-time onboarding_url the human author must open in a browser to complete KYC. Required before a book can be published: an author with no payouts-enabled Connect account can save drafts but their books stay in draft until onboarding finishes. Payouts stay disabled until Stripe verifies the details — poll connect_status afterward.
    ConnectorNo auth
  • Read-only queries on the open spreadsheet. No data is modified. Safe to auto-approve. Call as {"action": "<name>", "params": {...}} — per-action params are listed in the Action Reference below. Special actions (not shown in the action enum): • batch — {"action": "batch", "params": {"actions": [{"action": "<name>", "params": {...}}, ...]}}. Runs reads in parallel; individual failures are reported per-entry without short-circuiting. • context — {"action": "context", "params": {"topic": "<name>"}} or {"action": "context", "params": {"action": "<name>"}}. Returns deeper docs for a topic or a single action's signature. Plural "topics" / "actions" arrays are also accepted and may be combined. Topics: python, javascript, formula, connection, validation, a1, quadratic, chart, pivot_table. Action Reference • get_cell_data(selection, page?, sheet_name?) — Returns cell values for a selection in A1 notation. Supports comma-separated ranges to fetch multiple areas in ONE call, including across different sheets. Examples: "A1:B10, D1:E10", "TableName, OtherTable", "'Sheet1'!A1:B10, 'Sheet2'!C1:D10". Table names are globally unique so they work without sheet prefixes. For cell ranges on other sheets use 'SheetName'!Range. Only use when you need the full dataset (aggregations, lookups, analysis). The file summary already includes sample rows. Results may be paginated — use page (0-based) for additional pages. • has_cell_data(selection, sheet_name?) — Check if any cells in a selection have data. Returns true if ANY cell contains data. Use before creating/moving tables or code to avoid spill errors. All ranges MUST be on the same sheet. • get_code_cell_value(code_cell_position?, code_cell_name?, sheet_name?) — Get full code from an existing Python, JavaScript, or connection code cell. Do NOT use for formula cells — formulas are already in get_cell_data results and the file summary. • get_text_formats(selection, page?, sheet_name?) — Get text formatting info. Use table column references for tables ("Table_Name[Column Name]"). Results may be paginated. • get_validations(sheet_name?) — Get all validations in a sheet. • get_conditional_formats(sheet_name) — Get all conditional formatting rules. Use to check existing rules before creating/updating/deleting. • text_search(query, case_sensitive?, whole_cell?, search_code?, regex?, sheet_name?) — Search for text in cell outputs. Supports regex when enabled (e.g., "\d+", "^hello", "foo|bar"). Searches cell outputs only, not code. Booleans default false. • get_sheet_info() — List all sheets and names. • get_spreadsheet_context(sheet_name?, include_errors?) — Full context snapshot of the file. • read_data(selection, sheet_name?, max_rows?) — Read cell data as compact CSV. Auto-tiers: returns all rows for small/medium data (<5000 rows), head+tail preview for large data. Preferred over get_cell_data for most reads. • outline(sheet_name?) — Structural map of the file: sheets, bounds, tables, code cells, charts, connections, errors. Use to understand file layout before reading data. • dependencies(position, sheet_name?, direction?) — Trace cell dependencies. direction: "forward" (what this cell reads), "reverse" (what depends on this cell), or "both" (default). • export_pdf(options?) — Export the file as a PDF with Excel-parity print semantics. Returns {mime_type, size_bytes, data_base64}. options is a camelCase object: {sheetIds?: [id], fileName?, pageSetup?: {paperSize ("letter"|"legal"|"tabloid"|"a3"|"a4"|"a5"|...), orientation ("portrait"|"landscape"), margins {left,right,top,bottom,header,footer} (inches), scaling ({type:"zoom",percent} or {type:"fitTo",width?,height?}), pageOrder ("downThenOver"|"overThenDown"), centerHorizontally?, centerVertically?, printGridlines?, printHeadings?, header/footer {odd:{left,center,right}, even?, first?} with Excel codes (&P page, &N total, &D date, &T time, &F file, &A sheet, &B bold)}, sheetOptions?: {"<sheetId>": {pageSetup?, printArea? ("A1:F20"), repeatRows? ([1,2]), repeatCols?, rowBreaks?, colBreaks?}}}. Omit options for sensible defaults (letter portrait, 100% zoom, all sheets). • list_connections(team_uuid?) — List all database connections in a team (PostgreSQL, MySQL, MS SQL, Snowflake, BigQuery, Mixpanel, Google Analytics, Plaid, etc.). Returns each connection's uuid, name, and type. team_uuid is optional — if omitted, the user's only team is used; multi-team users must pass it. Call this BEFORE get_database_schemas or set_sql_code_cell_value to discover the connection_ids and connection types you need. • get_database_schemas(connection_ids, connection_type, team_uuid) — Get table/column schemas for database connections. Always call before writing SQL. Get connection_ids from list_connections. connection_type: POSTGRES, MYSQL, MSSQL, SNOWFLAKE, BIGQUERY, COCKROACHDB, etc. • list_agent_connections(team_uuid?) — List the team's ready Agent Connections (third-party REST API bindings). Returns each connection's uuid, name, service, base URL, auth pattern, and `{{SECRET_NAME}}` references to use in fetch code. team_uuid is optional — if omitted, the user's only team is used; multi-team users must pass it. Reference secrets via `{{SECRET_NAME}}` in Python/JavaScript fetch code; the connection proxy substitutes team secret values at request time. • inspect_agent_connection(connection_id, team_uuid?) — Get the full schema (resources, endpoints, fields, docs URLs) and plan for one ready Agent Connection by uuid (from list_agent_connections). Call BEFORE writing fetch code against a connection so you don't guess at endpoints. team_uuid is optional with the same single-team fallback as list_agent_connections. Batch: • batch(actions) — actions: [{action, params}]. Runs reads in parallel through this same tool; per-entry failures are reported in the result without short-circuiting the batch. `action` may be any name from this reference. Nested `context` items are allowed and returned alongside the reads.
    ConnectorNo auth
  • Run ONE bounded read against a site's database. One statement, beginning with SELECT, SHOW, DESCRIBE or EXPLAIN, with no second statement and no data-modifying clause anywhere in it. The container proves the statement is a read before running it and caps the result: 200 rows by default, 1000 maximum, 2 MB of cell data. `truncated` in the response says whether a cap was reached. ⚠ THIS TOOL CANNOT CHANGE ANYTHING, AND RETRYING WITH DIFFERENT WORDING WILL NOT MAKE IT. Anything that is not a single bounded read is refused with READ_ONLY and nothing runs. To change data or schema, use the tool for the job: optimize_database, database_search_replace, manage_db_user, list_databases, list_tables — and for creating, altering, dropping, importing or exporting tables, the database manager in the control panel, which has no tool here. Requires: API key with write scope (unchanged — the scope is the customer's published permission for this operation, not a claim about what it does). Args: slug: Site identifier database: Database name query: One read statement Returns: {"columns": ["id", "user_email"], "rows": [[1, "a@example.com"], ...], "row_count": 1, "truncated": false, "execution_time_ms": 12.0} Errors: READ_ONLY: Not a single bounded read. The error text carries the explanation and names the operation to use instead.
    ConnectorNo auth