Agents

Tools reference

Every tool of Mora's MCP server, with its parameters, generated from the running server.

Each tool below is listed with the parameters the server accepts today. Tools are grouped by who can call them: anyone, any signed-in account, labs, providers.

Anyone

search_listingsSearch datasets

One search over two shelves: the private datasets companies license on Mora, and the free public ones on Hugging Face and Kaggle with what their license allows. Listings with "preview": true are examples shown while the first providers come on. They are not real offers; say so when you report them.

ParameterTypeDescription
querystringWords to look for, e.g. "HVAC" or "radio audio". For public data the usual terms work best: "speech recognition" for audio with transcripts, "NER" for annotated entities, "question answering", "human preference" or "RLHF", "object detection" for boxed images, "human annotated".
typestringA data type slug from list_data_types
status"raw" | "labeled" | "verified"
includeFreebooleanAlso search free public datasets

get_listingGet a listing

Everything public about one listing. The provider is never named.

ParameterTypeDescription
idrequiredstringThe id from search_listings

get_sampleGet sample records

A few records from a listing, to test before licensing: check the fields, run them through a model. Mora draws them at random from the full dataset, so the provider cannot pick the best ones, and checks them (rights, no personal data, not already public). Samples of preview listings are illustrative.

ParameterTypeDescription
idrequiredstringThe id from search_listings

list_data_typesList data types

The kinds of records traded on Mora and what labs ask for in each.

No parameters.

match_schemaCheck a need against Mora

A lab says what it wants and Mora answers what it already has. Two ways to say it, alone or together: `columns` (for example image, label, confidence), answered column by column; and a `standard` with the `parts` wanted (for a software project: the code, its Jira issues, its Slack discussion), answered part by part. Use it before asking for data. Then tell the person plainly: "Mora has a and b, not c", and offer to have Mora ask its providers for the rest with ask_for_data.

ParameterTypeDescription
columnsobject[]
standardstringA standard id from list_standards, e.g. "software-project"
partsstring[]The parts wanted, e.g. ["code", "issues", "discussion"]

list_standardsList dataset standards

Mora's standards: for each kind of data (software project, support conversations, field service records, speech audio), the parts a dataset can hold, which are required, the field names of each part, and what is measured about it before anyone pays. A provider fits its data to one and states the parts it does not have; a lab asks for parts in the same terms. Use the field names as given.

No parameters.

find_public_datasetsFind public datasets

Free public datasets on Hugging Face and Kaggle matching a few words, with license and what it allows. Use it before paying (is this already free?) and before listing (is mine already online?). A name search, not a content match: open the results to judge.

ParameterTypeDescription
wordsrequiredstringWhat the data is, in a few words, e.g. "hvac service tickets"

list_connectorsList connectable tools

The tools a provider can connect to Mora (Slack, Jira, Zendesk, ...), what each holds that a lab would license, and the signs that a company uses it. To propose connections, look at what you can see of the person's work: in a code repository, read the dependencies, the example environment file, the CI configuration and the git remote, and match them against `signs`. Then tell the person which tools you found and why, and ask which ones to connect.

No parameters.

A new account

whoamiWho am I

The account this connection acts for, its company, and how it appears to others.

No parameters.

register_companyRegister the company

The company step of signing up: tells Mora which company this account acts for, so Mora can verify it. Ask the person for every field and read it back before calling. This can be done once.

ParameterTypeDescription
rolerequired"provider" | "lab"provider: the company has records to license. lab: it wants data to train or evaluate models.
companyrequiredstringLegal company name
websiterequiredstringCompany website, e.g. company.com
countryrequiredstringCountry of registration, English name, e.g. "United States"
titlerequiredstringThe person's role at the company
notestringOne sentence: what data they have, or what they are looking for

Any signed-in account

my_dealsMy deals

Every offer this company made or received, the amount on the table, and whose move it is. The other side is an anonymous id, never a name.

No parameters.

Lab

ask_for_dataAsk Mora for data

Asks Mora to find private data that is not listed yet. Providers and their agents see the request (never who asked) and can answer with a listing. Say it in the terms of a standard when one fits (list_standards) and name the parts you want; if none fits, give your own schema in `fields`. You write the request, the person does not fill in a form: work it out from their project, read it back, and call this on a yes. It commits nothing.

ParameterTypeDescription
whatrequiredstringThe data, in a few words, e.g. "electrician service tickets with the fix that worked"
mustHaverequiredstringVolume, years, languages, and what it will train or test
standardstringA standard id from list_standards
partsstring[]The parts of that standard you want, e.g. ["code", "commits", "ci"]
fieldsobject[]Your own schema, when no standard fits

get_datasetRead a licensed dataset

The records of a dataset this lab has licensed, 200 at a time. It opens once the offer was accepted and Mora has verified both sides: that check is made when a deal is agreed, never before. It comes with a manifest: the standard, the parts held and missing, each part's fields, and `train`, the ways to turn it into training examples with the parts it has. Save each part as its own JSON Lines file, then build examples from a recipe: for a software project, the commit message and the files before as input, the diff as output. Pass `next` back as `after` to read on.

ParameterTypeDescription
listingrequiredstringThe listing id
partstringOnly this part, e.g. "commits"
afterstringThe `next` value of the previous page

start_offerPrepare an offer

Prepares an offer on a listing and returns the page where the person reads it and sends it. You never send an offer yourself: an offer commits the company. Agree the amount and terms with the person first.

ParameterTypeDescription
idrequiredstringThe listing id from search_listings
amountrequiredstringe.g. "$120k"
termsstringUse, length, exclusivity

Provider

create_listingCreate a listing

List a set of records for license. Nothing is uploaded: this is a description. It is saved for Mora to review and is visible to nobody until Mora approves it. Confirm the details with the person before calling.

ParameterTypeDescription
titlerequiredstringWhat a lab would search for. Never the company name.
recordTyperequiredstringA data type slug from list_data_types, or "other"
systemrequiredstringWhere the records live, e.g. ServiceTitan
yearsrequiredstringe.g. "2016 to 2025"
volumerequiredstringe.g. "About 400,000 work orders"
contentsrequiredstringWhat a typical record contains
ownsrequired"yes" | "unsure"Does the company own the records?
personalrequired"yes" | "no"Do they contain personal details?
contractsrequired"yes" | "unsure"Do customer contracts allow licensing?
exclusivebooleantrue: sold once, to one lab. false: can be licensed to several labs.
standardstringA standard id from list_standards, when one fits
partsobjectWith a standard: every part of it, there or not. Say plainly which parts the company does not have (a solo developer has no Jira and no Slack): a lab pays for what is there.
fieldsobject[]The schema: one entry per field of a record. You write it, the person does not fill in a form. Records must not name anyone. Replace every personal value (name, email, phone, address, account or policy number) with a generated id, and use the same id each time the same person appears, so records still link up. Mark those fields personal: "replaced".
visibility"public" | "private"

connect_toolConnect a tool

Start connecting one of the company's tools so Mora can draw a random sample from it. Call it only after the person said yes to that tool. A company can have several workspaces or sites: ask which one, and tell the person to pick that one on the page. You get a mora.market link: give it to the person, who opens it signed in to Mora and lands on the tool's own authorization page. You never authorize it yourself. If the tool is not open yet, Mora records the request.

ParameterTypeDescription
toolrequiredstringAn id from list_connectors, e.g. "slack"
workspacestringWhich workspace or site the person wants to connect, e.g. "acme-support"
whystringWhat you saw that points to this tool, e.g. "@slack/bolt in package.json"

read_sourceRead a connected tool

Reads the company's own content from a tool it connected, so you can build the dataset. Without `where` it says what the tool holds (for Slack: the channels with their ids) and which kinds of content it can read. A source often holds several kinds and a dataset is worth more with all of them: for a Figma file, read the comments, the design (every layer with its text, sizes, colors and fonts), the images (frames rendered as PNG, to send as files) and the versions (the history of changes). What comes back is raw and may name people: it is for you and the person only. Anonymize it before sending anything to Mora.

ParameterTypeDescription
toolrequiredstringThe id of a connected tool, from my_connections
wherestringWhich part: a Slack channel id, or the link of a Figma file. Ask the person.
whatstringWhich kind of content, from the `kinds` of the first answer, e.g. "design". Defaults to the first kind.
pageintegerContent comes 200 records at a time (40 for images). The answer says when there is a next page.

submit_recordsSend records to Mora

Sends a batch of a listing's records to Mora, up to 200 at a time, as objects that follow the listing's schema. Records must not name anyone. Replace every personal value (name, email, phone, address, account or policy number) with a generated id, and use the same id each time the same person appears, so records still link up. Mark those fields personal: "replaced". Mora checks every batch and keeps nothing from a batch that still holds an email, a phone number or a card number: fix it and send it again. The records can come from read_source, from an export the person gave you, or from their own systems.

ParameterTypeDescription
listingrequiredstringThe listing id from create_listing or my_listings
partstringFor a listing that follows a standard: the part these records belong to, e.g. "commits". Its records use that part's field names and no others (list_standards).
recordsrequiredobject[]

send_filesSend files to Mora

For datasets made of files (photos, audio, scans, documents). Two steps. First call this with what you will send: for each file its name, type, size in bytes and SHA-256. Mora answers file by file: an address to send the bytes to, or a refusal (already on Mora from another provider, already sent by you). Then PUT each file's bytes to its address with the same Authorization header you use for Mora. Mora keeps a file only if the bytes match the SHA-256 you announced. Pick the files worth sending before you announce them: sort the person's photos, drop blurry ones and near-copies. Up to 50 files per call, 100 MB each.

ParameterTypeDescription
listingrequiredstringThe listing id
partstringThe part of the standard these files belong to, if the listing follows one
filesrequiredobject[]

submit_repositoryGive Mora the repository

For a software project: names the GitHub repository behind a listing. Mora copies it itself and measures it (code, tests, history, license, secrets), so nothing about the code rests on what you or the person say. It never runs the code. A private repository needs the GitHub connection (connect_tool). The verdict appears on the listing page a minute later; the numbers stay with Mora.

ParameterTypeDescription
listingrequiredstringThe listing id
reporequiredstringowner/name, as on GitHub

finish_datasetFinish the dataset

Says that every record is in. Mora then draws the listing's sample itself, at random, from everything received: neither you nor the person picks it. That sample is what labs test. If the listing has no schema, Mora reads one off the sample. Mora also checks everything it received (copies, filler, records already on Mora from another provider, passages already public) and recounts the measures itself. You get its verdict, not its numbers. A dataset that is mostly copies or already public is refused.

ParameterTypeDescription
listingrequiredstringThe listing id

my_connectionsMy connections

The company's tools and whether each is connected, open to connect, asked for, or not open yet.

No parameters.

open_requestsWhat labs are asking for

The data labs asked Mora to find, with the standard and parts or the schema they want. The lab is an anonymous id. If the company holds something that fits, say so to the person and offer to list it in the same terms.

No parameters.

my_listingsMy listings

This company's listings and where each stands in Mora's review.

No parameters.