Platform map35 domainsREST + SSE + MCPSDK TS / Python
How to read the map
Each node’s size is its number of public operations in the OpenAPI contract.
Meteor isn’t a list of endpoints: it’s a system. Hover over a domain to see its endpoint, its scope and its MCP tool.
See all 35 domains by layerThe green line on the map, step by step. Each hop is a public operation with its scope: your editor calls it over MCP and your backend through the SDK.
GET/contacts?q=
POST/workspaces/{workspaceId}/runs
POST/contacts/{contactId}/messages
POST/reminders
See it live Illustrative example
A plain-language request turns into API operations: which endpoint, which Met acted, how much Energy was debited and what went out on WhatsApp. REST, SSE and MCP over the same 35 domains.
01 Your agent
Works with Claude Code · Cursor · Windsurf · Codex · your agent
You
When a lead comes in on WhatsApp, have the sales Met qualify it and set a reminder for Thursday’s demo.
Agent · over MCP
Done. I used four Meteor tools:
met_list_contactsfinds Laura in the CRMmet_run_agentruns Valeria (sales)met_send_messagereplies on WhatsAppmet_create_remindersets Thursday’s reminderShould I make this an automation for every new lead?
You
Summarize today’s leads and tell me which ones are ready for a quote.
Agent · over MCP
Done. I used two Meteor tools:
met_list_contactspulls recent contactsmet_run_agentValeria writes the summaryThe summary is above. Should I draft a quote for the first one?
You
Save Laura’s order to the Orders collection and confirm it on WhatsApp.
Agent · over MCP
Done. I used three Meteor tools:
met_list_collectionsfinds the Orders collectionmet_create_itemcreates the order rowmet_send_messageconfirms on WhatsAppWant me to tell the team when its status changes?
02 Calls to Meteor
live · 4 operations
/contacts?q=Laura
—contacts:read—
/workspaces/7/runs
Valeriaruns:executee.g. 1,2→{ "met": "Valeria", "input": "Califica a Laura…", "stream": true }
Idempotency-Key: 6f1c2a…
←200 text/event-stream
↓run.started · run.step · run.output · run.completed
/contacts/4812/messages
Valeriachannels:send—
/reminders
—reminders:write—
/contacts?limit=50
—contacts:read—
/workspaces/7/runs
Valeriaruns:executee.g. 0,8→{ "met": "Valeria", "input": "Resume los leads de hoy", "stream": true }
←200 text/event-stream
↓run.started · run.step · run.output · run.completed
/workspaces/7/collections
—collections:read—
/collections/12/items
—items:write—
/contacts/4812/messages
Valeriachannels:send—
Sample values. Energy is debited per executed task; a met_test_ key debits nothing and external sends are blocked.
03 WhatsApp line
Laura · new lead
handled by: Valeria (Met)Hi, I saw the ad. Do you run demos for sales teams?
10:41Hi Laura! Absolutely. Does Thursday at 10:00 a.m. work for you?
Valeria · via API · 10:41Yes, perfect.
10:42POST/reminders
Reminder for Thursday, 9:00 a.m., using the approved demo template.
Nothing goes out on WhatsApp: the summary stays in your agent’s chat.
Laura · customer
handled by: Valeria (Met)Laura, your order is in. I’ll let you know when it ships.
Valeria · via API · 15:0204 Run SSE events POST /workspaces/7/runs · stream: true
$ met listen --types run.completed,run.failedrun.startedthe run started with Valeriarun.steptool · find the contactrun.steptool · reply on WhatsApprun.outputa chunk of the answerrun.completeddone · Energy debitedrun.failedonly if something failsrun.startedthe run started with Valeriarun.steptool · read the contactsrun.outputa chunk of the summaryrun.completeddone · Energy debitedrun.failedonly if something failsThis request didn’t start a run: it called the operations directly, so there are no SSE events.
Public operations per domain · OpenAPI contract
01 Core · Agents
03 Channels · Output
The same, without an agent
Every row in the console is a public operation with its scope. Over MCP your editor calls it; through the SDK, your backend does. Same contract.
No runtime dependencies, Node ≥ 20, ESM.
npm install @meteor.ia/sdk
Create a workspace or sign in. In Developers, create a met_test_ key with runs:execute and contacts:read, and copy your workspace ID into your .env.
MET_API_KEY=met_test_your_key MET_WORKSPACE_ID=7
Save the code as run.mjs, then run node --env-file=.env run.mjs.
Step by step: Authentication → Run Mets.
import Met from '@meteor.ia/sdk'; const met = new Met(process.env.MET_API_KEY, { workspaceId: Number(process.env.MET_WORKSPACE_ID), }); const { data } = await met.contacts.list({ q: 'Laura' }); const run = await met.runs.create({ met: 'Valeria', input: 'Qualify Laura' }); console.log(run.status, run.output);
import os from meteor_ia import Met met = Met(os.environ["MET_API_KEY"], workspace_id=int(os.environ["MET_WORKSPACE_ID"])) contacts = met.contacts.list(q="Laura") run = met.runs.create("Qualify Laura", met="Valeria") print(run["status"], run["output"])
// your editor, connected to https://api.met.meteor.com.co/api/v1/mcp { "method": "tools/call", "params": { "name": "met_list_contacts", "arguments": { "search": "Laura" } } } { "method": "tools/call", "params": { "name": "met_run_agent", "arguments": { "met": "Valeria", "input": "Qualify Laura" } } }
curl "https://api.met.meteor.com.co/api/v1/contacts?q=Laura" \ -H "Authorization: Bearer $MET_API_KEY" curl -X POST https://api.met.meteor.com.co/api/v1/workspaces/$MET_WORKSPACE_ID/runs \ -H "Authorization: Bearer $MET_API_KEY" \ -H "Content-Type: application/json" \ -d '{"met":"Valeria","input":"Qualify Laura"}'
Take a test key with no strings attached: no email, no card, no account. It reads a fictional business and runs its Met for real, so you can see the real shape of our responses. It is read-only — the server fixes its permissions, not the request — and comes with its own Energy budget, for 24 hours.
In action
Each recipe goes from the problem to running code: which scopes the key needs, which endpoints it touches, and what breaks in production if you skip it.
See all guidesFor agents
If your agent is the one reading this and not you, it shouldn't have to dig through navigation and styles. The whole portal is served as plain text too.
curl -H "Accept: text/markdown" \ https://developers.meteor.com.co/guias/autenticacion.html
.mdSwap .html for .md on any guide, or ask for Accept: text/markdown on the same URL. You get the text and nothing else.llms.txtThe map of the portal: what's here, where it lives, and answers to the questions people ask before integrating.llms-full.txtEvery guide concatenated, so you can load the whole portal into context in one shot.met_* tools filtered by your key's scopes.meteor-api gives your agent the judgment layer — which tool follows which, what limit each response carries — across six sub-skills generated from the MCP server's real catalog. Works with any client that reads .agents/skills/: Claude Code, Cursor, Codex, Gemini, Copilot, Cline and Windsurf.
curl -fsSL https://developers.meteor.com.co/skill-pack/install.sh | sh
Pricing
Create API keys from your workspace or Partner account. To operate a workspace, it needs a current monthly plan; trials and sponsored plans also qualify.
met_test_) at no cost| Plan | Price / month |
|---|---|
| EstudioFreelancers and small businesses | $99USD |
| OficinaGrowing teams | $299USD |
| EdificioFull operation at higher volume | $500USD |
| CiudadelaHeavy automation demand | $1,000USD |
| CampusCorporations at scale | $3,000USD |
For approved workspaces, Meteor can enable a USD 0 fixed monthly plan; consumed Energy is billed at the premium rate. It is not a public plan: a Meteor Super Admin enables it for approved partnerships.
See the Partners API →