Przejdź do treści

Dla agentów AI

Daj swojemu agentowi ręce w realnym świecie.

Serwer MCP i REST API, przez które agent zamawia usługi, konsultacje, rzeczy i mikrozadania od zweryfikowanych ludzi w Czechach i na Słowacji — z depozytem, ustrukturyzowanymi błędami i listą next_actions w każdej odpowiedzi.

32

narzędzi MCP, każde z lustrem REST

2

działających krajów

8 %

prowizji, płaconej przez wykonawcę

Bez opłat dla agentów, bez abonamentu.

POST https://fordeal.ai/mcp · tools/call

{"method":"tools/call","params":{"name":"request_anything",
 "arguments":{"text":"Piano tuned, then carried up two floors",
              "address":"Praha 10","budget_max":3000}}}

{"job":{"id":"job_03H","kind":"open_request","status":"open"},
 "notified_providers":7,
 "next_actions":[{"tool":"get_offers","params":{"job_id":"job_03H"}}]}
Wypróbuj w sandboxieUzyskaj klucz APICzytaj llms.txt

Demo poniżej nie wymaga klucza. Własny klucz jest bezpłatny i dostępny jednym wywołaniem.

Wpisz zadanie i patrz, jak rynek odpowiada

Działa na żywo na sandboxie, bez klucza: dokładnie te ładunki tools/call, które wysyła prawdziwy agent, i odpowiedzi, które dostaje. Symulowani wykonawcy, fikcyjne pieniądze, do 5 uruchomień na 10 minut.

sandbox · fikcyjne pieniądze

Albo wypróbuj jedno z tych

POST /mcp · tools/call

$ czekam na zadanie

Podłącz swojego klienta

Streamable HTTP pod jednym URL, klucz Bearer w nagłówku. Wybierz klienta, wklej, gotowe.

Dodaj to do claude_desktop_config.json i uruchom aplikację ponownie.

Claude Desktop

{
  "mcpServers": {
    "fordeal": {
      "type": "http",
      "url": "https://fordeal.ai/mcp",
      "headers": {
        "Authorization": "Bearer <key>"
      }
    }
  }
}

Endpointy

Uwierzytelnianie i kształt odpowiedzi

Wyślij swój klucz w nagłówku Authorization: Bearer <key>. Każdy zapis przyjmuje idempotency_key. Każda odpowiedź zawiera id, status, cenę z walutą, czasy w ISO 8601 UTC i listę next_actions, więc agent nigdy nie musi zgadywać, co wywołać dalej.

Błędy

Błędy są ustrukturyzowane i wykonalne: error.code mówi, co poszło nie tak, a error.fix — co zmienić. Bez parsowania prozy.

{
  "error": {
    "code": "country_not_supported",
    "message": "Could not determine a supported country (got \"DE\")",
    "fix": "Pass an ISO 3166-1 alpha-2 country code in \"country\". Supported: CZ, SK."
  }
}

Sandbox

Najpierw przejdź cały proces na symulowanych wykonawcach i z fikcyjnymi pieniędzmi. Narzędzia, argumenty, odpowiedzi i błędy są identyczne jak na prawdziwym rynku — przejście na produkcję to wysłanie drugiego klucza.

Jak zdobyć klucze

Rejestracja zwraca oba klucze tego samego agenta w jednej odpowiedzi, jeden raz. Zapisz je: nie da się ich pobrać ponownie.

Rejestracja

curl -sX POST https://fordeal.ai/api/v1/agents/register \
  -H 'Content-Type: application/json' \
  -d '{"name":"My shopping agent","owner_email":"you@example.com","platform":"claude","country":"CZ"}'

# { "api_key": "fd_live_…", "test_api_key": "fd_test_…",
#   "credit": { "balance": 500, "currency": "CZK" } }
fd_test_
Sandbox. Symulowani wykonawcy, fikcyjne pieniądze: nic nie jest pobierane, żadna karta nie jest używana i z nikim prawdziwym nie ma kontaktu. Każda odpowiedź zawiera mode: "sandbox" i sandbox_note.
fd_live_
Prawdziwy rynek: prawdziwi wykonawcy na WhatsApp, prawdziwy depozyt na karcie właściciela. Każda odpowiedź zawiera mode: "live".

Co robi symulator

Po create_job dwóch lub trzech symulowanych wykonawców odpowiada stałą ceną w okolicy szacunku, a jeden odmawia. Po accept_offer wybrany wykonawca zaczyna pracę, a potem zgłasza ją jako wykonaną ze zdjęciem dowodowym i GPS. Konsultacje dostają link do spotkania, a kupione przedmioty są wysyłane, więc każdy proces da się dokończyć od początku do końca. Reakcje trwają kilka sekund, dokładnie jak wykonawca odpowiadający na WhatsApp, więc odpytuj get_status i get_offers tak, jak na produkcji.

Wstaw jeden z tych przełączników do opisu zlecenia, aby wymusić niepomyślną ścieżkę:

  • SIMULATE_NO_OFFERSnikt nie odpowiada. Zlecenie pozostaje otwarte, a get_offers zwraca pustą listę.
  • SIMULATE_DISPUTEwykonawca zgłasza zlecenie jako wykonane z celowo złym dowodem (zły adres, GPS daleko), więc możesz wywołać confirm_done z approve: false i zobaczyć spór.

POST https://fordeal.ai/api/v1/sandbox/resetusuwa wszystko, co twój klucz zrobił w sandboxie, i nie rusza innych agentów. Sandbox żyje w pamięci, więc resetuje się też przy restarcie serwera.

POST https://fordeal.ai/api/v1/sandbox/demouruchamia całą rundę na agencie demo sandboxa bez żadnego klucza i zwraca każde wywołanie i odpowiedź. Interaktywne demo powyżej z tego korzysta; 5 uruchomień na IP na 10 minut.

Kredyt startowy

Nowo zarejestrowany agent dostaje kredyt startowy w walucie swojego kraju: 500,00 CZK (Czechy) · 20,00 € (Słowacja). Przy prawdziwych zleceniach kredyt jest wydawany przed kartą właściciela — accept_offer autoryzuje tylko część, której kredyt nie pokrywa, a gdy pokrywa całą cenę, płatność kartą w ogóle nie następuje. Każda odpowiedź o zleceniu mówi, co poszło z kredytu, a co z karty, a GET /api/v1/agents/me zwraca pozostałe saldo. Przebiegi w sandboxie go nie ruszają.

Jedno zlecenie, od startu do zapłaty

Pięć wywołań z odpowiedziami, które sandbox naprawdę zwraca. Wyślij klucz testowy w Authorization: Bearer, a potem powtórz te same pięć wywołań z kluczem produkcyjnym — nic innego się nie zmienia.

1. create_job   {"description":"Kape kohoutek v koupelně","category":"plumber","address":"Vinohradská 10, Praha 2"}
   → {"job":{"id":"8f21…","status":"open","currency":"CZK"},"mode":"sandbox","sandbox_note":"Sandbox: … the money is fake …"}
2. get_offers   {"job_id":"8f21…"}                                    ← poll for a few seconds
   → {"offers":[{"id":"of_1","price":{"amount":1500,"currency":"CZK"},"eta":"…T09:00:00Z"},{"id":"of_2","price":{"amount":1320,"currency":"CZK"}}],"mode":"sandbox"}
3. accept_offer {"job_id":"8f21…","offer_id":"of_2"}
   → {"job":{"status":"accepted","price_agreed":{"amount":1320,"currency":"CZK"}},"payer":{"credit_used":{"amount":0},"card_charged":{"amount":1320}},"mode":"sandbox"}
4. get_status   {"job_id":"8f21…"}
   → {"job":{"status":"done_by_provider","proof":{"photos":["https://sandbox.fordeal.ai/proof/8f21….jpg"],"gps":{"lat":50.07,"lng":14.44}}},"mode":"sandbox"}
5. confirm_done {"job_id":"8f21…","approve":true}
   → {"job":{"status":"paid","commission":{"amount":105.6,"currency":"CZK"},"payout":{"amount":1214.4,"currency":"CZK"}},"mode":"sandbox"}

Zarejestruj agenta

Rejestracja jest bezpłatna i daje ci klucz API, miesięczny limit budżetu, który kontrolujesz, oraz dziennik audytu, który właściciel może czytać.

Narzędzia

Każde narzędzie poniżej jest dostępne zarówno jako narzędzie MCP, jak i jako wywołanie na bazie REST.

Usługi i otwarte zapytania

12 narzędzi
search_providersGET /api/v1/providers?address=&category=Znajdź zweryfikowanych wykonawców po kategorii, tekście, lokalizacji i promieniu, ze statystykami i cenami.

Wywołanie

{
  "category": "plumber",
  "address": "Praha 4",
  "radius_km": 15,
  "max_price": 2000
}

Odpowiedź

{
  "providers": [
    {
      "id": "prv_01H",
      "slug": "jan-h-instalater",
      "display_name": "Jan H.",
      "city": "Praha",
      "distance_km": 3.2,
      "hourly_rate": {
        "min": 750,
        "max": 1200,
        "currency": "CZK"
      },
      "verified": true,
      "stats": {
        "jobs_completed": 84,
        "on_time_rate": 0.96,
        "price_kept_rate": 0.98,
        "response_minutes_avg": 12
      }
    }
  ],
  "next_actions": [
    {
      "tool": "estimate_price",
      "description": "Get a price range before creating a job"
    }
  ]
}
estimate_pricePOST /api/v1/price-estimatePobierz zakres cen dla opisanego zlecenia w danym miejscu, zanim cokolwiek utworzysz.

Wywołanie

{
  "category": "plumber",
  "description": "Dripping bathroom tap, two days",
  "address": "Praha 4"
}

Odpowiedź

{
  "min": 900,
  "max": 1600,
  "currency": "CZK",
  "unit": "job",
  "reasoning": "Call-out plus one hour at Prague rates",
  "next_actions": [
    {
      "tool": "create_job",
      "description": "Create the request"
    }
  ]
}
create_jobPOST /api/v1/jobsUtwórz zapytanie o zlecenie. Zwraca id zlecenia, status i kolejne akcje.

Wywołanie

{
  "category": "plumber",
  "description": "Dripping bathroom tap, two days",
  "address": "Krymska 12, Praha 10",
  "time_window": {
    "start": "2026-09-10T08:00:00Z",
    "end": "2026-09-10T16:00:00Z"
  },
  "budget_max": {
    "amount": 2000,
    "currency": "CZK"
  },
  "photos": [
    "https://files.fordeal.ai/u/abc.jpg"
  ],
  "idempotency_key": "job-2026-09-07-001"
}

Odpowiedź

{
  "job": {
    "id": "job_01H",
    "status": "open",
    "currency": "CZK",
    "price_estimate": {
      "min": 900,
      "max": 1600,
      "currency": "CZK"
    },
    "time_window_start": "2026-09-10T08:00:00Z",
    "time_window_end": "2026-09-10T16:00:00Z"
  },
  "next_actions": [
    {
      "tool": "get_offers",
      "description": "Poll for offers",
      "params": {
        "job_id": "job_01H"
      }
    }
  ]
}
request_anythingPOST /api/v1/requestsZapytanie w dowolnej formie. Fordeal klasyfikuje tekst: wyraźne dopasowanie staje się zwykłym zleceniem, w przeciwnym razie otwartym zapytaniem, na które każdy zweryfikowany wykonawca w pobliżu może odpowiedzieć ofertą. Zwraca job_id, open_request i classified_as.

Wywołanie

{
  "text": "Someone to tune my grandmother's piano and then carry it up two floors, Saturday morning",
  "address": "Krymska 12, Praha 10",
  "budget_max": 3000,
  "deadline": "2026-09-12T12:00:00Z",
  "idempotency_key": "anything-2026-09-07-001"
}

Odpowiedź

{
  "job": {
    "id": "job_03H",
    "kind": "open_request",
    "category": null,
    "status": "open",
    "currency": "CZK",
    "budget_max": {
      "amount": 3000,
      "currency": "CZK"
    }
  },
  "classified_as": {
    "category": null,
    "confidence": 0
  },
  "open_request": true,
  "notified_providers": 7,
  "next_actions": [
    {
      "tool": "get_offers",
      "description": "Open request sent to 7 providers nearby; check for offers",
      "params": {
        "job_id": "job_03H"
      }
    }
  ]
}
list_open_requestsGET /api/v1/requests/open?address=&radius_km=Otwarte zapytania w pobliżu miejsca, do których nie pasowała żadna kategoria, dla wykonawców i agentów działających w ich imieniu. Publiczne, bez danych osobowych.

Wywołanie

{
  "address": "Praha",
  "radius_km": 25
}

Odpowiedź

{
  "count": 1,
  "country": "CZ",
  "requests": [
    {
      "id": "job_03H",
      "title": "Piano tuned and carried up two floors",
      "description": "Someone to tune my grandmother's piano and then carry it up two floors, Saturday morning",
      "city": "Praha",
      "budget_max": {
        "amount": 3000,
        "currency": "CZK"
      },
      "deadline": "2026-09-12T12:00:00Z",
      "created_at": "2026-09-07T09:12:00Z",
      "distance_km": 2.4
    }
  ],
  "next_actions": [
    {
      "tool": "request_anything",
      "description": "Post your own free-form request"
    }
  ]
}
get_offersGET /api/v1/jobs/{job_id}/offersWypisz oferty, które wykonawcy wysłali do zlecenia, z ceną, ETA i statystykami wykonawcy.

Wywołanie

{
  "job_id": "job_01H"
}

Odpowiedź

{
  "offers": [
    {
      "id": "ofr_01H",
      "provider_id": "prv_01H",
      "price": {
        "amount": 1200,
        "currency": "CZK"
      },
      "eta": "2026-09-10T09:30:00Z",
      "status": "sent",
      "provider": {
        "display_name": "Jan H.",
        "stats": {
          "on_time_rate": 0.96,
          "price_kept_rate": 0.98
        }
      }
    }
  ],
  "next_actions": [
    {
      "tool": "accept_offer",
      "description": "Accept one offer",
      "params": {
        "job_id": "job_01H",
        "offer_id": "ofr_01H"
      }
    }
  ]
}
accept_offerPOST /api/v1/jobs/{job_id}/acceptPrzyjmij jedną ofertę. W tym momencie płatność jest autoryzowana do depozytu.

Wywołanie

{
  "job_id": "job_01H",
  "offer_id": "ofr_01H",
  "idempotency_key": "accept-001"
}

Odpowiedź

{
  "job": {
    "id": "job_01H",
    "status": "accepted",
    "price_agreed": {
      "amount": 1200,
      "currency": "CZK"
    }
  },
  "payment": {
    "status": "requires_capture",
    "held": {
      "amount": 1200,
      "currency": "CZK"
    }
  },
  "next_actions": [
    {
      "tool": "get_status",
      "description": "Follow the job",
      "params": {
        "job_id": "job_01H"
      }
    }
  ]
}
get_statusGET /api/v1/jobs/{job_id}Odczytaj bieżący stan zlecenia: status, wiadomości, dowody, cenę i czasy.

Wywołanie

{
  "job_id": "job_01H"
}

Odpowiedź

{
  "job": {
    "id": "job_01H",
    "status": "done_by_provider",
    "done_at": "2026-09-10T10:40:00Z",
    "proof": {
      "photos": [
        "https://files.fordeal.ai/p/1.jpg"
      ]
    },
    "auto_confirm_at": "2026-09-12T10:40:00Z"
  },
  "next_actions": [
    {
      "tool": "confirm_done",
      "description": "Release or dispute",
      "params": {
        "job_id": "job_01H",
        "approve": true
      }
    }
  ]
}
confirm_donePOST /api/v1/jobs/{job_id}/confirmPotwierdź wykonanie zlecenia i zwolnij pieniądze albo odrzuć je i otwórz spór.

Wywołanie

{
  "job_id": "job_01H",
  "approve": true,
  "note": "Fixed, clean work"
}

Odpowiedź

{
  "job": {
    "id": "job_01H",
    "status": "paid",
    "paid_at": "2026-09-10T10:45:00Z"
  },
  "payout": {
    "amount": 1104,
    "currency": "CZK"
  },
  "commission": {
    "amount": 96,
    "currency": "CZK",
    "rate": 0.08
  },
  "next_actions": []
}
book_servicePOST /api/v1/bookingsZarezerwuj usługę o stałej cenie natychmiast w wolnym terminie (wykonawcy z rezerwacją natychmiastową).

Wywołanie

{
  "service_id": "svc_01H",
  "slot": "2026-09-12T09:00:00Z"
}

Odpowiedź

{
  "job": {
    "id": "job_05H",
    "kind": "instant_booking",
    "status": "accepted",
    "price_agreed": {
      "amount": 450,
      "currency": "CZK"
    },
    "scheduled_at": "2026-09-12T09:00:00Z"
  },
  "next_actions": [
    {
      "tool": "get_status",
      "description": "Poll the booking",
      "params": {
        "job_id": "job_05H"
      }
    }
  ]
}
cancel_jobPOST /api/v1/jobs/:id/cancelAnuluj zlecenie przed rozpoczęciem pracy; bezpłatnie, dopóki żadna oferta nie została przyjęta.

Wywołanie

{
  "job_id": "job_01H",
  "reason": "No longer needed"
}

Odpowiedź

{
  "job": {
    "id": "job_01H",
    "status": "cancelled"
  },
  "next_actions": []
}
leave_reviewPOST /api/v1/jobs/:id/reviewZostaw zweryfikowaną opinię po opłaceniu zlecenia.

Wywołanie

{
  "job_id": "job_01H",
  "rating": 5,
  "text": "On time, price as quoted"
}

Odpowiedź

{
  "ok": true
}

Konsultacje

4 narzędzia
explain_medical_reportPOST /api/v1/medical/explainWyjaśnij wynik badań lub wyniki laboratoryjne prostym językiem i zaproponuj, z jaką specjalizacją się skonsultować.

Wywołanie

{
  "file_url": "https://files.fordeal.ai/u/report.pdf",
  "locale": "en"
}

Odpowiedź

{
  "summary": "Blood count is normal apart from slightly raised CRP.",
  "values": [
    {
      "name": "CRP",
      "value": "12 mg/l",
      "reference": "0-5 mg/l",
      "status": "above"
    }
  ],
  "questions_for_doctor": [
    "Could the raised CRP come from the infection treated last week?"
  ],
  "specialty_suggested": "general-practitioner",
  "disclaimer": "This is an explanation, not a diagnosis.",
  "next_actions": [
    {
      "tool": "search_consultants",
      "description": "Find a doctor",
      "params": {
        "category": "general-practitioner"
      }
    }
  ]
}
search_consultantsPOST /api/v1/search_consultantsZnajdź zweryfikowanych konsultantów danej specjalizacji z wolnymi slotami.

Wywołanie

{
  "category": "dermatologist",
  "date": "2026-09-11",
  "language": "en"
}

Odpowiedź

{
  "consultants": [
    {
      "id": "prv_09H",
      "display_name": "MUDr. Eva N.",
      "license_verified": true,
      "registry": "CLK",
      "consultation_price": {
        "amount": 900,
        "currency": "CZK"
      },
      "slots": [
        {
          "id": "slt_1",
          "start": "2026-09-11T13:00:00Z",
          "end": "2026-09-11T13:30:00Z"
        }
      ]
    }
  ],
  "next_actions": [
    {
      "tool": "book_consultation",
      "description": "Book a slot"
    }
  ]
}
book_consultationPOST /api/v1/consultationsZarezerwuj slot 15, 30 lub 60 minut u konsultanta.

Wywołanie

{
  "provider_id": "prv_09H",
  "slot": "slt_1",
  "minutes": 30,
  "idempotency_key": "cons-001"
}

Odpowiedź

{
  "consultation": {
    "job_id": "job_03H",
    "provider_id": "prv_09H",
    "slot_start": "2026-09-11T13:00:00Z",
    "slot_end": "2026-09-11T13:30:00Z",
    "channel": "video"
  },
  "next_actions": [
    {
      "tool": "get_consultation_link",
      "description": "Get the meeting link",
      "params": {
        "job_id": "job_03H"
      }
    }
  ]
}

Korepetycje

4 narzędzia
search_tutorsGET /api/v1/tutors?subject=&level=&mode=Znajdź korepetytorów dla przedmiotu i poziomu, uszeregowanych według dopasowania, z wolnymi terminami lekcji. Tylko dorośli.

Wywołanie

{
  "subject": "math",
  "level": "secondary",
  "mode": "online",
  "style": "patient, exam papers",
  "country": "CZ"
}

Odpowiedź

{
  "adults_only": true,
  "currency": "CZK",
  "tutors": [
    {
      "id": "prv_21H",
      "display_name": "Mgr. Jana K.",
      "tutoring": {
        "subjects": [
          "math",
          "physics"
        ],
        "levels": [
          "secondary"
        ],
        "price_per_hour": {
          "amount": 450,
          "currency": "CZK"
        },
        "modes": [
          "online"
        ],
        "style": "Patient, step by step.",
        "package_discount_percent": {
          "5": 5,
          "10": 10
        }
      },
      "match": {
        "score": 0.92,
        "reason": "teaches math, secondary level, style: patient"
      },
      "slots": [
        {
          "id": "avail_prv_21H_20260914T130000",
          "start": "2026-09-14T13:00:00Z",
          "end": "2026-09-14T14:00:00Z"
        }
      ]
    }
  ],
  "next_actions": [
    {
      "tool": "book_lesson",
      "description": "Book one lesson in a listed slot",
      "params": {
        "provider_id": "prv_21H",
        "slot_start": "2026-09-14T13:00:00Z",
        "subject": "math",
        "level": "secondary",
        "student_is_adult": true
      }
    }
  ]
}
book_lessonPOST /api/v1/lessonsZarezerwuj jedną lekcję w opublikowanym terminie; opłata trafia do depozytu za każdą lekcję osobno. Wymaga student_is_adult=true.

Wywołanie

{
  "provider_id": "prv_21H",
  "slot_start": "2026-09-14T13:00:00Z",
  "subject": "math",
  "level": "secondary",
  "mode": "online",
  "package_id": "pkg_01H",
  "student_is_adult": true,
  "idempotency_key": "lesson-001"
}

Odpowiedź

{
  "job": {
    "id": "job_07H",
    "kind": "consultation",
    "status": "accepted",
    "price_agreed": {
      "amount": 405,
      "currency": "CZK"
    },
    "lesson_package_id": "pkg_01H",
    "scheduled_at": "2026-09-14T13:00:00Z"
  },
  "consultation": {
    "channel": "video",
    "meeting_url": "https://fordeal.ai/meet/job_07H"
  },
  "payment": {
    "status": "requires_capture"
  },
  "lesson": {
    "subject": "math",
    "level": "secondary",
    "mode": "online",
    "duration_min": 60,
    "price": {
      "amount": 405,
      "currency": "CZK"
    },
    "package_id": "pkg_01H",
    "lessons_left": 4
  },
  "next_actions": [
    {
      "tool": "get_consultation_link",
      "description": "Meeting link for the video lesson",
      "params": {
        "job_id": "job_07H"
      }
    }
  ]
}
buy_lesson_packagePOST /api/v1/lesson-packagesZablokuj obniżoną cenę za lekcję na 5 lub 10 lekcji. Nic nie jest pobierane, dopóki każda lekcja nie zostanie zarezerwowana.

Wywołanie

{
  "provider_id": "prv_21H",
  "lessons": 5,
  "subject": "math",
  "level": "secondary",
  "idempotency_key": "pkg-001"
}

Odpowiedź

{
  "package": {
    "id": "pkg_01H",
    "lessons_total": 5,
    "lessons_used": 0,
    "price_per_lesson": {
      "amount": 405,
      "currency": "CZK"
    },
    "status": "active"
  },
  "lessons": [],
  "lessons_left": 5,
  "charged_now": {
    "amount": 0,
    "currency": "CZK"
  },
  "next_actions": [
    {
      "tool": "book_lesson",
      "description": "Book a lesson from this package",
      "params": {
        "provider_id": "prv_21H",
        "package_id": "pkg_01H",
        "subject": "math",
        "level": "secondary",
        "student_is_adult": true
      }
    }
  ]
}
get_lesson_packageGET /api/v1/lesson-packages/{package_id}Odczytaj pakiet: lekcje wykorzystane, lekcje pozostałe i każdą lekcję z niego zarezerwowaną.

Wywołanie

{
  "package_id": "pkg_01H"
}

Odpowiedź

{
  "package": {
    "id": "pkg_01H",
    "lessons_total": 5,
    "lessons_used": 2,
    "price_per_lesson": {
      "amount": 405,
      "currency": "CZK"
    },
    "status": "active"
  },
  "lessons": [
    {
      "id": "job_07H",
      "status": "paid"
    },
    {
      "id": "job_08H",
      "status": "accepted"
    }
  ],
  "lessons_left": 3,
  "next_actions": [
    {
      "tool": "book_lesson",
      "description": "Book the next lesson",
      "params": {
        "provider_id": "prv_21H",
        "package_id": "pkg_01H"
      }
    }
  ]
}

Rzeczy

9 narzędzi
search_itemsPOST /api/v1/search_itemsSzukaj rzeczy wystawionych na sprzedaż po tekście, kategorii, lokalizacji i maksymalnej cenie.

Wywołanie

{
  "text": "road bike",
  "category": "sports",
  "location": "Brno",
  "max_price": 12000
}

Odpowiedź

{
  "items": [
    {
      "id": "itm_01H",
      "title": "Road bike 56 cm",
      "price": {
        "amount": 9500,
        "currency": "CZK"
      },
      "condition": "used",
      "city": "Brno",
      "delivery_options": [
        "pickup",
        "courier"
      ]
    }
  ],
  "next_actions": [
    {
      "tool": "buy_item",
      "description": "Buy at the listed price",
      "params": {
        "item_id": "itm_01H"
      }
    }
  ]
}
buy_itemPOST /api/v1/items/{item_id}/buyKup przedmiot za cenę z ogłoszenia. Pieniądze trafiają do depozytu.

Wywołanie

{
  "item_id": "itm_01H",
  "delivery": "courier",
  "delivery_address": "Veveří 1, Brno",
  "idempotency_key": "buy-001"
}

Odpowiedź

{
  "order": {
    "id": "ord_01H",
    "status": "paid",
    "price": {
      "amount": 9500,
      "currency": "CZK"
    },
    "delivery": "courier"
  },
  "next_actions": [
    {
      "tool": "get_status",
      "description": "Follow the order",
      "params": {
        "order_id": "ord_01H"
      }
    }
  ]
}
make_offerPOST /api/v1/items/{item_id}/offersZaproponuj inną cenę za przedmiot.

Wywołanie

{
  "item_id": "itm_01H",
  "price": {
    "amount": 8500,
    "currency": "CZK"
  },
  "message": "Can collect today"
}

Odpowiedź

{
  "offer": {
    "id": "iof_01H",
    "status": "sent",
    "price": {
      "amount": 8500,
      "currency": "CZK"
    }
  },
  "next_actions": []
}
list_itemPOST /api/v1/itemsWystaw przedmiot na sprzedaż.

Wywołanie

{
  "title": "Road bike 56 cm",
  "description": "Aluminium frame, serviced in June",
  "price": {
    "amount": 9500,
    "currency": "CZK"
  },
  "condition": "used",
  "photos": [
    "https://files.fordeal.ai/u/bike.jpg"
  ],
  "location": "Brno"
}

Odpowiedź

{
  "item": {
    "id": "itm_02H",
    "status": "active"
  },
  "next_actions": []
}
accept_item_offerPOST /api/v1/items/{item_id}/offers/{offer_id}/acceptPrzyjmij ofertę, którą ktoś złożył na twój przedmiot.

Wywołanie

{
  "item_id": "itm_02H",
  "offer_id": "iof_02H"
}

Odpowiedź

{
  "order": {
    "id": "ord_02H",
    "status": "paid",
    "price": {
      "amount": 8500,
      "currency": "CZK"
    }
  },
  "next_actions": [
    {
      "tool": "get_status",
      "description": "Follow the order",
      "params": {
        "order_id": "ord_02H"
      }
    }
  ]
}
get_item_statusGET /api/v1/items/:idSprawdź przedmiot i jego zamówienie: oferty, wysyłkę, wypłatę.

Wywołanie

{
  "item_id": "itm_01H"
}

Odpowiedź

{
  "item": {
    "id": "itm_01H",
    "status": "reserved",
    "price": {
      "amount": 250,
      "currency": "EUR"
    }
  },
  "order": {
    "status": "shipped",
    "tracking_url": "https://tracking.example/1"
  },
  "next_actions": [
    {
      "tool": "confirm_item_received",
      "description": "Release the payment once the item arrived",
      "params": {
        "item_id": "itm_01H"
      }
    }
  ]
}
update_itemPATCH /api/v1/items/:idZmień cenę, opis lub dostępność swojego przedmiotu.

Wywołanie

{
  "item_id": "itm_01H",
  "price": 220,
  "negotiable": true
}

Odpowiedź

{
  "item": {
    "id": "itm_01H",
    "price": {
      "amount": 220,
      "currency": "EUR"
    },
    "negotiable": true
  },
  "next_actions": []
}
mark_item_shippedPOST /api/v1/items/:id/shippedSprzedający oznacza przedmiot jako wysłany, opcjonalnie z numerem przesyłki.

Wywołanie

{
  "item_id": "itm_01H",
  "tracking_url": "https://tracking.example/1"
}

Odpowiedź

{
  "order": {
    "status": "shipped"
  },
  "next_actions": [
    {
      "tool": "get_item_status",
      "description": "Wait for the buyer to confirm receipt"
    }
  ]
}
confirm_item_receivedPOST /api/v1/items/:id/confirm-receivedKupujący potwierdza odbiór; depozyt jest zwalniany sprzedającemu pomniejszony o prowizję.

Wywołanie

{
  "item_id": "itm_01H"
}

Odpowiedź

{
  "item": {
    "id": "itm_01H",
    "status": "sold"
  },
  "order": {
    "status": "paid_out",
    "commission": {
      "amount": 20,
      "currency": "EUR"
    },
    "payout": {
      "amount": 230,
      "currency": "EUR"
    }
  },
  "next_actions": []
}

Praca i mikrozadania

2 narzędzia
create_taskPOST /api/v1/tasksUtwórz mikrozadanie dla osoby na miejscu, z wymaganymi przez ciebie dowodami.

Wywołanie

{
  "description": "Photograph the notice board at the town hall entrance",
  "address": "Mariánské náměstí 2, Praha 1",
  "deadline": "2026-09-08T17:00:00Z",
  "pay": {
    "amount": 250,
    "currency": "CZK"
  },
  "proof_required": [
    "photo",
    "gps"
  ]
}

Odpowiedź

{
  "job": {
    "id": "job_02H",
    "kind": "micro_task",
    "status": "open",
    "proof_required": [
      "photo",
      "gps"
    ]
  },
  "next_actions": [
    {
      "tool": "get_status",
      "description": "Follow the task",
      "params": {
        "job_id": "job_02H"
      }
    }
  ]
}
post_jobPOST /api/v1/job-postingsOpublikuj stanowisko w sekcji Praca — dorywcze, sezonowe lub na pełny etat.

Wywołanie

{
  "title": "Warehouse helper, evening shift",
  "type": "temp",
  "description": "Loading parcels, 6 hour shifts",
  "location": "Brno",
  "pay": {
    "amount": 180,
    "currency": "CZK",
    "unit": "hour"
  }
}

Odpowiedź

{
  "posting": {
    "id": "pst_01H",
    "status": "open",
    "city": "Brno",
    "pay": {
      "amount": 180,
      "currency": "CZK"
    },
    "pay_unit": "hour"
  },
  "next_actions": []
}

Dokumentacja

1 narzędzie
list_categoriesGET /api/v1/categories?locale=enCałe drzewo kategorii z lokalizowanymi nazwami, filarami i poziomem weryfikacji, jaki muszą przejść wykonawcy.

Wywołanie

{
  "locale": "en"
}

Odpowiedź

{
  "categories": [
    {
      "slug": "craftsmen",
      "parent_slug": null,
      "pillar": "services",
      "name": "Craftsmen",
      "verification_level": "none",
      "minors_allowed": false,
      "minors_online_only": false
    },
    {
      "slug": "plumber",
      "parent_slug": "craftsmen",
      "pillar": "services",
      "name": "Plumber",
      "verification_level": "none",
      "minors_allowed": false,
      "minors_online_only": false
    },
    {
      "slug": "babysitting",
      "parent_slug": "care",
      "pillar": "services",
      "name": "Babysitting",
      "verification_level": "criminal_record",
      "minors_allowed": false,
      "minors_online_only": false
    }
  ]
}

Odkrywanie

Wszystko, czego crawler, model lub menedżer pakietów potrzebuje, aby znaleźć Fordeal bez udziału człowieka.

llms-full.txt (cała dokumentacja w jednym pliku)
https://fordeal.ai/llms-full.txt
pakiet npm
@fordeal/mcpwkrótce

Cennik

Serwer MCP i REST API są bezpłatne dla agentów. Jedyne pieniądze, jakie Fordeal pobiera, to 8 % z zakończonego i opłaconego zlecenia, i płaci je wykonawca. Wyjaśnienia wyników badań są bezpłatne dla ludzi, a dla agentów będą rozliczane za wywołanie, gdy ten endpoint wyjdzie z pilotażu.