Pulse Intelligence

Pulse MCP server

Query the Pulse database from Claude, ChatGPT, Grok, and other AI assistants

Pulse runs a hosted MCP (Model Context Protocol) server that lets AI assistants search Pulse documents and query the Pulse database directly in your conversations. Connect it once and ask questions like "List the top 5 projects by gold grade in Canada" — the assistant searches and queries the live database and cites what it found.

Server URL

Every client connects to the same remote server:

https://mcp.pulseintelligence.com/mcp

Connect your client

Follow the guide for your assistant:

ClientGuide
ClaudeConnect Claude
ChatGPTConnect ChatGPT
GrokConnect Grok
Anything elseOther MCP clients

All clients need a Pulse Intelligence account with OAuth access enabled — contact your Pulse admin if you're unsure whether yours is.

Available tools

Once connected, the assistant can use these tools:

Screening and dossiers

ToolDescription
search_companiesScreen companies by structured attributes with field/operator/value filters
get_company_dossierFull single-company picture in one call — overview, financials, recent news, current mining assets, latest annual and interim reports
search_mining_assetsScreen mining assets (mines, projects, deposits, facilities) by structured attributes
get_asset_dossierFull single-asset picture in one call — overview, owners, latest production and reserves, drill headlines, hierarchy. Every displayed figure comes with its numeric value and unit, so agents compute from the numbers and quote the labels
describe_map_datasetsThe map datasets you can search by area: without arguments a short list (each dataset's id, name, and whether it is available and from which source date); with dataset one dataset in full — its filters, what a row carries, and its area and page limits
search_map_areaEverything of one dataset inside a circle, box or polygon — mining assets, mineral tenure, Pulse drill holes with their headline intercept, or the Western Australia (WAMEX), South Australia (SARIG), Queensland (GSQ), Northern Territory (NTGS), New South Wales (GSNSW), Victoria (GSV), Tasmania (MRT), Québec (SIGEOM), Manitoba (MGS), Nova Scotia (NSDNRR), Alberta (AGS) and Saskatchewan (SGS) government archives, Norway's drill-core register and report index (NGU, DMF), Argentina's geochemistry (SEGEMAR), the United States' national geochemistry (USGS), Brazil's geochemistry (SGB), Mexico's geochemistry (SGM), Peru's geochemistry (INGEMMET), Yukon's assessment-report geochemistry, core-library drill holes and reports (YGS), and New Brunswick's drill holes and reports of work (NBGS)
get_wamex_reportOne WAMEX exploration report by A-number, with its documents on request
get_qld_reportOne Queensland (GSQ) company report by its CR number, with its documents on request
describe_filtersList the filters and columns available on a resource (companies or mining-assets). Per-commodity metrics come grouped as metric_families: a key template such as latest_annual_production_kg_{commodity}, the allowed parameters values, and the unit (unit, or unit_by when it depends on one parameter); substitute values to get a real key such as latest_annual_production_kg_gold
resolve_optionsResolve a human term (e.g. "ASX", "Gold") to the option values filters expect

resolve_options ranks matching labels and short labels such as "ASX". Personal sets and saved searches are limited to those visible to your account. A nonempty query with no matching option returns no matches; do not substitute an unrelated option. An empty query lists available options up to the requested limit.

For pulse_tenements, the type filter accepts exploration, production, retention, other, and unclassified. unclassified selects records whose tenure type has not been mapped; it is distinct from other, and both can be selected together. Type and status filters combine to narrow the results; describe_map_datasets lists the accepted values. Tenure rows return canonical type and status values for comparison and filtering, plus the cadastre's wording as registry_type and registry_status. When those terms differ, assistants display both, such as Exploration (Permis de Recherche Industrielle) and Active (Renewal Request). Drill datasets (pulse_drillholes, wamex_drillholes, sarig_drillholes, sigeom_drillholes, qld_drillholes, nt_drillholes, nsw_drillholes, vic_drillholes, ab_drillholes, sk_drillholes) accept grade_tier — economic, high or bonanza — resolved through your own drill-grade thresholds where you have set them and the registry's ramp otherwise; the response lists the grade_cutoffs it applied. Archive source.snapshot_date is the source export date; null means source freshness is unknown. source.built_at is the artifact build time and does not establish when the source data was current. These fields accompany the catalogue, area-search results and report details. Pages continue by passing the previous page's next_cursor as cursor; an archive cursor is tied to the release it was issued on and is refused once a newer release is active. For a follow-up such as "show the next ten", an assistant without the previous cursor can repeat the same search and page to the requested range, skipping records already shown. Each page supports up to 100 records; totals and summary breakdowns do not require larger example pages.

By default, every search_map_area response also includes a summary of all matching records, not just the returned page. Its total matches count; its dataset-specific breakdowns describe, for example, Pulse holes by asset or WAMEX holes by archive submitter. The catalogue lists the available dimensions. Each breakdown returns up to ten largest groups with exact counts, plus other_count for records in the remaining groups and missing_count for records without a value. Include both when interpreting proportions. Archive submitters are not current owners. Drill summaries also count records with an elected headline intercept; this is not a count of every assay and does not prove that a hole without a headline was never assayed. On Pulse drill records, the company is the asset's sole current operator, which does not establish who drilled the hole or owns the asset. An empty company value can mean that no single operator was resolved, including a joint operation. Missing values mean the information is unavailable in those results, unless the field's documented meaning is more specific.

Set include_total to false for a page-only search over a wider box or polygon. In that mode count and summary are null, and next_cursor is the only indication that another page exists. Do not use one or several retrieved pages to make whole-area composition or total-count claims.

Use the summary for an area's overall composition and the nearest-first records as examples. The first page is not a representative sample. Maximum depth, maximum grade and other statistics not included in the summary require examining all relevant results, or explicitly limiting the claim to the records examined. Different datasets may describe the same physical holes, so their record counts cannot be added as a unique-hole total.

Reserve dossier rows

Reserve rows in overview.company_reserves and overview.mining_asset_reserves always have five top-level tier keys: reserves, resources, measured_indicated, inferred, and total_inventory. Absent tiers are null; present tiers keep all fields, with unavailable individual values null. For example, this excerpt shows a tungsten reserve:

{
  "canonical_species": "W",
  "is_grade_species_stated": true,
  "reserves": {
    "label": "20.3 kt WO₃",
    "grade_label": "11.8 Mt @ 0.17 % WO₃",
    "contained_kg": 20275000,
    "contained_species": "WO₃",
    "contained_canonical_kg": 16078075,
    "ore_t": 11800000,
    "grade": 0.171,
    "grade_unit": "%",
    "grade_species": "WO₃",
    "grade_species_qualifier": null
  },
  "resources": null,
  "measured_indicated": null,
  "inferred": null,
  "total_inventory": null
}

contained_kg is the exact mass in contained_species; contained_canonical_kg is the comparable mass in the row's canonical_species for metrics and SQL comparisons. ore_t is metric tonnes of rock and is null for contained-metal-basis reports or non-tonnage source units such as mtu. grade uses its own grade_unit and grade_species: lithium can have LCE contained mass and Li₂O grade. Row-level is_grade_species_stated records whether the source named grade chemistry; it does not assert that the source used the normalized spelling. Each tier's grade_species_qualifier is "assumed" when grade_species is the commodity convention rather than stated by the source (quote it beside grade_label), else null. Company quantities are attributable and asset quantities are 100%. Compute from numbers and quote backend labels; no client species conversion or label parsing is needed. Dates, ownership, reporting standard and citation are shared once per row. Total inventory carries the same fields with ore and grade null and follows the existing resource-inclusivity rules. The nine legacy flat label fields and five *_figures blocks remain unchanged for compatibility and are deprecated; new consumers should use the tier objects. Legacy blocks use canonical contained_in_kg, retain comparable-basis ore_quantity / ore_unit and per-tier grade provenance, and remain objects with null values for absent tiers. Their removal requires confirmed client migration and a separate changelog announcement, targeting 60 days after deployment.

People and publications

ToolDescription
search_peopleSearch executives and directors in the Pulse curated roster
search_publicationsSearch publications for news, announcements, and qualitative context
read_publication_pagesRead pages of a publication's original PDF, such as an annual report

For asset-specific results from publication search and asset dossiers, see Publications and asset updates.

read_publication_pages reads PDF publications only; the assistant reads other formats as text through run_read_query. Each call returns up to 10 pages, as a page or range such as 12 or 12-15. The pages arrive as an attached PDF document with the publication's title, date and page count, so the assistant reads tables and charts as printed. The assistant usually finds the right pages first by searching the publication's text with run_read_query.

When Pulse's structured data has no value for a figure, the assistant may take it from a company filing. It quotes the figure as printed, with its unit, period and basis, and cites the publication, and does not present it as a Pulse-curated value.

Database

ToolDescription
get_database_schemaInspect database tables and columns
get_column_valuesList a column's distinct values to discover enums, units, or categories
run_read_queryExecute read-only SQL queries against the Pulse database

Missing-column errors can include table and available_columns to identify the relevant table and its columns. When the table cannot be identified reliably, the response provides schema-inspection guidance instead of column hints.

Portfolio

ToolDescription
get_portfolio_positionsRead a portfolio's current holdings and totals
portfolio_reconcileReconcile a holdings list (CSV or pasted table) against a Pulse portfolio — read-only dry run
resolve_listingResolve a stock ticker to a Pulse company listing

Reconciliation proposes changes only; it does not write holdings or transactions.

Portfolio position amounts carry their currency explicitly. current_price is denominated in current_price_currency; it can differ from the holding's listing currency and the portfolio base currency. current_price_listing identifies the quoted listing and current_price_date identifies the quote date. Quote metadata may be unavailable; do not infer a holding-specific quote from the company price. The *_base values and portfolio totals are converted into the portfolio's base currency. Holding and transaction money and quantities are represented as decimal strings, as are portfolio monetary totals. Holding and summary return percentages are JSON-number fractions, not whole percentages. When transactions are requested, gross_value is quantity times price per share in the transaction's currency, before fees.

Example prompts

  • "List the top 5 projects by gold grade in Canada — use the Pulse MCP."
  • "What are the highest gold grades across our geological archives?"
  • "Which companies reported new drill results in the last quarter?"
  • "Show me the database schema for production data, then summarise 2025 copper output by country."

Adding "use the Pulse MCP" to a prompt nudges the assistant to reach for the connector instead of answering from memory.

Authentication and security

  • OAuth 2.1 with PKCE — when you connect, you're redirected to the Pulse authorization page and sign in with your Pulse Intelligence credentials. Your credentials are never shared with the AI client; only a scoped access token is exchanged.
  • Read-only — every tool is read-only. Queries cannot modify data.
  • Tool approval — clients ask for your permission before each tool call (exact behaviour varies by client).
  • Revoking access — disconnect or remove the connector in your AI client's settings at any time.

Filter descriptions, option lookups, company and asset dossiers, portfolio reads, reconciliation previews, listing lookups, map dataset discovery, area searches and WAMEX/GSQ report retrieval share your MCP access and quota checks. Filter descriptions count toward request limits; option lookups count returned matches toward the daily row allowance, and a dossier counts as one logical result. These calls are recorded against your Pulse account for auditing. These checks apply before document listings are read, including when include_documents is enabled. If a call is refused because a quota is exhausted or MCP access is blocked, contact your Pulse admin.

Troubleshooting

IssueSolution
Authorization failsCheck that your Pulse account has OAuth access enabled — contact your admin
Connection failed errorVerify the URL is exactly https://mcp.pulseintelligence.com/mcp
Tools not showing in chatStart a new conversation after connecting the integration
Search returns no resultsTry broadening your query or using different terminology

Client-specific issues (plan requirements, developer mode, per-chat toggles) are covered in each connection guide.

On this page