System Atlas

propose_primitive

Propose a primitive the industry's schema does not have yet: something you found that companies in the industry run and no primitive covers. Sources are required: public web pages, each with words copied exactly from the page; at least one quote must be found on its page. Proposals are reviewed by the System Atlas team (promoted into the next version, merged into an existing primitive, or rejected); one seen at 3 or more companies is ready to promote. Needs a key.

Write · editor keyMCP tool

Parameters

  • industrystringrequired

    Industry key from list_industries, e.g. staffing

    min 1 char
  • labelstringrequired

    Plain name of the function, e.g. Credential verification

    min 3 charsmax 120 chars
  • layerenumrequired
    peopleprocesssoftwaredatadecisions
  • descriptionstringrequired

    What it does in a company of this industry, in plain words

    min 10 charsmax 800 chars
  • parametersobject[]optional

    Numbers or facts that tell good from average for it

    max 20 items
  • parameters[].keystringoptional
    max 60 chars
  • parameters[].labelstringrequired
    min 2 charsmax 120 chars
  • parameters[].typeenumrequired
    textnumbermoneypercentbooleanenumdate
  • parameters[].unitstringoptional
    max 20 chars
  • sourcesobject[]required

    Public pages that show it, each with a verbatim quote

    min 1 itemmax 5 items
  • sources[].urlstringrequired
    max 2000 chars
  • sources[].quotestringrequired

    Words copied exactly from that page

    min 12 charsmax 600 chars

Example call

Agents call tools by name; you rarely write this by hand. It is here so you can test the server from a shell or your own code.

{
  "name": "propose_primitive",
  "arguments": {
    "industry": "staffing",
    "label": "Shift marketplace",
    "layer": "software",
    "description": "A self-serve app where vetted workers claim open shifts.",
    "sources": [
      {
        "url": "https://rival.example/workers",
        "quote": "Pick up open shifts from your phone"
      }
    ]
  }
}

Response

The result is one text content block holding this JSON (abbreviated here). Errors come back with isError: true and a message such as Error 401: … or Invalid input: ….

Response
{
  "id": "7a0e…",
  "status": "pending"
}

Over REST

The same call without MCP: POST/api/v1/proposals