Confirm the email
Before signup, use context the user has allowed you to access, such as the conversation, local files,git config user.email, or connected tools. Propose
the email with its source and confirm it with the user; never guess. If no email
is available, ask for it. Someone who already uses Finta should connect and sign
in instead of requesting signup.
You can gather company context at the same time: incorporation year, entity type,
state, what the company sells, foreign subsidiaries now or planned, banks, and
credit cards. Present prefilled answers with their sources, conflicts and missing
questions together for confirmation. These answers are not signup request fields.
The agent-facing entry point at app.finta.com/llms.txt
also explains the flow.
Request signup
Call Create signup without a bearer credential:email is required. Finta trims surrounding whitespace and lowercases it.
REST also accepts optional app for verification email/page branding, such as
codex or claude-code. When omitted, Finta detects the app from User-Agent.
Unknown values use generic agent branding and do not cause an error; branding
does not change signup behavior or quotas. The reference schema lists the
supported app keys.
A successful request returns HTTP 202 Accepted:
New, pending, active, inactive and deleted accounts receive the same 202 body and
consume the same email allowance. New accounts receive a verification email.
Pending accounts receive a replacement one-hour link that invalidates the prior
link. Existing active, inactive and deleted accounts receive no email.
Neither a 202 nor a 429 reveals whether an account exists.
Only a newly created account schedules Finta’s standard welcome and follow-up
emails, starting at signup before activation: a welcome after 10 minutes and a
check-in after two days, subject to the usual delivery eligibility checks.
Pending-account resends, existing accounts and team invitations do not schedule
these emails again. The public 202 response is unchanged.
If no account exists and the email has a pending team invitation, Finta resends
that invitation instead of creating an owner account, matching web signup. The
202 response and signup allowance are identical; sending the invitation does
not consume a second email allowance. An unexpired invitation keeps its token
and expiry; an expired invitation receives a fresh link valid for 30 days, and
the old link remains invalid. Follow the invitation to join the existing company.
Every admitted request queues the same background job. Failures creating the
account, renewing a link, enqueueing the job, or sending mail after admission
are reported internally and keep the same public success response. The email
allowance remains consumed. Success confirms neither creation nor delivery.
There is no account-status or verify endpoint to poll.
Activate and connect
- Tell the user to click Activate in Finta’s email in their own browser. The agent must never fetch the verification link. Opening the page alone does not activate the account; the person must click Activate. Links expire after one hour.
- Activation signs that browser in. Return to the identified AI app and connect
Finta using the response’s
mcp_url; the browser can return to the app’s Allow screen. Existing MFA factors still require normal sign-in. - Follow
next_step.messagefor connecting and any required restart. Tell the person exactly how to restart and return to this conversation, and call no Finta tool until the app has loaded the connection. See MCP connection instructions. - Once connected, follow the returned guidance to call
get_onboardingand continue withnext_step.message.
Signed-out MCP signup
When rollout is enabled, supported non-CLI clients can initialize, discover tools and callsign_up while signed out. sign_up accepts only email and
returns the normalized email, verification_sent status, one-hour lifetime and
next_step instructions. Branding comes from User-Agent. The signup tool declares
noauth; protected tools declare OAuth scopes. Once connected, signup is hidden
and calls to it are refused, including during onboarding.
Coding clients with a claude-code or codex User-Agent prefix receive HTTP
401 with WWW-Authenticate and use REST signup instead. For other signed-out
clients, protected calls trigger OAuth with HTTP 401 and WWW-Authenticate.
An openai-mcp client instead receives HTTP 200 with a JSON-RPC tool error,
isError: true, the message “Sign in to Finta to continue.” and the Bearer
challenge in _meta["mcp/www_authenticate"].
Invalid or expired bearer tokens, tokens for a different resource and API keys
remain refused. Signed-out discovery does not grant access to company data.
Manual claude.ai and ChatGPT verification is still outstanding; this describes
the server contract rather than verified client behavior.
Limits and errors
REST signup always uses 120 requests/minute per IP, even if a credential is sent. Enabled anonymous MCP traffic uses a separate 6,000 requests/minute per IP bucket; that initial provider-proxy budget is pending confirmation. Neither request budget raises the email allowances shared with web signup:- 3 attempts per recipient per 30 minutes and 5 per 24 hours.
- 10 auth emails per caller IP per 10 minutes and 100 per 24 hours; IP allowances are shared across auth email purposes, including provider egress IPs.
MCP signup errors are tool results with
isError: true, the REST error code in
text and structured content, and retry seconds for throttling. See
Errors for full HTTP examples and
Signup email allowances
for headers and retry guidance.