Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Mireye MCP server

Vendor MCP
Open markdown

The Mireye MCP connector routes your AI agent's tool calls to Mireye's own MCP server through Scalekit. Each user signs in to Mireye once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 9 tools.

Tools
9
What they doRead · write · destructive
8 · 1 · 08 read1 write0 destructive
Users sign in with
OAuth app
Your own Mireye MCP server app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Mireye MCP connection

    In AgentKit > Connections, create a Mireye MCP connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    Mireye MCP server connections use your own OAuth app. Register one with Mireye MCP server and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Mireye MCP connection.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'mireyemcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Mireye MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'mireyemcp_mireye_fetch',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • mireyemcp_mireye_askAnswer a location question with cited evidence for $0.10 per completed answer.Read-only

    Ask Mireye

    Answer a location question with cited evidence for $0.10 per completed answer. Give coordinates or an address. Accept terms and reconnect to use licensed parcel evidence. Reuse a stable idempotency_key for retries; max_cost_usd is an optional dollar ceiling. Check geocode precision before treating an address answer as parcel-specific. Inspect parcel_grade and accuracy_type: range_interpolation is an estimate, not a rooftop match and can be about 2.9 km off in rural areas. State the precision_note before making parcel-specific claims.

    Inputs

    questionstringrequired
    Natural-language question about the coordinate.
    addressstring
    No description.
    idempotency_keystring
    No description.
    latstring
    No description.
    lngstring
    No description.
    max_cost_usdstring
    No description.
  • mireyemcp_mireye_enrichEnrich one US parcel with selected parcel attributes, point data and polygon calculations.Read-only

    Enrich a Parcel

    Enrich one US parcel with selected parcel attributes, point data and polygon calculations. Give either address or lat+lng inside req. Fields and a list of Enrich presets combine by union; omit both to request all Enrich fields. Prefer a small explicit selection. Call mireye_list_fields with endpoint="enrich" for the Enrich catalog; Fetch has a different field set. Inspect parcel_match.status first: only matched returns fields. An address selects a parcel only from a rooftop-precision geocode; otherwise parcel_match is no_match with a reason, and nothing is charged. Never choose an ambiguous candidate automatically. Point data uses the parcel analysis point; polygon calculations describe its boundary. Fields are sparse: omitted fields do not establish a negative finding. Costs $0.02 per successful parcel on Free, with paid-plan discounts; charged only when at least one requested field is returned. Accept current terms and reconnect first. Use a stable idempotency_key for retries and max_cost_usd for a dollar ceiling. An empty fields map, no-match, ambiguous and unavailable results cost zero. At capacity it returns retryable enrich_busy. Fields form a flat map in Enrich preset order, preserving each preset field order; shared fields appear once at their first preset and unassigned fields follow in catalog order. Each field contains value, source, confidence, interpretation_hints, and unit when available. Failed fields are omitted. The fields map may be empty. Read hints before interpreting nulls.

    Inputs

    reqstringrequired
    No description.
    idempotency_keystring
    No description.
  • mireyemcp_mireye_fetchFetch free public data fields at a US coordinate or address.Read-only

    Fetch Free Public Fields

    Fetch free public data fields at a US coordinate or address. Give either lat+lng or address. Each field includes its value, source, source URL, timestamp, confidence and status: ok, absent, or failed. Never treat a failed field as valid no-data; retry with backoff when retryable. Parcel identity, ownership, boundaries and parcel-dependent calculations require mireye_enrich. Presets contain only eligible public fields. Authentication, rate limits and capacity limits apply; Fetch never deducts from the dollar balance. An address result includes geocode quality; an estimated street location may describe a neighboring property. Inspect parcel_grade and accuracy_type: range_interpolation is an estimate, not a rooftop match and can be about 2.9 km off in rural areas. State the precision_note before making parcel-specific claims.

    Inputs

    addressstring
    No description.
    fieldsstring
    No description.
    latstring
    No description.
    lngstring
    No description.
    presetstring
    No description.
  • mireyemcp_mireye_field_request_statusPoll the status of a field request filed with mireye_request_field: status, queue position, the promised estimated_ready_at (fixed at acceptance, never recomputed on poll), and -- once status is 'live' -- the resume call (a ready-to-send /v1/fetch request) that answers the original ask.Read-only

    Poll a Mireye Field Request

    Poll the status of a field request filed with mireye_request_field: status, queue position, the promised estimated_ready_at (fixed at acceptance, never recomputed on poll), and -- once status is 'live' -- the resume call (a ready-to-send /v1/fetch request) that answers the original ask. Store request_id in durable task state, not conversation context: builds run on a scale of hours and the filing session will likely be gone before one finishes. Status vocabulary: 'received'/'screening' (still being screened; check waiting_on -- 'operator' means screening failed and a human has to look), 'matched' (the catalog already answered it, use resume), 'awaiting_confirm' (a near-miss or clarify needs you), 'rejected' (typed codes in disposition, terminal), 'queued'/'claimed'/'building'/'in_review'/'approved'/'publishing' (a build is in progress), 'live' (done, resume works now), 'blocked'/'expired' (terminal, no build). Requests are visible only to the credential that filed them; an id that doesn't exist -- or belongs to someone else -- is the same 404, never a 403 (a 403 would confirm the id exists).

    Inputs

    request_idstringrequired
    The request_id returned by mireye_request_field.
  • mireyemcp_mireye_geocodeResolve a US street address to a coordinate, with the quality of that coordinate.Read-only

    Geocode a US Address

    Resolve a US street address to a coordinate, with the quality of that coordinate. Feed lat/lng to mireye_fetch or mireye_ask. ALWAYS check accuracy_type before trusting the result: 'rooftop' is on the parcel, but 'range_interpolation' is estimated along a street centerline and can be ~2.9 km out in rural areas — far enough to describe a neighbouring property instead. An address that can only be placed at a ZIP/city/county centroid is REJECTED as address_too_coarse rather than returned — if you get that, ask the user for a more complete address instead of retrying. The address you send is retained alongside the coordinate it resolves to, so a result can be audited later; pass lat/lng instead if that does not suit the caller.

    Inputs

    addressstringrequired
    US street address. Include a city+state or a ZIP — the upstream cannot place a bare street line.
  • mireyemcp_mireye_list_fieldsList the field names a Mireye tool accepts, with type, unit, description, interpretation hints, null meaning and source.Read-only

    List Mireye Fields

    List the field names a Mireye tool accepts, with type, unit, description, interpretation hints, null meaning and source. endpoint=fetch lists mireye_fetch fields and presets; endpoint=enrich lists mireye_enrich fields, presets and price; endpoint=search lists mireye_search names with filter_ops (operators allowed in filters; empty means output-only), returnable (allowed in fields) and price. Each tool has its own list: a name valid for one may be unknown to another. Use query to narrow by a case-insensitive substring of the name or description, for example query="flood". Free; never charged.

    Inputs

    endpointstringrequired
    Which tool's field list to return: fetch, enrich or search.one of fetchenrichsearch
    querystring
    Optional case-insensitive substring matched against names and descriptions.
  • mireyemcp_mireye_proximityCompute distance, nearest candidates, screening or labor sheds.Read-only

    Compute Drive-Time Distances

    Compute distance, nearest candidates, screening or labor sheds. Straight-line work and estimates are free; driving uses the active plan's per-calculation USD rate. Send max_cost_usd as a decimal string to bound spending and a stable idempotency_key for retries. Check resolved locations, geocode precision, unreachable legs and missing tracts. If you infer a missing city or substitute a coordinate, state that assumption to the caller.

    Inputs

    reqstringrequired
    No description.
    idempotency_keystring
    No description.