MCP- och API-dokumentation
Integrera leverantörssökning, RFQ och uppföljning i rekaro.se och app.rekaro.ai. Referensen beskriver OAuth, JSON-RPC, verktyg och REST-rutter.
MCP över Streamable HTTP
Anropa POST https://mcp.gaddr.com/rekaro med Content-Type: application/json, Accept: application/json, text/event-stream och Authorization: Bearer $TOKEN. Vid HTTP 401 pekar WWW-Authenticate ut OAuth-resursens metadata. Använd Authorization Code med PKCE S256 och skicka samma resource vid auktorisation och tokenutbyte. För REST är resursen https://api.gaddr.com.
Inled med initialize för protokollversion 2025-06-18, skicka notifications/initialized och använd den förhandlade versionen i MCP-Protocol-Version. Hämta verktygens inputSchema, outputSchema och _meta["gaddr/scopes"] med tools/list. Exempel på anrop efter initiering:
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"rekaro_search_suppliers","arguments":{"q":"industriservice","limit":10}}}
Läs data i result.structuredContent och kontrollera result.isError även vid HTTP 200. Skicka next_cursor som cursor med samma filter och sortering. Använd rekaro:read för listning och läsning och det scope som respektive verktyg kräver för andra anrop. Vid HTTP 403 med insufficient_scope anger WWW-Authenticate vilka behörigheter klienten ska begära.
Vid HTTP 429, följ Retry-After när huvudet finns. Efter timeout på en åtgärd med request_id, behåll samma ID och argument när du kontrollerar utfallet. Förbered en ny åtgärd först när du vet att den föregående uteblev. Använd X-Request-Id från svaret vid felsökning. Se OpenAPI-kontraktet för båda ytorna.
| Vad | Adress |
|---|---|
| REST | https://api.gaddr.com/v1/rekaro |
| OpenAPI 3.1 | https://api.gaddr.com/v1/rekaro/openapi.json |
| MCP | https://mcp.gaddr.com/rekaro |
| REST för appen | https://api.gaddr.com/v1/rekaro/app |
| Utfärdare | https://auth.gaddr.com/api/auth |
| Konsolen | https://auth.gaddr.com/developers |
| Nivåerna | https://api.gaddr.com/v1/plans |
Registrera appen
Appen registreras i konsolen på auth.gaddr.com/developers. Välj typen som passar:
- Webbapp med backend får ett
client_idoch en klienthemlighet som visas en gång. Den autentiserar sig medclient_secret_basicellerprivate_key_jwt. - Publik klient, som en mobilapp, ett skrivbordsprogram, en webbapp utan backend eller en MCP-klient, får ett
client_idoch använder PKCE S256. - Server till server använder
client_credentialsoch läser publika uppgifter, som registret, utan en användare.
En MCP-klient kan också registrera sig själv med Client ID Metadata Documents eller dynamisk registrering.
Logga in användaren
Inloggningen är OAuth 2.1 med authorization code och PKCE S256 hos utfärdaren https://auth.gaddr.com/api/auth. Skicka resource=https://api.gaddr.com både i auktorisationen och i tokenanropet. Åtkomsttoken skickas i rubriken Authorization: Bearer och aldrig i en adress.
Kontorutterna agerar som användaren på rekaro.se. Användaren loggar in på rekaro.se med GADDR en gång och kopplar kontot, sedan når appen det. Registret läses utan koppling.
Behörigheterna
rekaro:write innefattar rekaro:read.
Begär rekaro:send, rekaro:publish och
rekaro:admin för respektive verktyg. Användaren godkänner dem separat.
| Scope | Ger |
|---|---|
rekaro:read | läsa registret och det kontot själv ser |
rekaro:write | ändra sådant som går att ta tillbaka, till exempel bevakningar |
rekaro:send | skicka till en annan part: uppdrag, anbud, frågor, tilldelningar, meddelanden och inbjudningar |
rekaro:publish | publicera leverantörsprofiler och omdömen i appen |
rekaro:admin | arbetsytans medlemmar och Rekaros driftverktyg |
Handlingar som når någon annan
Ett uppdrag, ett anbud, en fråga, en tilldelning, ett dialogmeddelande och en inbjudan går i två steg. POST .../prepare returnerar en sammanfattning och ett confirmation_id som gäller i tio minuter, och POST .../confirm utför handlingen när användaren har sagt ja. Varje sådan POST kräver rubriken Idempotency-Key: samma nyckel två gånger ger samma svar och utför aldrig handlingen två gånger.
Svar och fel
Svaren är JSON. Fel kommer som application/problem+json med type, title, status, detail, instance och request_id, och varje svar bär X-Request-Id. Listor tar limit och cursor och svarar med next_cursor.
Gränser
Gränserna följer appens nivå. Nivåerna och deras gränser publiceras på ett ställe: developers.gaddr.com/nivaer för den som läser, och api.gaddr.com/v1/plans för den som hämtar dem i kod. Konsolen visar appens nivå och användning. Vid gränsen svarar API:t 429 med Retry-After, RateLimit-Policy och RateLimit.
Rutterna
En rutt per handling på rekaro.se, med samma behörighet som verktyget med samma namn i OpenAPI-beskrivningen.
Inköpsappens REST-rutter
| Handling i appen | REST | Scope |
|---|---|---|
| Sök leverantörer, Enter | GET /v1/rekaro/app/suppliersPOST /v1/rekaro/app/suppliers/matchesGET /v1/rekaro/app/suppliers/{supplier_id} | rekaro:read |
| Läs leverantörssökningens filter | GET /v1/rekaro/app/search/suppliers/facetsGET /v1/rekaro/app/search/suppliers/category-tree | rekaro:read |
| Utforska leverantörsgrafen | GET /v1/rekaro/app/supplier-graph | rekaro:read |
| Gilla profil | GET /v1/rekaro/app/suppliers/{supplier_id}/likePOST /v1/rekaro/app/suppliers/{supplier_id}/likeDELETE /v1/rekaro/app/suppliers/{supplier_id}/like | rekaro:readrekaro:write |
| Publicera omdöme | GET /v1/rekaro/app/suppliers/{supplier_id}/reviewsGET /v1/rekaro/app/suppliers/{supplier_id}/reviews/eligiblePOST /v1/rekaro/app/suppliers/{supplier_id}/reviews | rekaro:publishrekaro:read |
| Spara ändringar | GET /v1/rekaro/app/suppliers/ownPUT /v1/rekaro/app/suppliers/ownGET /v1/rekaro/app/suppliers/own/insights | rekaro:publishrekaro:read |
| Öppna RFQ | GET /v1/rekaro/app/rfqs/searchGET /v1/rekaro/app/rfqs/opportunitiesGET /v1/rekaro/app/rfqs/open | rekaro:read |
| Läs RFQ-sökningens filter | GET /v1/rekaro/app/search/rfqs/facetsGET /v1/rekaro/app/search/rfqs/category-tree | rekaro:read |
| Öppna | GET /v1/rekaro/app/rfqs/ownGET /v1/rekaro/app/rfqs/awardedGET /v1/rekaro/app/rfqs/{rfq_id} | rekaro:read |
| Skapa | POST /v1/rekaro/app/rfqs/preparePOST /v1/rekaro/app/rfqs/confirm | rekaro:send |
| Stäng | PUT /v1/rekaro/app/rfqs/{rfq_id}/status | rekaro:write |
| Redigera, Spara ändringar | PATCH /v1/rekaro/app/rfqs/{rfq_id} | rekaro:write |
| Beräkna total kostnad, i kortet Jämförelseunderlag | GET /v1/rekaro/app/rfqs/{rfq_id}/offers/comparisonPOST /v1/rekaro/app/rfqs/{rfq_id}/total-cost | rekaro:read |
| Matcha leverantörer, i kortet Matchande leverantörer | POST /v1/rekaro/app/rfqs/{rfq_id}/supplier-matches | rekaro:read |
| Skicka ansökan | POST /v1/rekaro/app/rfqs/{rfq_id}/applications/preparePOST /v1/rekaro/app/rfqs/applications/confirm | rekaro:send |
| Skicka, i kortet Skicka offert | POST /v1/rekaro/app/rfqs/{rfq_id}/offers/preparePOST /v1/rekaro/app/rfqs/offers/confirm | rekaro:send |
| Ansökningar, kortet på RFQ-sidan | GET /v1/rekaro/app/rfqs/{rfq_id}/applicationsGET /v1/rekaro/app/rfqs/applications/own | rekaro:read |
| Tilldela | POST /v1/rekaro/app/rfqs/{rfq_id}/applications/{response_id}/decision/preparePOST /v1/rekaro/app/rfqs/awards/confirm | rekaro:send |
| Skicka, i kortet Meddelanden | GET /v1/rekaro/app/rfqs/conversationsGET /v1/rekaro/app/rfqs/{rfq_id}/messagesPOST /v1/rekaro/app/rfqs/{rfq_id}/messages/preparePOST /v1/rekaro/app/rfqs/messages/confirmPOST /v1/rekaro/app/rfqs/{rfq_id}/messages/read | rekaro:readrekaro:sendrekaro:write |
| Markera alla som lästa | GET /v1/rekaro/app/notificationsGET /v1/rekaro/app/notifications/unread-countPUT /v1/rekaro/app/notifications/{notification_id}/readPUT /v1/rekaro/app/notifications/read-all | rekaro:readrekaro:write |
| Läs och ändra egna notisinställningar | GET /v1/rekaro/app/notifications/preferencesPUT /v1/rekaro/app/notifications/preferences | rekaro:readrekaro:write |
| Lägg till favorit, stjärnan vid kategorin | GET /v1/rekaro/app/favorite-categoriesPOST /v1/rekaro/app/favorite-categoriesDELETE /v1/rekaro/app/favorite-categories | rekaro:readrekaro:write |
| Skapa | GET /v1/rekaro/app/organizationsPOST /v1/rekaro/app/organizations | rekaro:adminrekaro:read |
| Spara ändringar | GET /v1/rekaro/app/organizations/{organization_id}PUT /v1/rekaro/app/organizations/{organization_id} | rekaro:adminrekaro:read |
| Lägg till medlem | GET /v1/rekaro/app/organizations/{organization_id}/membersPOST /v1/rekaro/app/organizations/{organization_id}/membersPATCH /v1/rekaro/app/organizations/{organization_id}/members/{member_id}DELETE /v1/rekaro/app/organizations/{organization_id}/members/{member_id} | rekaro:admin |
| Skapa agent | GET /v1/rekaro/app/agentsGET /v1/rekaro/app/agents/{agent_id}POST /v1/rekaro/app/agentsGET /v1/rekaro/app/agents/{agent_id}/capabilities | rekaro:readrekaro:write |
| Starta agent | POST /v1/rekaro/app/agents/{agent_id}/startPOST /v1/rekaro/app/agents/{agent_id}/stop | rekaro:write |
| Köa uppdrag | GET /v1/rekaro/app/agents/{agent_id}/missionsPOST /v1/rekaro/app/agents/{agent_id}/missionsGET /v1/rekaro/app/agents/{agent_id}/logs | rekaro:readrekaro:write |
| Starta inköpsteam | GET /v1/rekaro/app/agents/{agent_id}/squad-runsPOST /v1/rekaro/app/agents/{agent_id}/squad-runsPOST /v1/rekaro/app/agents/{agent_id}/squad-runs/{run_id}/cancel | rekaro:readrekaro:write |
| Abonnemang | GET /v1/rekaro/app/billing | rekaro:read |
| Läs och uppdatera kontoprofilen | GET /v1/rekaro/app/user/profilePUT /v1/rekaro/app/user/profile | rekaro:readrekaro:write |
| Läs och uppdatera köparprofilen | GET /v1/rekaro/app/buyer/profilePUT /v1/rekaro/app/buyer/profile | rekaro:readrekaro:publish |
Registrets och uppdragstorgets REST-rutter
| Handling | Rutt | Scope |
|---|---|---|
| Sök leverantörer i registret | GET /v1/rekaro/companies | rekaro:read |
| Sök med företagskatalogens filter | GET /v1/rekaro/companies/directory | rekaro:read |
| Läs ett företags profil med källa per uppgift | GET /v1/rekaro/companies/profile | rekaro:read |
| Läs omdömena om ett företag | GET /v1/rekaro/companies/reviews | rekaro:read |
| Se ett företags offentliga affärer | GET /v1/rekaro/companies/procurements | rekaro:read |
| Jämför leverantörer på registrets kriterier | POST /v1/rekaro/companies/compare | rekaro:read |
| Handling | Rutt | Scope |
|---|---|---|
| Se uppdragen på torget, egna uppdrag och egna anbud | GET /v1/rekaro/assignments | rekaro:read |
| Läs ett uppdrag med frågor och de anbud rollen får se | GET /v1/rekaro/assignments/{id} | rekaro:read |
| Se leverantörer som passar ett eget uppdrag | GET /v1/rekaro/assignments/{id}/matches | rekaro:read |
| Lägga ut ett uppdrag, en inbjudan till anbud | POST /v1/rekaro/assignments/preparePOST /v1/rekaro/assignments/confirm | rekaro:send |
| Lämna ett anbud på ett uppdrag | POST /v1/rekaro/assignments/{id}/bids/preparePOST /v1/rekaro/bids/confirm | rekaro:send |
| Stäng eller öppna ett eget uppdrag | PUT /v1/rekaro/assignments/{id}/status | rekaro:write |
| Dra tillbaka det egna anbudet | POST /v1/rekaro/assignments/{id}/bids/withdraw/preparePOST /v1/rekaro/bid-withdrawals/confirm | rekaro:send |
| Ställa en offentlig fråga på ett uppdrag | POST /v1/rekaro/assignments/{id}/questions/preparePOST /v1/rekaro/questions/confirm | rekaro:send |
| Tilldela ett uppdrag till ett anbud | POST /v1/rekaro/assignments/{id}/award/preparePOST /v1/rekaro/awards/confirm | rekaro:send |
| Läsa den privata dialogen om ett anbud | GET /v1/rekaro/assignments/{id}/bids/{anbud}/messages | rekaro:read |
| Skicka ett meddelande i anbudsdialogen | POST /v1/rekaro/assignments/{id}/bids/{anbud}/messages/preparePOST /v1/rekaro/bid-messages/confirm | rekaro:send |
| Läsa notiserna om uppdrag | GET /v1/rekaro/notices | rekaro:read |
| Markera en notis som läst | POST /v1/rekaro/notices/{id}/read | rekaro:write |
| Handling | Rutt | Scope |
|---|---|---|
| Se kontot, planen och gränserna | GET /v1/rekaro/account | rekaro:read |
| Ändra kontotyp och kontouppgifter | PATCH /v1/rekaro/account | rekaro:write |
| Se plan, kvot och egna uppdrag | GET /v1/rekaro/accountGET /v1/rekaro/assignments | rekaro:read |
| Se bevakade företag | GET /v1/rekaro/watches | rekaro:read |
| Bevaka ett företag | PUT /v1/rekaro/watches/{orgnr} | rekaro:write |
| Sluta bevaka ett företag | DELETE /v1/rekaro/watches/{orgnr} | rekaro:write |
| Se arbetsytans medlemmar och inbjudningar | GET /v1/rekaro/team | rekaro:read |
| Bjuda in en medlem till arbetsytan | POST /v1/rekaro/team/invitations/preparePOST /v1/rekaro/team/invitations/confirm | rekaro:adminrekaro:send |
| Ta bort en medlem ur arbetsytan | DELETE /v1/rekaro/team/members/{id} | rekaro:admin |
| Återkalla en öppen inbjudan | DELETE /v1/rekaro/team/invitations/{inbjudan} | rekaro:admin |
| Läsa kontots säkerhetslogg | GET /v1/rekaro/account/events | rekaro:read |
| Hämta allt kontotjänsten har om kontot | GET /v1/rekaro/account/export | rekaro:read |
| Hämta kontots uppdrag, anbud, dialoger och notiser | GET /v1/rekaro/account/export/assignments | rekaro:read |
| Handling | Rutt | Scope |
|---|---|---|
| Se insamlingskällorna, deras nivå och rättsliga status | GET /v1/rekaro/sources | rekaro:admin |
| Läsa vad en insamlingskörning kom fram till | GET /v1/rekaro/harvest/candidates | rekaro:admin |
| Föreslå en insamlingskörning för en människa att starta | POST /v1/rekaro/harvest/proposals | rekaro:admin |
| Föreslå en uppgift om ett företag för granskning | POST /v1/rekaro/companies/proposals | rekaro:write |
Ett första anrop
curl "https://api.gaddr.com/v1/rekaro/assignments?vy=oppna" \
-H "Authorization: Bearer $TOKEN"
AI-agenter når samma handlingar som MCP-verktyg. Hur Claude, ChatGPT och Cursor kopplas in står under MCP för AI-agenter.