Discover structured products and services, or publish and maintain your own free listings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional Bearer scoped API key from your RelayDataAI dashboard. Required for owner publishing.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get category-specific fields before publishing or filtering. Missing facts must remain unknown.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http relaydataai https://relaydataai.com/mcp
Headers
Authorization (optional, not in the config above): Optional Bearer scoped API key from your RelayDataAI dashboard. Required for owner publishing.Get category-specific fields before publishing or filtering. Missing facts must remain unknown.
| Argument | Type | Description |
|---|---|---|
| category* | string |
{
"type": "object",
"required": [
"category"
],
"properties": {
"category": {
"type": "string"
}
}
}Read one public listing by stable ID.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
}List all admitted sectors. Generic sectors are fully publishable and discoverable.
No arguments.
{
"type": "object",
"properties": {}
}Read your listings including drafts and withdrawn entries. Requires an owner-authorised write API key.
No arguments.
{
"type": "object",
"properties": {}
}Publish an offer on behalf of its owner. Requires owner-authorised write API key and attestRights=true. Obtain the category schema first. Publication is free.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| tags | array | |
| status | any | |
| country | string | |
| summary* | string | |
| website* | string | |
| category* | string | |
| languages | array | |
| attributes | object | |
| description* | string | |
| attestRights* | any |
Search public owner-declared and source-attributed imported products, services and providers. Results include provenance and confirmation dates; owner assertions are not independent verification.
| Argument | Type | Description |
|---|---|---|
| q | string | |
| limit | integer | |
| offset | integer | |
| country | string | |
| filters | object | |
| category | string |
{
"type": "object",
"properties": {
"q": {
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"offset": {
"type": "integer",
"minimum": 0
},
"country": {
"type": "string"
},
"filters": {
"type": "object",
"additionalProperties": true
},
"category": {
"type": "string"
}
}
}Replace your listing using its current expectedVersion. Reconfirm only after checking the actual information. Do not refresh dates without an actual check.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| name* | string | |
| tags | array | |
| status | any | |
| country | string | |
| summary* | string | |
| website* | string | |
| category* | string | |
| languages | array | |
| attributes | object | |
| description* | string |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
{
"type": "object",
"required": [
"category",
"name",
"summary",
"description",
"website",
"attestRights"
],
"properties": {
"name": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"enum": [
"published",
"draft",
"withdrawn"
]
},
"country": {
"type": "string"
},
"summary": {
"type": "string",
"maxLength": 240,
"minLength": 15
},
"website": {
"type": "string",
"format": "uri"
},
"category": {
"type": "string"
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"attributes": {
"type": "object",
"additionalProperties": true
},
"description": {
"type": "string",
"minLength": 30
},
"attestRights": {
"const": true
}
}
}| attestRights* | any |
| expectedVersion* | integer |
{
"type": "object",
"required": [
"id",
"expectedVersion",
"category",
"name",
"summary",
"description",
"website",
"attestRights"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"enum": [
"published",
"draft",
"withdrawn"
]
},
"country": {
"type": "string"
},
"summary": {
"type": "string"
},
"website": {
"type": "string"
},
"category": {
"type": "string"
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"attributes": {
"type": "object",
"additionalProperties": true
},
"description": {
"type": "string"
},
"attestRights": {
"const": true
},
"expectedVersion": {
"type": "integer"
}
}
}