What the connector is
A stateless proxy. It holds no database of its own. It translates a tool call from your assistant into a request againstapi.abigail.app carrying the signed in user’s token,
then returns the result. Consequences worth knowing:
- Everything you do through MCP happens against the same account, the same docket, and the same credit balance as the web app at abigail.app.
- Work created through an assistant is visible in the web app immediately, and the reverse is also true.
- Every authenticated tool call is written to the account’s audit log.
Add the connector
- Claude
- ChatGPT
- Cursor and other clients
- Custom integration
- Open Settings, then Connectors, then Add custom connector.
- Paste
https://mcp.abigail.app/mcpas the server URL. - Save, then open a chat and ask for something that needs your account, for example “show my docket”.
- Claude discovers the authorization server, registers itself, and opens the Abigail sign in page. Approve it once.
How sign in works
The server implements the MCP authorization spec, so a compliant client discovers everything it needs on its own. The chain, if you are building a client and want to follow it manually:1
A request comes back unauthorized
A request with no token, or one whose token is within ten minutes of expiring, is
answered with
HTTP 401 and a WWW-Authenticate header pointing at the protected
resource metadata document. If a token expires mid session the same challenge arrives
in band on the tool result, carrying _meta["mcp/www_authenticate"].2
Fetch the protected resource metadata (RFC 9728)
GET https://mcp.abigail.app/.well-known/oauth-protected-resource names the
authorization server:3
Fetch the authorization server metadata (RFC 8414)
GET https://api.abigail.app/.well-known/oauth-authorization-server returns the
endpoints:Supported grants are
authorization_code and refresh_token. The only code
challenge method is S256. Client authentication may be client_secret_post,
client_secret_basic, or none for public clients.4
Register dynamically (RFC 7591)
POST to the registration endpoint to obtain a client ID. No manual onboarding, no
pre shared secret, no email to support.
5
Run the authorization code flow with PKCE
The user signs in to Abigail and approves. Your client receives a code, exchanges it
at the token endpoint, and gets a Bearer token scoped
full_access.6
Retry the tool call
Send the token in the
Authorization header. The proxy forwards it to the backend,
which enforces tenant isolation on every read and write.What works before signing in
Nothing. Every request to/mcp requires a valid Bearer token, including the protocol
handshake and the tool listing. Without one the server answers HTTP 401 and a
WWW-Authenticate header naming the protected resource metadata document, which is the
signal a compliant client uses to start the OAuth flow described above automatically. You
sign in once; the client handles the rest.
lookup_application used to answer anonymously and no longer does. Deadlines never did,
because they are computed from your docket with the MPEP verified calculator.
The two discovery documents stay open, since a client has to read them before it can hold
a token: GET /.well-known/oauth-protected-resource on the MCP server, and
GET /.well-known/oauth-authorization-server on the API. GET /health is open too.
Billing and limits
MCP usage draws on the same credit balance as the web app, priced identically. AI usage is deducted per token, and document exports carry a fixed fee. Callcheck_credits at any
point to read the balance, or see Billing and rate limits.
Tool reference
All 45 tools, what each one needs, and what it maps to in the web app.
Match the web app
Reproduce every Abigail screen as a tool sequence, plus the known gaps.
