Developer guide · v1.1
Connect an agent to Owedly
The MCP server and REST interface share validation, permission checks, and tool handlers. Start with a custom connection and a dedicated Owedly account.
1. Choose a resource
| Workspace | MCP URL | Permissions |
|---|---|---|
| Desk | https://owedly.ai/mcp/desk | desk:read desk:drafts |
| Resolve | https://owedly.ai/mcp/resolve | resolve:read resolve:drafts |
Transport: Streamable HTTP, JSON responses, stateless requests. A Resolve token cannot authorize Desk calls.
2. Discover and authorize
Send an unauthenticated request to the MCP URL and follow its WWW-Authenticate resource metadata URL. OAuth discovery: /.well-known/oauth-authorization-server.
Register a public client with a client name, exact redirect URLs, and token_endpoint_auth_method: none. Use authorization code with PKCE S256, a random state of at least 16 characters, and the exact MCP URL as the resource parameter during authorization and token exchange. OpenAPI clients may omit resource when authorization specifies scopes from exactly one workspace; token exchange then uses the existing grant binding. PKCE remains required.
The user reviews permissions in Owedly and can remove permissions or deny the request. Codes expire after two minutes; access tokens after 15 minutes. Refresh tokens rotate and expire after seven days. Reusing a consumed refresh token revokes its grant. Revoke access in Connections & drafts or through the OAuth revocation endpoint.
Client ID metadata documents and confidential-client authentication are not supported in v1. Use dynamic registration with public-client PKCE. Never put credentials or tokens into a prompt.
3. Call a narrow tool
| Desk | Resolve |
|---|---|
get_connector_capabilities | get_connector_capabilities |
get_draft_status | get_draft_status |
list_accounts | get_resolve_guide |
get_case_status | create_consumer_request_draft |
list_payment_records | list_consumer_requests |
create_placement_draft | Consumer-owned drafts only |
list_placement_drafts | relay_approved_offer |
| No settlement execution or payments | Separate verification for private debt records |
Read tools require the workspace's read scope. Resolve relay_approved_offer reads terms the creditor or agency already approved for a verified account. Acceptance and payment are not available. Draft creation requires its drafts scope and an idempotency key of 16–100 letters, numbers, underscores, or hyphens. Reuse a key only for an identical retry. Changed content with the same key returns a conflict.
Adding a placement requires the signed-in account owner to accept the Desk agreement and approve the draft. Approval adds live accounts and may queue the owner’s configured Account Workflow. Creating the draft alone does not start activity. Consumer drafts can be copied and marked reviewed, but are not sent.
4. Use the API directly
For Muse, use the Muse setup guide and a workspace schema: Desk or Resolve. The combined OpenAPI specification is also available. Tools have POST endpoints under /api/connectors/v1/{workspace}/tools/{tool}, using the same bearer token and JSON arguments as MCP.
POST /api/connectors/v1/desk/tools/list_accounts
Authorization: Bearer <access_token>
Content-Type: application/json
{"limit":20}Errors: 400 invalid input, 401 expired connection, 403 missing permission, 404 unavailable record, 409 idempotency conflict, 429 rate limit, and 503 service unavailable. Retry reads with backoff. Keep the original idempotency key for draft retries.
Plugin packages
Download the Owedly Desk plugin or Owedly Resolve plugin for clients that support local plugin packages. Each includes its MCP endpoint and a workflow skill. Import support depends on your client; downloading a package does not install or authorize a connection.
Data and release boundaries
Account reads return face amounts and recorded status, not calculated payoff balances. Responses exclude raw contact details, government identifiers, card data, internal notes, and unrelated account data. Keep regulated or sensitive information out of tool arguments.
Limits: 64 KiB requests, 100 accounts per draft, 50 accounts per page, and 120 authenticated requests per minute per grant. No collection messages, settlement execution, payments, or legal conclusions are available.
Public marketplace submission is separate from custom MCP setup. QuickBooks, Xero, Stripe, Salesforce, and HubSpot direct syncs require provider credentials and end-to-end validation before release.
Connector privacy →