Connect your agent
OERC is an MCP server with a plain HTTP alias. Paste one config block into the client you already use, add your beta key, and ask a question. Beta keys are issued per person and expire at the end of the two weeks.
The gateway is not yet open. Connection instructions arrive with your beta key. Request beta access.
beta — not for use in a regulatory submission
Claude
Add OERC as an MCP server in Claude Desktop or Claude Code. Your key goes in the header shown in the snippet. The exact block arrives with your beta key.
// claude_desktop_config.json — arrives with your key
"oerc": { "url": "<endpoint>", "headers": { "Authorization": "Bearer <your beta key>" } }
Cursor
Add OERC to Cursor's MCP settings. Same server, same key. The exact block arrives with your beta key.
// .cursor/mcp.json — arrives with your key
"oerc": { "url": "<endpoint>", "headers": { "Authorization": "Bearer <your beta key>" } }
ChatGPT
Add OERC as a connector in ChatGPT. The exact steps arrive with your beta key.
Settings → Connectors → Add → MCP server URL: <endpoint>
Plain HTTP / MCP
Any MCP client or HTTP caller works. Tool descriptors and the OpenAPI description are published from the same schemas. Endpoint and key format arrive with your beta key.
GET <endpoint>/tools.json
GET <endpoint>/openapi.yaml
POST <endpoint>/mcp Authorization: Bearer <your beta key>
Example: EP register lookup
Ask your agent what an operator has lodged. It calls nopsema_ep.lookup with the operator name and, if you like, an activity type or date range. The response lists matching EPs with operator, title, activity type, dates and outcome, each row carrying its provenance fields, and a cite receipt for the answer.
call: nopsema_ep.lookup { operator: "operator name", activity_type: "activity type" }
reply: {
notice: "beta — not for use in a regulatory submission",
results: [ { ep_id: "EP-XXXX", operator: "operator name", title: "EP title",
activity_type: "activity type", submitted: "YYYY-MM-DD", outcome: "outcome",
provenance: { source: "NOPSEMA EP register", publisher: "NOPSEMA",
licence: "CC BY 4.0", retrieved_at: "YYYY-MM-DDThh:mmZ",
content_hash: "sha256:…" } }, … ],
cite: { receipt_id: "cite_XXXX", hash: "sha256:…", url: "<endpoint>/cite/cite_XXXX" }
}
Example: protected-matters intersect
Give your agent a polygon. It calls protected_matters.intersect and gets back every protected-matters feature the polygon touches, by layer, with EPBC status where the layer carries it, provenance on each row, and a cite receipt.
call: protected_matters.intersect { polygon: "<WKT or GeoJSON>" }
reply: {
notice: "beta — not for use in a regulatory submission",
features: [ { layer: "Australian Marine Parks", name: "park name", zone: "zone", epbc_status: "status",
provenance: { source: "layer name", publisher: "DCCEEW", licence: "CC BY 4.0",
retrieved_at: "YYYY-MM-DDThh:mmZ", content_hash: "sha256:…" } }, … ],
cite: { receipt_id: "cite_XXXX", hash: "sha256:…" }
}
Illustrative shape only; field names are placeholders until the descriptors are published with the beta.