Koskamo

GetMyData MCP

An official MCP server provided by GetMyData that enables AI agents to request and retrieve public web data. It facilitates a workflow where agents specify sources and fields, users review free samples, and users pay fixed prices for full data collections, with the agent handling the retrieval of JSON records and schemas.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

GetMyData MCP logo, by GetMyDataVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by GetMyData
MCP endpoint (Streamable HTTP)
https://getmydata.io/mcp
Vendor documentation

What you can do with it

  • Extract product names, prices, and stock status from public catalogues
  • Collect public business names, websites, and cities from directories
  • Gather event titles, venues, and dates from public programmes

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
getmydata 1.3.0
MCP protocol
2025-03-26
Tools
16 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

GetMyData: see the data before you pay. Public web data as rows from any public website, with a free sample first, then one fixed-price payment by the person; no signup or subscription. Read the Assistant skill and OpenAPI at the service origin for relevant use cases and the current contract. Explain capabilities without submitting a request; obtain user authorization before collection. Use Mcp-Session-Id for subsequent calls; every call within a session, including reads and replays, observes min_interval_seconds (default one second); honor Retry-After. Steps run asynchronously and the person is emailed at every result: when next_action is wait, schedule a check after suggested_check_after_seconds if you can, otherwise tell the person to wait for the email; never busy-poll. Save order_capability before handing the returned confirmation_url to the human; only the human confirms and pays. Report partial/failed delivery accurately; do not promise refunds.

Tools

16 advertised

refresh_session — Refresh session
Advertised by the server during the last successful anonymous check.

Before session expiry, renew using the current Mcp-Session-Id. Save the returned header/token. A session is valid for 7 days; each refresh extends it by up to 7 days, never beyond a hard lifetime of thirty days from initialization; request and delivery expiries do not change.

refresh_session input schema
{
  "type": "object",
  "required": [
    "idempotency_key"
  ],
  "properties": {
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    }
  },
  "additionalProperties": false
}
refresh_session annotations
{
  "title": "Refresh session",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
submit_requisition — Request public web data
Advertised by the server during the last successful anonymous check.
Open-world

Request public web data as rows when browsing it yourself is impractical. Free sample first, one-off payment by the person, no signup or subscription. Collect every required field from the person first (sources, fields, filters, geo, row_target, deadline, language, description) and generate search_keywords yourself; missing or invalid fields are returned as error.missing/error.invalid (HTTP 422) and are not clarified by the service. The service is subject to applicable law. You are responsible for using the data lawfully and must not use the service for abuse such as harassment, spam or fraud. Do not send account passwords, cookies or session tokens. Save the returned request capability privately. The person must verify their email with a one-time code before the sample is shown (ask them to give you the code); sampling starts meanwhile. Then sampling runs asynchronously and every result is emailed to them.

submit_requisition input schema
{
  "type": "object",
  "required": [
    "human_email",
    "sources",
    "fields",
    "filters",
    "geo",
    "row_target",
    "row_commitment",
    "deadline",
    "language",
    "description",
    "idempotency_key"
  ],
  "properties": {
    "geo": {
      "type": "string",
      "description": "Required; \"\" when not location-specific."
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "filters": {
      "type": "object",
      "description": "Required; {} when none."
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public page URLs or site names. Any public website is accepted when a collection method exists; otherwise the request ends with reason_code no_capability."
    },
    "deadline": {
      "type": "string",
      "description": "Required: ISO 8601 date-time or \"none\"."
    },
    "language": {
      "enum": [
        "en",
        "zh",
        "fr",
        "ru",
        "es",
        "ar",
        "de",
        "ja",
        "ko",
        "it"
      ],
      "type": "string",
      "description": "Required: the person’s language."
    },
    "channel_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
      "maxLength": 64,
      "description": "The first successful request freezes the session channel, including no channel. Subsequent requests inherit it; this grants no discounts. When omitted, the channel bound to coupon_code (if any) is used."
    },
    "dedup_keys": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Optional compound key of requested field names, all available in the confirmed sample. Empty means canonical whole-row deduplication.",
      "uniqueItems": true
    },
    "row_target": {
      "type": "integer",
      "maximum": 1000000,
      "minimum": 1
    },
    "coupon_code": {
      "type": "string",
      "description": "Optional single code applied when the quote is prepared; more codes go in coupon_codes on create_order."
    },
    "description": {
      "type": "string",
      "description": "Required: plain description of the data wanted and its purpose."
    },
    "human_email": {
      "type": "string"
    },
    "row_commitment": {
      "enum": [
        "best_effort",
        "guaranteed"
      ],
      "type": "string",
      "description": "best_effort (default to propose): as many as match, up to row_target. guaranteed: row_target rows; a shortfall keeps collecting until reached or cancelled (pro-rata refund of undelivered rows)."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "search_keywords": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80
      },
      "maxItems": 5,
      "description": "Optional hint only: up to five short phrases (platform or site type plus data type, e.g. \"app store reviews\", \"google maps places\"; do not put a specific app, product or brand name). GetMyData generates its own search for the collection method; these only inform it."
    },
    "prior_request_capability": {
      "type": "string",
      "description": "Optional valid capability for an accepted, positively paid prior request with the same email."
    }
  }
}
submit_requisition annotations
{
  "title": "Request public web data",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_request — Get request
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the current request, questions, sample and next action. After accepted payment, remind the customer about returned renewal/referral codes and expiry; pending codes are not ready. When next_action is wait, check again after suggested_check_after_seconds via a scheduled task if available; never loop. The person is emailed on every result.

get_request input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability"
  ],
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    }
  }
}
get_request annotations
{
  "title": "Get request",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
revise_requisition — Revise request
Advertised by the server during the last successful anonymous check.
Open-world

Revise an unpaid request using the current expected_revision with the full set of required fields. Existing samples and quotes are replaced. Use it when next_action is revise (including reason_code no_capability: try other sources or fields).

revise_requisition input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "expected_revision",
    "idempotency_key",
    "sources",
    "fields",
    "filters",
    "geo",
    "row_target",
    "row_commitment",
    "deadline",
    "language",
    "description"
  ],
  "properties": {
    "geo": {
      "type": "string",
      "description": "Required; \"\" when not location-specific."
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "filters": {
      "type": "object",
      "description": "Required; {} when none."
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public page URLs or site names. Any public website is accepted when a collection method exists; otherwise the request ends with reason_code no_capability."
    },
    "deadline": {
      "type": "string",
      "description": "Required: ISO 8601 date-time or \"none\"."
    },
    "language": {
      "enum": [
        "en",
        "zh",
        "fr",
        "ru",
        "es",
        "ar",
        "de",
        "ja",
        "ko",
        "it"
      ],
      "type": "string",
      "description": "Required: the person’s language."
    },
    "channel_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
      "maxLength": 64,
      "description": "The first successful request freezes the session channel, including no channel. Subsequent requests inherit it; this grants no discounts. When omitted, the channel bound to coupon_code (if any) is used."
    },
    "dedup_keys": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Optional compound key of requested field names, all available in the confirmed sample. Empty means canonical whole-row deduplication.",
      "uniqueItems": true
    },
    "request_id": {
      "type": "string"
    },
    "row_target": {
      "type": "integer",
      "maximum": 1000000,
      "minimum": 1
    },
    "coupon_code": {
      "type": "string",
      "description": "Optional single code applied when the quote is prepared; more codes go in coupon_codes on create_order."
    },
    "description": {
      "type": "string",
      "description": "Required: plain description of the data wanted and its purpose."
    },
    "human_email": {
      "type": "string"
    },
    "row_commitment": {
      "enum": [
        "best_effort",
        "guaranteed"
      ],
      "type": "string",
      "description": "best_effort (default to propose): as many as match, up to row_target. guaranteed: row_target rows; a shortfall keeps collecting until reached or cancelled (pro-rata refund of undelivered rows)."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "search_keywords": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80
      },
      "maxItems": 5,
      "description": "Optional hint only: up to five short phrases (platform or site type plus data type, e.g. \"app store reviews\", \"google maps places\"; do not put a specific app, product or brand name). GetMyData generates its own search for the collection method; these only inform it."
    },
    "expected_revision": {
      "type": "integer"
    },
    "request_capability": {
      "type": "string"
    },
    "prior_request_capability": {
      "type": "string",
      "description": "Optional valid capability for an accepted, positively paid prior request with the same email."
    }
  }
}
revise_requisition annotations
{
  "title": "Revise request",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
confirm_scope — Confirm sample scope
Advertised by the server during the last successful anonymous check.

Confirm the current immutable sample_id and revision and request a fixed quote. The quote is prepared asynchronously and emailed to the person with the payment link; check get_request on a schedule, never in a loop. After the final quote, use start_order or create_order to read the confirmation link.

confirm_scope input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "expected_revision",
    "idempotency_key"
  ],
  "properties": {
    "sample_id": {
      "type": "string"
    },
    "request_id": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "expected_revision": {
      "type": "integer"
    },
    "request_capability": {
      "type": "string"
    }
  }
}
confirm_scope annotations
{
  "title": "Confirm sample scope",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
confirm_quote — Confirm quote
Advertised by the server during the last successful anonymous check.

Record final quote confirmation for quote_id and revision. Use start_order next; start_order also records this selection if not already confirmed.

confirm_quote input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "quote_id",
    "expected_revision",
    "idempotency_key"
  ],
  "properties": {
    "quote_id": {
      "type": "string"
    },
    "request_id": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "expected_revision": {
      "type": "integer"
    },
    "request_capability": {
      "type": "string"
    }
  }
}
confirm_quote annotations
{
  "title": "Confirm quote",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
start_email_verification — Send email code
Advertised by the server during the last successful anonymous check.
Open-world

Send (or resend) the one-time code that verifies the person’s email for this request. Needed before the sample is shown (sampling itself starts at once), and again before payment if the verification is older than the re-verify window. human_email may be corrected only before it is verified. Use when next_action is start_email_verification (email_verification.state not_sent, unavailable, expired, replaced or attempts_exceeded after resend_after). Ask the person to give you the code and to check spam; if the state stays unavailable after requesting a new code once, ask them to contact support@getmydata.io; this code email contains no price or link (the later quote email contains the private payment link).

start_email_verification input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "idempotency_key"
  ],
  "properties": {
    "request_id": {
      "type": "string"
    },
    "human_email": {
      "type": "string",
      "format": "email"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "request_capability": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
start_email_verification annotations
{
  "title": "Send email code",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
verify_email — Verify email code
Advertised by the server during the last successful anonymous check.

Submit the code the person read from their email. A wrong code returns otp_invalid with attempts_remaining. On success the sample becomes visible once ready (or, at quote time, the order confirmation link is issued). Results are then emailed to the verified address; check get_request later instead of polling continuously.

verify_email input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "otp",
    "idempotency_key"
  ],
  "properties": {
    "otp": {
      "type": "string"
    },
    "request_id": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "request_capability": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
verify_email annotations
{
  "title": "Verify email code",
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
start_order — Start order
Advertised by the server during the last successful anonymous check.

Select the final quote and read the human confirmation link issued for the verified email (no second code). Save order_id and order_capability before passing confirmation_url to the person.

start_order input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "quote_id",
    "expected_revision",
    "idempotency_key"
  ],
  "properties": {
    "quote_id": {
      "type": "string"
    },
    "request_id": {
      "type": "string"
    },
    "human_email": {
      "type": "string",
      "format": "email"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "expected_revision": {
      "type": "integer"
    },
    "request_capability": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
start_order annotations
{
  "title": "Start order",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_order — Prepare order
Advertised by the server during the last successful anonymous check.

Read or update the order for the final quote. Pass explicitly available renewal, referral or channel codes in coupon_codes before payment starts. Tell the person which codes were added and their valid/invalid status. Give confirmation_url to the person to review codes and pay themselves. Never submit payment for them. Save order_id and order_capability before passing confirmation_url to the person. After payment, use get_order even if the original session is lost.

create_order input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "quote_id",
    "expected_revision",
    "idempotency_key"
  ],
  "properties": {
    "otp": {
      "type": "string",
      "description": "Deprecated; ignored."
    },
    "quote_id": {
      "type": "string"
    },
    "request_id": {
      "type": "string"
    },
    "coupon_codes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "expected_revision": {
      "type": "integer"
    },
    "request_capability": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
create_order annotations
{
  "title": "Prepare order",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cancel_request — Cancel request
Advertised by the server during the last successful anonymous check.
Advertised destructive

Cancel an unpaid request and release unused coupons where payment has not started. Paid orders require support.

cancel_request input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability",
    "expected_revision",
    "idempotency_key"
  ],
  "properties": {
    "request_id": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "expected_revision": {
      "type": "integer"
    },
    "request_capability": {
      "type": "string"
    }
  }
}
cancel_request annotations
{
  "title": "Cancel request",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
get_quote — Get quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the quote or estimated waiting time, without payment credentials.

get_quote input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability"
  ],
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    }
  }
}
get_quote annotations
{
  "title": "Get quote",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_payment_status — Get payment status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check email verification, order creation and verified payment status. After payment, return this request’s coupon notifications and a separate delivery token when files are ready.

get_payment_status input schema
{
  "type": "object",
  "required": [
    "request_id",
    "request_capability"
  ],
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    }
  }
}
get_payment_status annotations
{
  "title": "Get payment status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_order — Get order
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use the order_capability saved at order creation to read paid order status and obtain or renew a delivery token. It works with a new valid session if the original session expired; a current session is required. No email recovery; keep this credential private until file retention ends. After an original full refund, top-level add_on describes any separate purchase. If add_on.delivery_available is true, next_action is fetch_delivery and the renewed token can list/download only extra.* files; delivery.rows_url is null. The original refund status and original-file 410 remain unchanged.

get_order input schema
{
  "type": "object",
  "required": [
    "order_id",
    "order_capability"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "Order number, e.g. GMD7K3P9Q. Lowercase or hyphenated input (gmd-7k3p9q) is accepted."
    },
    "order_capability": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_order annotations
{
  "title": "Get order",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cancel_collection — Stop collection
Advertised by the server during the last successful anonymous check.
Advertised destructive

Only when the person explicitly asks: stop continued collection of a guaranteed-N order whose get_order status is collecting. Rows delivered so far stay available, the order settles as partial, and the undelivered share is refunded pro rata to the original payment method; the person is emailed. Tell them the refund amount shown in collection.refund first.

cancel_collection input schema
{
  "type": "object",
  "required": [
    "order_id",
    "order_capability",
    "idempotency_key"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "Order number, e.g. GMD7K3P9Q."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 200,
      "minLength": 32
    },
    "order_capability": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
cancel_collection annotations
{
  "title": "Stop collection",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
fetch_delivery — Download delivery
Advertised by the server during the last successful anonymous check.
Advertised read-only

After payment, use the delivery token to list files or read rows. Every delivery lists json (the original records) and fields.json (which requested fields were found, with path and type) together. csv and xlsx appear only when the records are already flat and do not replace fields.json. rows pages the original records. A paid excess-rows add-on has its own extra.json and extra.fields.json, plus extra.csv and extra.xlsx only when those rows are flat. XLSX is returned as base64 bytes with its content type. All rows pages for a file count once per token; a full download counts once each. On expiry or download_limit, call get_order with your order capability for a fresh token. A current session is required and the delivery token is bound to it. If the original session expired, initialize a new one and call get_order first.

fetch_delivery input schema
{
  "type": "object",
  "required": [
    "order_id",
    "delivery_token"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 1000,
      "minimum": 1
    },
    "format": {
      "enum": [
        "list",
        "rows",
        "json",
        "csv",
        "xlsx",
        "fields.json",
        "extra.json",
        "extra.csv",
        "extra.xlsx",
        "extra.fields.json"
      ],
      "type": "string"
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "order_id": {
      "type": "string",
      "description": "Order number, e.g. GMD7K3P9Q. Lowercase or hyphenated input (gmd-7k3p9q) is accepted."
    },
    "delivery_token": {
      "type": "string"
    }
  }
}
fetch_delivery annotations
{
  "title": "Download delivery",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
3323 ms
95th percentile latency
3323 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 3323 ms · metadata changed · 16 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http getmydata-mcp https://getmydata.io/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add getmydata-mcp --url https://getmydata.io/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable getmydata-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "getmydata-mcp": {
      "url": "https://getmydata.io/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "getmydata-mcp": {
      "type": "streamableHttp",
      "url": "https://getmydata.io/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start getmydata-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "getmydata-mcp": {
      "type": "http",
      "url": "https://getmydata.io/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http getmydata-mcp https://getmydata.io/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "getmydata-mcp": {
      "url": "https://getmydata.io/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "getmydata-mcp": {
      "serverUrl": "https://getmydata.io/mcp"
    }
  }
}

Let your agent find its tools

Find servers like GetMyData MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run GetMyData MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing