ChatGPT Actions
In the GPT editor, create an action, choose None for authentication and import this schema from its URL. Try searchCatalog.
Find the right service, read an order or give an assistant access to a conversation. Start with a live catalog request.
Try the API → Manage access keyscurl -H 'Accept: application/json' \
'https://efazi.com/agent-api/v1/catalog/service?limit=1'Pick a catalog and enter a word from the listing title. Results come directly from the public API.
Send a request to see its response.Start with a public search, or connect a private client to your account.
In the GPT editor, create an action, choose None for authentication and import this schema from its URL. Try searchCatalog.
Import the full OpenAPI file into your API client. Set an Efazi bearer key for operations on your account. Keep a personal key in a private client you control.
Full OpenAPI 3.1 schema ↗ · Download Postman collectionInstall openai-agents and run this script to discover tools on the public MCP server. This example makes no model call.
import asyncio
from agents.mcp import MCPServerStreamableHttp
async def main():
async with MCPServerStreamableHttp(
name="Efazi", params={"url": "https://efazi.com/mcp"}
) as server:
for tool in await server.list_tools():
print(tool.name)
asyncio.run(main())Official SDK examples ↗ · Instructions for other MCP clients
Use https://efazi.com/agent-api/v1 as the base URL. Send Accept: application/json with each request.
GET /catalog/{kind}Search service, job or software by title with search, min and max. Limit is 1–10, default 5. Results are newest first.
GET /catalog/{kind}/{id}Read the description, seller, price and listing URL. Services also include delivery time and extras.
GET /member/account · GET /member/balanceEach endpoint needs its corresponding permission. Balance includes the currency.
GET /member/orders · GET /member/orders/{id}List the latest 20 orders you participate in, or open one order with its recent messages.
GET /member/inbox · GET /member/inbox/{id}Read your latest 20 conversations or the most recent 20 messages in one conversation.
POST /conversations/{id}/replySend JSON with text (up to 2,000 characters) and request_id (a UUID). Reuse the same UUID and content when retrying with the same key. The limit is 20 replies per member per hour.
GET /member/alertsRead up to 20 recent notification records, including channel and timestamp.
GET /connection · DELETE /connectionInspect the permissions and expiry of the key used for the request. DELETE immediately revokes that key.
Create a named key with only the permissions your client needs. Copy it when issued and send it in the Authorization: Bearer header. Keys last 30 days. You can keep up to ten active keys.
curl 'https://efazi.com/agent-api/v1/connection' \
-H 'Accept: application/json' \
-H "Authorization: Bearer $EFAZI_KEY"The REST routes share a limit of 120 requests per minute. For a 429 response, wait before retrying. 401 means the key is missing, expired or revoked. 403 means the required permission or account access is missing. 404 can mean a record is outside your account. 409 means a reply UUID was reused with different content. 422 identifies invalid input.
Search the service catalog with a maximum price. Use the ID of a result to read its scope, delivery time and extras. The list price is a starting price.
Try services under $25 →Read GET /catalog/service/{id}. If seller_payment_blocked is true, show the listing for reference. A false value alone does not confirm that checkout is available.
Generate a UUID for request_id before sending. If the response is lost, retry with the same key, UUID, conversation and text. If the API returns 409, check the original message before sending anything else.